<?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>195349</bug_id>
          
          <creation_ts>2019-03-05 18:58:53 -0800</creation_ts>
          <short_desc>[Apple Pay] Untangle PKPaymentAuthorizationViewController from WebPaymentCoordinatorProxy</short_desc>
          <delta_ts>2019-03-07 15:30:50 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>195078</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>achristensen</cc>
    
    <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1512945</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-05 18:58:53 -0800</bug_when>
    <thetext>[Apple Pay] Untangle PKPaymentAuthorizationViewController from WebPaymentCoordinatorProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512946</commentid>
    <comment_count>1</comment_count>
      <attachid>363720</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-05 19:03:03 -0800</bug_when>
    <thetext>Created attachment 363720
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512961</commentid>
    <comment_count>2</comment_count>
      <attachid>363723</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-05 19:33:25 -0800</bug_when>
    <thetext>Created attachment 363723
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512962</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-05 19:34:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/48625510&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512964</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-05 19:35:31 -0800</bug_when>
    <thetext>Attachment 363723 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512970</commentid>
    <comment_count>5</comment_count>
      <attachid>363724</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-05 20:04:09 -0800</bug_when>
    <thetext>Created attachment 363724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512972</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-05 20:06:51 -0800</bug_when>
    <thetext>Attachment 363724 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513233</commentid>
    <comment_count>7</comment_count>
      <attachid>363802</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-06 15:34:12 -0800</bug_when>
    <thetext>Created attachment 363802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513234</commentid>
    <comment_count>8</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-06 15:36:17 -0800</bug_when>
    <thetext>Attachment 363802 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513248</commentid>
    <comment_count>9</comment_count>
      <attachid>363805</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-06 16:02:28 -0800</bug_when>
    <thetext>Created attachment 363805
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513249</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-06 16:05:45 -0800</bug_when>
    <thetext>Attachment 363805 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513264</commentid>
    <comment_count>11</comment_count>
      <attachid>363808</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-06 16:16:55 -0800</bug_when>
    <thetext>Created attachment 363808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513272</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-06 16:22:20 -0800</bug_when>
    <thetext>Attachment 363808 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513619</commentid>
    <comment_count>13</comment_count>
      <attachid>363808</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-03-07 11:24:31 -0800</bug_when>
    <thetext>Comment on attachment 363808
Patch

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

&gt; Source/WebKit/Platform/cocoa/PaymentAuthorizationViewController.h:49
&gt; +#if PLATFORM(IOS_FAMILY)
&gt; +    PaymentAuthorizationViewController(PaymentAuthorizationPresenter::Client&amp;, PKPaymentRequest *);
&gt; +#endif
&gt; +#if PLATFORM(MAC)
&gt; +    PaymentAuthorizationViewController(PaymentAuthorizationPresenter::Client&amp;, PKPaymentRequest *, PKPaymentAuthorizationViewController *);
&gt; +#endif

This could be a default parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513624</commentid>
    <comment_count>14</comment_count>
      <attachid>363904</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-07 11:32:37 -0800</bug_when>
    <thetext>Created attachment 363904
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513625</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-07 11:34:44 -0800</bug_when>
    <thetext>Attachment 363904 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513696</commentid>
    <comment_count>16</comment_count>
      <attachid>363923</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-03-07 13:56:54 -0800</bug_when>
    <thetext>Created attachment 363923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513699</commentid>
    <comment_count>17</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-07 13:59:40 -0800</bug_when>
    <thetext>Attachment 363923 did not pass style-queue:


ERROR: Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h:183:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513751</commentid>
    <comment_count>18</comment_count>
      <attachid>363923</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-07 15:30:48 -0800</bug_when>
    <thetext>Comment on attachment 363923
Patch

Clearing flags on attachment: 363923

Committed r242616: &lt;https://trac.webkit.org/changeset/242616&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1513752</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-07 15:30:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363720</attachid>
            <date>2019-03-05 19:03:03 -0800</date>
            <delta_ts>2019-03-05 19:33:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190305190303.patch</filename>
            <type>text/plain</type>
            <size>113964</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyMzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA2MDVjODBl
MmE5YjI0Yjc1MDgxMDlhNDYxYjhmZmQzYmNhNjAxMTZjLi5iZTc5MDUzYjM5NjZmY2FjOGM5ZTU3
MWZhNWM4MTgxYjgyZWYxYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAg
ICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW06CisKIDIwMTktMDMtMDMgIFRpbSBI
b3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUg
bW9yZSB1bnVzZWQgMzItYml0IGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYzRjOGU2ZTgzY2M2MzVhNDIyY2U1
MzU0ODQwMGQ4MWU2MjQ4NTYxNC4uNzE0NTBjNmIwMmQ0NWQzMDJhNWMwODliYWI5MWY5NTUxYTU0
NWRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTcgQEAKKzIwMTktMDMtMDUgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXldIFVudGFuZ2xlIFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBmcm9tIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTUzNDkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OlBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cyk6CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50
RXJyb3JDb2RlKToKKyAgICAgICAgKFdlYktpdDo6dG9OU0Vycm9yKToKKyAgICAgICAgKFdlYktp
dDo6dG9OU0Vycm9ycyk6CisgICAgICAgIChXZWJLaXQ6OnRvUEtTaGlwcGluZ01ldGhvZHMpOgor
ICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVN
ZXJjaGFudFZhbGlkYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Np
b24pOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29t
cGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbik6
CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW5pdFdpdGhQcmVzZW50ZXI6XSk6CisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6XSk6CisgICAgICAgICgtW1dL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmhh
bmRsZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0OmhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKToKKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpjb21w
bGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjp3aWxsRmluaXNoV2l0aEVycm9yOl0pOgorICAgICAgICAo
LVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OlBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOgorICAgICAgICAoV2ViS2l0OjpQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpwbGF0Zm9ybURlbGVnYXRlKToKKyAgICAgICAg
KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6ZGlzbWlzcyk6Cisg
ICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OnByZXNl
bnQpOgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUgc3VtbWFyeUl0ZW1zXSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSBzaGlwcGluZ01ldGhvZHNdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOmVycm9yOl0pOgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgY29tcGxldGVQYXltZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRlOl0p
OgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb246c3VtbWFyeUl0ZW1zOnNoaXBwaW5nTWV0aG9kczplcnJvcnM6
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uRGVsZWdhdGUgX2luaXRXaXRoUHJlc2VudGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKToK
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRGaW5pc2hdKToK
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRSZXF1ZXN0TWVy
Y2hhbnRTZXNzaW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUgX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29t
cGxldGlvbjpdKToKKyAgICAgICAgKHRvU2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBs
ZXRpb246XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfd2ls
bEZpbmlzaFdpdGhFcnJvcjpdKToKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkQXV0aG9yaXplUGF5
bWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVz
ZW50ZXJEaWRGaW5pc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6cHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdD
b250YWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBy
ZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRBdXRob3JpemVQYXltZW50
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxl
Y3RQYXltZW50TWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOgorICAgICAgICAqIFNoYXJlZC9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgorICAgICAg
ICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSk6CisgICAgICAgIChXZWJLaXQ6
OnRvRGVjaW1hbE51bWJlcik6CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0
ZW0pOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyk6CisgICAgICAg
IChXZWJLaXQ6OnRvUEtTaGlwcGluZ01ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50
U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0
aG9kU2VsZWN0aW9uKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eTpdKTogRGVsZXRl
ZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUgaW52YWxpZGF0ZV0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOndpbGxGaW5pc2hXaXRoRXJyb3I6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6ZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKHRvU2hpcHBpbmdNZXRob2QpOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAg
ICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmhh
bmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2Q6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKTog
RGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQ
YXltZW50OmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9k
OmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50RXJyb3JDb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6dG9OU0Vycm9yKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9OU0Vycm9y
cyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRlUGF5bWVudFVJKToKKyAgICAgICAgKiBTaGFyZWQv
QXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJ
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXlt
ZW50VUkpOgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1
dGhvcml6YXRpb25QcmVzZW50ZXIpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDE5LTAzLTA0ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4K
IAogICAgICAgICBbQXBwbGUgUGF5XSBNb3ZlIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IGZy
b20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MgdG8gU291cmNlL1dlYktpdC9TaGFyZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0
ODk1NTY1MWQ5Y2MzYjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRk
Y2VmMTI1Zjc3YTE0MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckFuZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWlu
LCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBk
b21haW4sIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQ
YXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlw
ZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAo
Y29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAot
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVz
dFBheW1lbnRNZXRob2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
aG9uZU51bWJlciwgUEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwg
UEtQYXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NV
c2VySW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5tbQppbmRleCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44
NzI5NzNlNGE5NGFmNGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBA
QCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
U2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChD
R0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1Bh
eW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmlu
ZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUs
IGxhbmd1YWdlQ29kZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFT
U0tJVF9HUkFOVUxBUl9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtD
b250YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtD
b250YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlcklu
Zm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFp
biwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNl
ckluZm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lk
LCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxl
dGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4
NjY5ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Q
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRy
b2xsZXI7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0Owor
Y2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xp
ZW50IHsKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGNvbnN0IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgp
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kVXBkYXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2
b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRh
dGU+Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNs
aWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkg
PSAwOworCitwcml2YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUy
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5U
KENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcg
Kik7CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50
cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Q
b3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RB
TlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmlu
ZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRt
aW5pc3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRo
ZXNlIGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMg
c2hvdWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhl
aXIgcGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFS
X0VSUk9SUykKKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cykKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQ
YXltZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29kZSBjb2RlKQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5r
bm93bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0
SW52YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxs
aW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFj
dEludmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRk
cmVzc1Vuc2VydmljZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJl
c3NVbnNlcnZpY2VhYmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vy
cm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2Vy
SW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAg
W3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5XTsKKworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNT
dHJpbmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRk
cmVzc0tleSA9IG5pbDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVO
dW1iZXI6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQaG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1h
aWxBZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpOYW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNO
YW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6QWRkcmVzc0xpbmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAg
ICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXko
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtD
b250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0Np
dHlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxB
ZGRyZXNzUG9zdGFsQ29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRt
aW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAg
ICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9z
dGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFs
QWRkcmVzc1N0YXRlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5Ogor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNv
dW50cnlDb2RlOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVz
c0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250
YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0Rmll
bGRVc2VySW5mb0tleSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0
X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAg
fQorCisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0
X1BLUGF5bWVudEVycm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5j
b2RlKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05T
RXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7Cisg
ICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTplcnJvcnMuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3Jz
KSB7CisgICAgICAgIGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAg
ICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKwor
I2lmICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzU3VjY2VzczsKKworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAg
ICAgICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVy
cm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVu
a25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNz
VW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6
CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVs
ZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFs
aWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAg
ICBpZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUt
PmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJy
b3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAg
ICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGlu
Z1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFj
dEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAg
ICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBw
aW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JB
TlVMQVJfRVJST1JTKQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPiYgc2hpcHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBw
aW5nTWV0aG9kcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01l
dGhvZHMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdN
ZXRob2RzKQorICAgICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGlu
Z01ldGhvZChzaGlwcGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsK
K30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hh
bnRTZXNzaW9uKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0
Zm9ybURlbGVnYXRlKCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9u
LnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQorewor
ICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVt
cyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRM
aW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZv
cm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNd
OworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1l
bnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiYgcmVzdWx0KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0
b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0
ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0
YXR1cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJy
YXkgKmVycm9ycyA9IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBs
ZXRlUGF5bWVudFNlc3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRl
OldlYkNvcmU6OmlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQor
eworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5n
TWV0aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGlu
Z01ldGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0Fy
cmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRh
dGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRl
bXM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJv
cnMgPSB1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0
byBzdGF0dXMgPSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisg
ICAgTlNBcnJheSAqZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdh
dGUoKSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1z
OnN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJv
cnNdOworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwor
ICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0
ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1
bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTc5MDBjODA0MmYwYjQ1Njg1YzJjODI0MDQyNjJhMjQyODhlMWY1YgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNf
Q0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQ
S1BheW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGU7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwg
OiBwdWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorICAgIFBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXI6OkNsaWVudCYsIFBLUGF5bWVudFJlcXVlc3QgKik7CisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OkNsaWVudCYsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIC8vIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyCisgICAgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVn
YXRlKCkgZmluYWw7CisgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CisjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNlbmRpZgorCisgICAgUmV0YWluUHRyPFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJvbGxlcjsKKyAg
ICBSZXRhaW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IG1fZGVsZWdhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVT
RShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY5MGRiN2FkMTFjMTlkMGRkMWY4YTAzZTY5MzI1ODI0ZmQ4MTM5YmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIK
KworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUuaCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworQGludGVy
ZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA6IFdLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZh
dGVEZWxlZ2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJlc2VudGVyOihXZWJLaXQ6
OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJilwcmVzZW50ZXI7CisKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVyCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBl
ciBfaW5pdFdpdGhQcmVzZW50ZXI6cHJlc2VudGVyXSkpCisgICAgICAgIHJldHVybiBuaWw7CisK
KyAgICByZXR1cm4gc2VsZjsKK30KKworI3ByYWdtYSBtYXJrIFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlCisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRpZEZpbmlzaDooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyICopY29udHJvbGxlcgoreworICAgIFtzZWxmIF9kaWRGaW5pc2hdOworfQorCisjaWYgSEFW
RShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgaGFuZGxl
cjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqcmVzdWx0KSljb21wbGV0
aW9uCit7CisgICAgW3NlbGYgX2RpZEF1dGhvcml6ZVBheW1lbnQ6cGF5bWVudCBjb21wbGV0aW9u
OmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhv
ZCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUg
KnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0Nv
bnRhY3QgKiljb250YWN0IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGlu
Z0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3Q6Y29udGFjdCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCist
ICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBoYW5kbGVyOih2b2lkICheKShQS1Bh
eW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uCit7Cisg
ICAgW3NlbGYgX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6cGF5bWVudE1ldGhvZCBjb21wbGV0aW9u
OmNvbXBsZXRpb25dOworfQorCisjZWxzZQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0
aW9uOih2b2lkKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpKWNvbXBsZXRpb24KK3sK
KyAgICBbc2VsZiBfZGlkQXV0aG9yaXplUGF5bWVudDpwYXltZW50IGNvbXBsZXRpb246Y29tcGxl
dGlvbl07Cit9CisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBs
ZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheTxQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSAqPiAqKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kOnNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246Y29tcGxldGlvbl07Cit9
CisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGlu
Z0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKiwgTlNB
cnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYg
X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb250YWN0IGNvbXBsZXRpb246Y29tcGxldGlvbl07
Cit9CisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQYXlt
ZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KHZv
aWQoXikoTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKSljb21wbGV0aW9uCit7Cisg
ICAgW3NlbGYgX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6cGF5bWVudE1ldGhvZCBjb21wbGV0aW9u
OmNvbXBsZXRpb25dOworfQorCisjZW5kaWYKKworI3ByYWdtYSBtYXJrIFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlUHJpdmF0ZQorCistICh2b2lkKXBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIgd2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9y
Cit7CisgICAgW3NlbGYgX3dpbGxGaW5pc2hXaXRoRXJyb3I6ZXJyb3JdOworfQorCistICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjoo
dm9pZCheKShQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNFcnJvciAqKSljb21wbGV0aW9u
Cit7CisgICAgW3NlbGYgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246Y29tcGxldGlvbl07Cit9
CisKK0BlbmQKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRSZXF1ZXN0ICpy
ZXF1ZXN0KQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xpZW50KQorICAg
ICwgbV92aWV3Q29udHJvbGxlcihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnJlcXVl
c3RdKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQor
eworICAgIFttX3ZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOwor
ICAgIFttX3ZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgp
XTsKK30KKworI2lmIFBMQVRGT1JNKE1BQykKK1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgKnZpZXdDb250cm9sbGVyKQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIoY2xpZW50KQorICAgICwgbV92aWV3Q29udHJvbGxlcih2aWV3Q29udHJvbGxlcikK
KyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQoreworICAg
IFttX3ZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFtt
X3ZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30K
KyNlbmRpZgorCitXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgKlBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6OnBsYXRmb3JtRGVsZWdhdGUoKQoreworICAgIHJldHVybiBt
X2RlbGVnYXRlLmdldCgpOworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6OmRpc21pc3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW1ttX3Zp
ZXdDb250cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9s
bGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07CisjZW5kaWYKKyAgICBbbV92aWV3
Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOworICAgIFttX3ZpZXdDb250cm9sbGVyIHNldFBy
aXZhdGVEZWxlZ2F0ZTpuaWxdOworICAgIG1fdmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgW21f
ZGVsZWdhdGUgaW52YWxpZGF0ZV07CisgICAgbV9kZWxlZ2F0ZSA9IG5pbDsKK30KKworI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjo6cHJlc2VudChVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7Cisg
ICAgaWYgKCFwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgfHwgIW1fdmlld0NvbnRyb2xsZXIpCisg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBbcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjptX3ZpZXdDb250cm9sbGVyLmdl
dCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOworICAgIGNvbXBsZXRpb25IYW5k
bGVyKHRydWUpOworfQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29j
b2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZj
MjNkMDZkOTA2OTk4ODRmMmFkNDU2MzUxZDQ2NTI0NTQxZTgyYTAKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBVU0UoUEFTU0tJ
VCkKKworI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KKworT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0Vycm9yOwor
T0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI7CisKK3VzaW5nIERpZFJlcXVlc3RNZXJj
aGFudFNlc3Npb25Db21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRNZXJjaGFudFNl
c3Npb24gKiwgTlNFcnJvciAqKT47CisKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JT
KQordXNpbmcgRGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKik+OwordXNpbmcgRGlkU2VsZWN0UGF5bWVudE1l
dGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0
aG9kVXBkYXRlICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24g
PSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKik+
OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9p
ZChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKik+OworI2Vsc2UKK3VzaW5n
IERpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKT47Cit1c2luZyBEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxl
dGlvbiA9IEJsb2NrUHRyPHZvaWQoTlNBcnJheSAqKT47Cit1c2luZyBEaWRTZWxlY3RTaGlwcGlu
Z0NvbnRhY3RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzLCBOU0FycmF5ICosIE5TQXJyYXkgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzLCBOU0FycmF5ICopPjsKKyNlbmRpZgorCit9CisKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNf
VU5BVkFJTEFCTEU7CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBkaWRS
ZWFjaEZpbmFsU3RhdGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8
UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtczsKK0Bwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICpzaGlwcGluZ01ldGhv
ZHM7CisKKy0gKHZvaWQpY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246KFBLUGF5bWVudE1lcmNo
YW50U2Vzc2lvbiAqKXNlc3Npb24gZXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKy0gKHZvaWQpY29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVt
ICo+ICopc3VtbWFyeUl0ZW1zOworLSAodm9pZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAq
PiAqKWVycm9ycyBkaWRSZWFjaEZpbmFsU3RhdGU6KEJPT0wpZGlkUmVhY2hGaW5hbFN0YXRlOwor
LSAodm9pZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cylzdGF0dXMgc3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBw
aW5nTWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+
ICopZXJyb3JzOworLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0Fy
cmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zOworLSAodm9pZClpbnZh
bGlkYXRlOworCitAZW5kCisKKy8vIEhlbHBlciBtZXRob2RzIGNhbGxlZCBieSBXS1BheW1lbnRB
dXRob3JpemF0aW9uU2Vzc2lvbidzIHN1YmNsYXNzZXMKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIChQcm90ZWN0ZWQpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdp
dGhQcmVzZW50ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImKXByZXNl
bnRlcjsKKworLSAodm9pZClfZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVu
dCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uOjpCbG9j
a1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZEZpbmlzaDsKKy0gKHZvaWQpX2RpZFJlcXVl
c3RNZXJjaGFudFNlc3Npb246KFdlYktpdDo6RGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBs
ZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uOworLSAodm9pZClfZGlkU2VsZWN0UGF5bWVudE1l
dGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6
OkRpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsK
Ky0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBj
b21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb246OkJs
b2NrVHlwZSljb21wbGV0aW9uOworLSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBL
U2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247CistICh2
b2lkKV93aWxsRmluaXNoV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CisKK0BlbmQKKworI2Vu
ZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
b2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42NDI5NmQ1YmYwYTY1MWQ5Y2Q2ZTZiYjYyMThiYzdjOTlmNDk4Njc0Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUubW0KQEAgLTAsMCArMSwyMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCisK
KyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50Lmg+CisjaW1wb3J0
IDxXZWJDb3JlL1BheW1lbnRNZXRob2QuaD4KKworQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZSB7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtQYXltZW50U3Vt
bWFyeUl0ZW0gKj4+IF9zdW1tYXJ5SXRlbXM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtTaGlw
cGluZ01ldGhvZCAqPj4gX3NoaXBwaW5nTWV0aG9kczsKKyAgICBXZWFrUHRyPFdlYktpdDo6UGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IF9wcmVzZW50ZXI7CisgICAgV2ViS2l0OjpEaWRB
dXRob3JpemVQYXltZW50Q29tcGxldGlvbiBfZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb247
CisgICAgV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiBfZGlkUmVx
dWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb247CisgICAgV2ViS2l0OjpEaWRTZWxlY3RQYXlt
ZW50TWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247Cisg
ICAgV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uIF9kaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2RDb21wbGV0aW9uIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb247Cit9CisK
Ky0gKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAg
ICByZXR1cm4gX3N1bW1hcnlJdGVtcy5nZXQoKTsKK30KKworLSAoTlNBcnJheTxQS1NoaXBwaW5n
TWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzCit7CisgICAgcmV0dXJuIF9zaGlwcGluZ01ldGhv
ZHMuZ2V0KCk7Cit9CisKKy0gKHZvaWQpY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246KFBLUGF5
bWVudE1lcmNoYW50U2Vzc2lvbiAqKXNlc3Npb24gZXJyb3I6KE5TRXJyb3IgKillcnJvcgorewor
ICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uLCBu
aWwpKHNlc3Npb24sIGVycm9yKTsKK30KKworLSAodm9pZCljb21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMK
K3sKKyAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOworI2lmIEhBVkUoUEFTU0tJVF9H
UkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQ
YXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVu
dFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgc3RkOjpleGNoYW5nZShf
ZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyNl
bHNlCisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24s
IG5pbCkoX3N1bW1hcnlJdGVtcyk7CisjZW5kaWYKK30KKworLSAodm9pZCljb21wbGV0ZVBheW1l
bnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6KE5T
QXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBkaWRSZWFjaEZpbmFsU3RhdGU6KEJPT0wpZGlkUmVh
Y2hGaW5hbFN0YXRlCit7CisgICAgX2RpZFJlYWNoRmluYWxTdGF0ZSA9IGRpZFJlYWNoRmluYWxT
dGF0ZTsKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIGF1dG8gcmVzdWx0
ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5j
ZSgpIGluaXRXaXRoU3RhdHVzOnN0YXR1cyBlcnJvcnM6ZXJyb3JzXSk7CisgICAgc3RkOjpleGNo
YW5nZShfZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24sIG5pbCkocmVzdWx0LmdldCgpKTsK
KyNlbHNlCisgICAgQVNTRVJUKCFlcnJvcnMuY291bnQpOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2Rp
ZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLCBuaWwpKHN0YXR1cyk7CisjZW5kaWYKK30KKwor
LSAodm9pZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cylzdGF0dXMgc3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBw
aW5nTWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+
ICopZXJyb3JzCit7CisgICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKKyAgICBfc2hp
cHBpbmdNZXRob2RzID0gc2hpcHBpbmdNZXRob2RzOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxB
Ul9FUlJPUlMpCisgICAgQVNTRVJUKHN0YXR1cyA9PSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzU3VjY2Vzcyk7CisgICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6
ZXJyb3JzIHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01l
dGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyNlbHNl
CisgICAgQVNTRVJUKCFlcnJvcnMuY291bnQpOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24sIG5pbCkoc3RhdHVzLCBfc2hpcHBpbmdNZXRob2Rz
LCBfc3VtbWFyeUl0ZW1zKTsKKyNlbmRpZgorfQorCistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5
SXRlbXMKK3sKKyAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOworI2lmIEhBVkUoUEFT
U0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0
aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIHN0ZDo6ZXhj
aGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0
KCkpOworI2Vsc2UKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENv
bXBsZXRpb24sIG5pbCkoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIF9zdW1t
YXJ5SXRlbXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIGlmIChf
ZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24pCisgICAgICAgIFtzZWxmIGNvbXBsZXRlUGF5
bWVudFNlc3Npb246UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBb
XSBkaWRSZWFjaEZpbmFsU3RhdGU6WUVTXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIChQcm90ZWN0ZWQpCisKKy0gKGluc3RhbmNl
dHlwZSlfaW5pdFdpdGhQcmVzZW50ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXImKXByZXNlbnRlcgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgX3ByZXNlbnRlciA9IG1ha2VXZWFrUHRyKHByZXNlbnRl
cik7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpX2RpZEF1dGhvcml6ZVBheW1lbnQ6
KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjooV2ViS2l0OjpEaWRBdXRob3JpemVQYXlt
ZW50Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRB
dXRob3JpemVQYXltZW50Q29tcGxldGlvbik7CisgICAgX2RpZEF1dGhvcml6ZVBheW1lbnRDb21w
bGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5n
ZXQoKTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRl
UGF5bWVudFNlc3Npb246UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3Jz
OkBbIF0gZGlkUmVhY2hGaW5hbFN0YXRlOllFU107CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgp
LnByZXNlbnRlckRpZEF1dGhvcml6ZVBheW1lbnQoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVu
dChwYXltZW50KSk7Cit9CisKKy0gKHZvaWQpX2RpZEZpbmlzaAoreworICAgIGlmIChhdXRvIHBy
ZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCkpCisgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCku
cHJlc2VudGVyRGlkRmluaXNoKCpwcmVzZW50ZXIsIF9kaWRSZWFjaEZpbmFsU3RhdGUpOworfQor
CistICh2b2lkKV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJLaXQ6OkRpZFJlcXVlc3RN
ZXJjaGFudFNlc3Npb25Db21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAgIEFT
U0VSVCghX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uKTsKKyAgICBfZGlkUmVx
dWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgW1BBTDo6
Z2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2Vy
dmljZXNNZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXlt
ZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CisK
KyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAg
ICAgICAgICAgIEFTU0VSVChfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24pOwor
CisgICAgICAgICAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgICAg
ICAgICBpZiAoIXByZXNlbnRlcikgeworICAgICAgICAgICAgICAgIF9kaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uQ29tcGxldGlvbihuaWwsIG5pbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRl
cldpbGxWYWxpZGF0ZU1lcmNoYW50KCpwcmVzZW50ZXIsIG1lcmNoYW50VVJMKTsKKyAgICAgICAg
fSk7CisgICAgfV07Cit9CisKKy0gKHZvaWQpX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5
bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NF
UlQoIV9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbik7CisgICAgX2RpZFNlbGVjdFBh
eW1lbnRNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVy
ID0gX3ByZXNlbnRlci5nZXQoKTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJu
IFtzZWxmIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKworICAgIHByZXNl
bnRlci0+Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZCgqcHJlc2VudGVy
LCBXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKK30KKworLSAodm9pZClf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246
KFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNv
bXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0
aW9uKTsKKyAgICBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRp
b247CisKKyAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFw
cmVzZW50ZXIpCisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbjpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBzdW1tYXJ5SXRlbXM6
QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXSBlcnJvcnM6QFsgXV07CisKKyAgICBwcmVzZW50ZXIt
PmNsaWVudCgpLnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdCgqcHJlc2VudGVyLCBX
ZWJDb3JlOjpQYXltZW50Q29udGFjdChjb250YWN0KSk7Cit9CisKK3N0YXRpYyBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgdG9TaGlwcGluZ01l
dGhvZChQS1NoaXBwaW5nTWV0aG9kICpzaGlwcGluZ01ldGhvZCkKK3sKKyAgICBBU1NFUlQoc2hp
cHBpbmdNZXRob2QpOworCisgICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKKyAgICByZXN1bHQuYW1vdW50ID0gc2hpcHBpbmdN
ZXRob2QuYW1vdW50LnN0cmluZ1ZhbHVlOworICAgIHJlc3VsdC5kZXRhaWwgPSBzaGlwcGluZ01l
dGhvZC5kZXRhaWw7CisgICAgcmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGluZ01ldGhvZC5pZGVu
dGlmaWVyOworICAgIHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5nTWV0aG9kLmxhYmVsOworCisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworLSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBL
U2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAg
ICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24pOworICAgIF9kaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBw
cmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAg
ICByZXR1cm4gW3NlbGYgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKwor
ICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qo
KnByZXNlbnRlciwgdG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOworfQorCistICh2
b2lkKV93aWxsRmluaXNoV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKK30KKworQGVuZAor
CisjZW5kaWYgLy8gVVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjQ3
NDVlMmViMDhjNmNlNDMyNTExZTg1MzJiNzIxYmI4OGIyOTVlZi4uYTY5NWM2NzQ0ZWNiOWMyMzY3
MzA3YTJmNWI0ZmNjYmI3YjhhN2ZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjMw
LDcgKzIzMCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZENhbmNlbFBh
eW1lbnRTZXNzaW9uKCkKICAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KIAotdm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlcldpbGxWYWxpZGF0ZU1l
cmNoYW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgVVJMJiB1cmwpCiB7
CiAgICAgQVNTRVJUKG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgPT0gTWVyY2hhbnRWYWxpZGF0
aW9uU3RhdGU6OklkbGUpOwogCkBAIC0yMzgsMTMgKzIzOCwyMCBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6VmFsaWRhdGVNZXJjaGFudCh1cmwu
c3RyaW5nKCkpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0
aG9yaXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudChQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1l
bnQpCiB7CiAgICAgbV9zdGF0ZSA9IFN0YXRlOjpBdXRob3JpemVkOwogICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkQXV0aG9yaXplUGF5bWVudChwYXltZW50KSk7
CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlw
cGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwcmVzZW50ZXJEaWRGaW5pc2goUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBi
b29sIGRpZFJlYWNoRmluYWxTdGF0ZSkKK3sKKyAgICBpZiAoIWRpZFJlYWNoRmluYWxTdGF0ZSkK
KyAgICAgICAgZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKKyAgICBoaWRlUGF5bWVudFVJKCk7
Cit9CisKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlw
cGluZ01ldGhvZCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApA
QCAtMjUyLDcgKzI1OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5CiAgICAgc2VuZChNZXNz
YWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZChzaGlw
cGluZ01ldGhvZCkpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHNoaXBw
aW5nQ29udGFjdCkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCiB7CiAgICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKQEAgLTI2MCw3ICsyNjcsNyBAQCB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29u
c3QgV2ViQ29yZTo6UGF5bWVudAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGlu
YXRvcjo6RGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KHNoaXBwaW5nQ29udGFjdCkpOwogfQogCi12
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYg
cGF5bWVudE1ldGhvZCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmgKaW5kZXggYzE5YjEyYmEzZTgwNGJhZmEyNjAyYzgxY2QwZTkw
NDdkMzQ5M2U1Ny4uY2FhNWY5NWVjYWNlNmI4MTgyYjc4ZjZhMzk1NzJkNWY5NmVlOWVkYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFk
ZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CkBAIC01NiwxMyArNTcsMTYgQEAgT0JKQ19DTEFTUyBOU1dpbmRvdzsKIE9CSkNfQ0xBU1Mg
UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBQS1BheW1l
bnRSZXF1ZXN0OwogT0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFTUyBXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAotY2xhc3MgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkgOiBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVz
c2FnZVNlbmRlciwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5PiB7CitjbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQorICAgIDogcHJpdmF0ZSBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KKyAg
ICAsIHB1YmxpYyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50IHsKIHB1Ymxp
YzoKICAgICBzdHJ1Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZh
dWx0OwpAQCAtNzUsNiArNzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
ICAgICAgICAgdmlydHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERh
dGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSA9IDA7CiAjZW5k
aWYKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIHZpcnR1YWwgTlNXaW5kb3cgKnBheW1lbnRD
b29yZGluYXRvclByZXNlbnRpbmdXaW5kb3coY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkmKSA9IDA7CkBAIC04NSwxMiArOTAsNiBAQCBwdWJsaWM6CiAgICAgfldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5KCk7CiAKICAgICB2b2lkIGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7Ci0g
ICAgdm9pZCB2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYpOwotICAgIHZvaWQgZGlkQXV0aG9y
aXplUGF5bWVudChjb25zdCBXZWJDb3JlOjpQYXltZW50Jik7Ci0gICAgdm9pZCBkaWRTZWxlY3RT
aGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChj
b25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYpOwotICAgIHZvaWQgZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZChjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7Ci0KICAgICB2b2lkIGhpZGVQ
YXltZW50VUkoKTsKIAogcHJpdmF0ZToKQEAgLTEwMSw2ICsxMDAsMTQgQEAgcHJpdmF0ZToKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5k
ZXJDb25uZWN0aW9uKCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRl
c3RpbmF0aW9uSUQoKSBjb25zdCBmaW5hbDsKKyAgICAKKyAgICAvLyBQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Q2xpZW50CisgICAgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXlt
ZW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVu
dCYpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyRGlkRmluaXNoKFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgYm9vbCBkaWRSZWFjaEZpbmFsU3RhdGUpIGZpbmFsOworICAgIHZvaWQg
cHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKSBmaW5hbDsKKyAgICB2b2lkIHBy
ZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgZmluYWw7CisgICAgdm9pZCBw
cmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlw
cGluZ01ldGhvZCYpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hh
bnQoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBVUkwmKSBmaW5hbDsKIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGF2YWlsYWJsZVBheW1lbnROZXR3b3Jr
cyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKQEAgLTE3Myw4
ICsxODAsNyBAQCBwcml2YXRlOgogICAgICAgICBWYWxpZGF0aW9uQ29tcGxldGUKICAgICB9IG1f
bWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgeyBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSB9
OwogCi0gICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4g
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXI7CiAKICNp
ZiBQTEFURk9STShNQUMpCiAgICAgdWludDY0X3QgbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQg
eyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggZmJi
ZWVhZDM3MjYzZDI3YzdkMzNhMDViYjc2OTU4M2YyNWRmNjE1MS4uNGU5NDJiOTY4YTQzOWU2MzRi
ZjhhZTdiOTI2M2NhNjI0YjM4NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EuaApAQCAtMjcsMzcgKzI3LDE4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQog
Ci0jaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgotI2ltcG9ydCA8V2ViQ29y
ZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+
Ci0jaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIAotQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyUHJpdmF0ZURlbGVnYXRlPiB7Ci1AcGFja2FnZQotICAgIFdlYktpdDo6V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkqIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLSAgICBS
ZXRhaW5QdHI8TlNBcnJheT4gX3BheW1lbnRTdW1tYXJ5SXRlbXM7Ci0gICAgUmV0YWluUHRyPE5T
QXJyYXk+IF9zaGlwcGluZ01ldGhvZHM7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotICAgIEJsb2Nr
UHRyPHZvaWQoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKik+IF9zZXNzaW9u
QmxvY2s7CisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVuY3Rpb25z
IHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cKKy8vIGhv
dyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0gcmVwcmVz
ZW50YXRpb25zLgorTlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7CitO
U0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCk7CitQ
S1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKK1BLUGF5bWVudFN1
bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUpOworUEtTaGlwcGluZ01ldGhv
ZCAqdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwogCi0gICAgQk9PTCBfZGlkUmVhY2hGaW5hbFN0
YXRlOwotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgQmxvY2tQdHI8dm9p
ZChQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ICopPiBfcGF5bWVudEF1dGhvcml6ZWRDb21w
bGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGUgKik+IF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0
cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJl
cXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RD
b21wbGV0aW9uOwotI2Vsc2UKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMpPiBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZv
aWQoTlNBcnJheSAqKT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwotICAgIEJs
b2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqKT4gX2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXkgKiwgTlNBcnJheSAqKT4gX2RpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb247Ci0jZW5kaWYKLX0KK30gLy8gbmFtZXNwYWNlIFdl
YktpdAogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eToo
V2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk7Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZTsKLQotQGVuZAotCi0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0KaW5kZXggYWNlZjk4NGRjMDk5ZDRhMTRiOTEwNzM5OWFiMjNhOGNlNTlhOWY3Yi4uODUw
MDk1MGU2MTRhYTE2YzkxYjk4ZTg2Yjc2YWNhNDRlMGNiMmQxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKQogCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUu
aCIKICNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCi0jaW1wb3J0ICJXZWJQ
cm9jZXNzUG9vbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgpAQCAtMzcsMjAyICszNyw2IEBACiAjaW1wb3J0IDx3dGYv
UnVuTG9vcC5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5V
TEFSX0VSUk9SUykKLVNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCi1TT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7Ci1T
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5
LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRy
ZXNzQ2l0eUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENO
UG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZU
X0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzUG9zdGFs
Q29kZUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9z
dGFsQWRkcmVzc0NvdW50cnlLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENv
bnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSwgTlNTdHJpbmcgKik7Ci1T
T0ZUX0xJTktfQ09OU1RBTlQoUEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNT
dHJpbmcgKik7Ci0jZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlCi0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1l
bnRDb29yZGluYXRvclByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSA9ICZ3ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLQotICAgIHJldHVybiBzZWxm
OwotfQotCi0tICh2b2lkKWludmFsaWRhdGUKLXsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkgPSBudWxscHRyOwotICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7
Ci0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICAgICAgX3BheW1lbnRBdXRo
b3JpemVkQ29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7Ci0jZWxzZQotICAgICAgICBfcGF5bWVu
dEF1dGhvcml6ZWRDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJl
KTsKLSNlbmRpZgotICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVsbHB0
cjsKLSAgICB9Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciB3aWxs
RmluaXNoV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLX0KLQotLSAodm9pZClwYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXiko
UEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKikpc2Vzc2lvbkJsb2NrCi17Ci0g
ICAgQVNTRVJUKCFfc2Vzc2lvbkJsb2NrKTsKLSAgICBfc2Vzc2lvbkJsb2NrID0gc2Vzc2lvbkJs
b2NrOwotCi0gICAgW1BBTDo6Z2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
Q2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwg
TlNFcnJvciAqZXJyb3IpIHsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTE9HX0VS
Uk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJy
b3IgJUAiLCBlcnJvcik7Ci0KLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKLSAgICAgICAgICAgIEFTU0VSVChfc2Vzc2lvbkJsb2NrKTsKLQotICAg
ICAgICAgICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgICAg
ICAgICBfc2Vzc2lvbkJsb2NrKG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LT52YWxpZGF0ZU1lcmNoYW50KG1lcmNoYW50VVJMKTsKLSAgICAgICAgfSk7Ci0gICAg
fV07Ci19Ci0KLXN0YXRpYyBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2QgdG9TaGlwcGluZ01ldGhvZChQS1NoaXBwaW5nTWV0aG9kICpzaGlwcGlu
Z01ldGhvZCkKLXsKLSAgICBBU1NFUlQoc2hpcHBpbmdNZXRob2QpOwotCi0gICAgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKLSAg
ICByZXN1bHQubGFiZWwgPSBzaGlwcGluZ01ldGhvZC5sYWJlbDsKLSAgICByZXN1bHQuZGV0YWls
ID0gc2hpcHBpbmdNZXRob2QuZGV0YWlsOwotICAgIHJlc3VsdC5hbW91bnQgPSBzaGlwcGluZ01l
dGhvZC5hbW91bnQuc3RyaW5nVmFsdWU7Ci0gICAgcmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGlu
Z01ldGhvZC5pZGVudGlmaWVyOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmIEhBVkUo
UEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6
KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlv
bgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNv
bXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJ
bnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWls
dXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUKCFfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKTsKLSAgICBfcGF5bWVudEF1dGhv
cml6ZWRDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS0+ZGlkQXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXltZW50KHBheW1lbnQpKTsK
LX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1l
bnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgaGFuZGxlcjoodm9pZCAo
XikoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlv
bgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNv
bXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsK
LX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9p
ZCAoXikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBs
ZXRpb24gewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01l
dGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RT
aGlwcGluZ01ldGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENv
bXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkp
OwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgotewot
ICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRp
b24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRh
dGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBd
IHNoaXBwaW5nTWV0aG9kczpAWyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7Ci0gICAg
X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFdlYkNv
cmU6OlBheW1lbnRDb250YWN0KGNvbnRhY3QpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiAhSEFWRShQ
QVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlv
bjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykpY29tcGxldGlvbgotewot
ICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRp
b24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKTsKLSAg
ICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkQXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXlt
ZW50KHBheW1lbnQpKTsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
IGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRo
b2QgY29tcGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0
dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxl
dGlvbgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsIEBbIF0pOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9u
ID0gY29tcGxldGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kKHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKLX0KLQot
LSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRo
b2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlvbjoodm9pZCAoXiko
TlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zKSljb21wbGV0aW9u
Ci17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29t
cGxldGlvbihAWyBdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0UGF5bWVudE1l
dGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LT5kaWRTZWxlY3RQYXltZW50TWV0aG9kKFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5
bWVudE1ldGhvZCkpOwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246
KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBOU0FycmF5PFBL
U2hpcHBpbmdNZXRob2QgKj4gKnNoaXBwaW5nTWV0aG9kcywgTlNBcnJheTxQS1BheW1lbnRTdW1t
YXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zKSljb21wbGV0aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZSwgQFsgXSwgQFsgXSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsK
LSAgICBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0g
ICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qo
V2ViQ29yZTo6UGF5bWVudENvbnRhY3QoY29udGFjdCkpOwotfQotCi0jZW5kaWYKLQotLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOihQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFfd2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghX2Rp
ZFJlYWNoRmluYWxTdGF0ZSkKLSAgICAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5k
aWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5LT5oaWRlUGF5bWVudFVJKCk7Ci19Ci0KLUBlbmQKLQogLy8gRklYTUU6IE9uY2UgcmRhcjov
L3Byb2JsZW0vMjQ0MjAwMjQgaGFzIGJlZW4gZml4ZWQsIGltcG9ydCBQS1BheW1lbnRSZXF1ZXN0
X1ByaXZhdGUuaCBpbnN0ZWFkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJv
cGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBOU1VSTCAqb3JpZ2luYXRpbmdVUkw7CkBAIC0zMjIs
NyArMTI2LDcgQEAgc3RhdGljIFBLQWRkcmVzc0ZpZWxkIHRvUEtBZGRyZXNzRmllbGQoY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXUKIH0KICNlbmRpZgogCi1zdGF0aWMg
UEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQor
UEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQog
ewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDoKQEAgLTMzMywyOCArMTM3LDI4
IEBAIHN0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRl
bVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzCiAgICAgfQogfQogCi1zdGF0aWMgTlNEZWNpbWFs
TnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCitOU0RlY2ltYWxO
dW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKIHsKICAgICBpZiAo
IWFtb3VudCkKICAgICAgICAgcmV0dXJuIFtOU0RlY2ltYWxOdW1iZXIgemVyb107CiAgICAgcmV0
dXJuIFtOU0RlY2ltYWxOdW1iZXIgZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2Fs
ZTpAeyBOU0xvY2FsZURlY2ltYWxTZXBhcmF0b3IgOiBAIi4iIH1dOwogfQogCi1zdGF0aWMgUmV0
YWluUHRyPFBLUGF5bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0
ZW0pCitQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVt
KQogewogICAgIHJldHVybiBbUEFMOjpnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3Vt
bWFyeUl0ZW1XaXRoTGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihs
aW5lSXRlbS5hbW91bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0u
dHlwZSldOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvUEtQYXltZW50U3VtbWFy
eUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3Rh
bEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCitOU0FycmF5ICp0b1BLUGF5bWVudFN1
bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQogewotICAgIGF1dG8gcGF5bWVu
dFN1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwor
ICAgIE5TTXV0YWJsZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJsZUFycmF5
IGFycmF5V2l0aENhcGFjaXR5OnRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcy5zaXplKCkgKyAx
XTsKICAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogdG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1z
KSB7Ci0gICAgICAgIGlmIChhdXRvIHN1bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRl
bShsaW5lSXRlbSkpCi0gICAgICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6
c3VtbWFyeUl0ZW0uZ2V0KCldOworICAgICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1
bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCisgICAgICAgICAg
ICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwogICAgIH0KIAot
ICAgIGlmIChhdXRvIHRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0odG90YWxBbmRM
aW5lSXRlbXMudG90YWwpKQotICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6
dG90YWxJdGVtLmdldCgpXTsKKyAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvdGFsSXRl
bSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0odG90YWxBbmRMaW5lSXRlbXMudG90YWwpKQorICAg
ICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKIAogICAgIHJl
dHVybiBwYXltZW50U3VtbWFyeUl0ZW1zOwogfQpAQCAtMzk5LDkgKzIwMyw5IEBAIHN0YXRpYyBQ
S1NoaXBwaW5nVHlwZSB0b1BLU2hpcHBpbmdUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpTCiAgICAgfQogfQogCi1zdGF0aWMgUmV0YWluUHRyPFBLU2hpcHBpbmdN
ZXRob2Q+IHRvUEtTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQorUEtTaGlwcGlu
Z01ldGhvZCAqdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCiB7Ci0gICAg
UmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldFBLU2hpcHBpbmdN
ZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFt
b3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CisgICAgUEtTaGlw
cGluZ01ldGhvZCAqcmVzdWx0ID0gW1BBTDo6Z2V0UEtTaGlwcGluZ01ldGhvZENsYXNzKCkgc3Vt
bWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdNZXRob2QubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51
bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQpXTsKICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6
c2hpcHBpbmdNZXRob2QuaWRlbnRpZmllcl07CiAgICAgW3Jlc3VsdCBzZXREZXRhaWw6c2hpcHBp
bmdNZXRob2QuZGV0YWlsXTsKIApAQCAtNDcwLDE3ICsyNzQsMTcgQEAgUmV0YWluUHRyPFBLUGF5
bWVudFJlcXVlc3Q+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRS
ZXF1ZXN0KGMKIAogICAgIGF1dG8gc2hpcHBpbmdNZXRob2RzID0gYWRvcHROUyhbW05TTXV0YWJs
ZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChhdXRvJiBzaGlwcGluZ01ldGhvZCA6IHBh
eW1lbnRSZXF1ZXN0LnNoaXBwaW5nTWV0aG9kcygpKQotICAgICAgICBbc2hpcHBpbmdNZXRob2Rz
IGFkZE9iamVjdDp0b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpLmdldCgpXTsKKyAg
ICAgICAgW3NoaXBwaW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0aG9kKHNoaXBw
aW5nTWV0aG9kKV07CiAgICAgW3Jlc3VsdCBzZXRTaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRo
b2RzLmdldCgpXTsKIAogICAgIGF1dG8gcGF5bWVudFN1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiBw
YXltZW50UmVxdWVzdC5saW5lSXRlbXMoKSkgewotICAgICAgICBpZiAoYXV0byBzdW1tYXJ5SXRl
bSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAgICAgICAgICAgW3BheW1l
bnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtLmdldCgpXTsKKyAgICAgICAgaWYg
KFBLUGF5bWVudFN1bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0
ZW0obGluZUl0ZW0pKQorICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0
OnN1bW1hcnlJdGVtXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0b1BLUGF5
bWVudFN1bW1hcnlJdGVtKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCkpKQotICAgICAgICBbcGF5bWVu
dFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtLmdldCgpXTsKKyAgICBpZiAoUEtQYXlt
ZW50U3VtbWFyeUl0ZW0gKnRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0ocGF5bWVu
dFJlcXVlc3QudG90YWwoKSkpCisgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVj
dDp0b3RhbEl0ZW1dOwogCiAgICAgW3Jlc3VsdCBzZXRQYXltZW50U3VtbWFyeUl0ZW1zOnBheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCldOwogCkBAIC01MTMsMjc4ICszMTcsMjkgQEAgUmV0YWluUHRy
PFBLUGF5bWVudFJlcXVlc3Q+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBh
eW1lbnRSZXF1ZXN0KGMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgSEFWRShQQVNTS0lU
X0dSQU5VTEFSX0VSUk9SUykKLXN0YXRpYyBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRv
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyBzdGF0dXMpCi17Ci0gICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICBjYXNlIFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgotICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKLSAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKLSAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OwotICAgIH0KLX0KLQotc3Rh
dGljIFBLUGF5bWVudEVycm9yQ29kZSB0b1BLUGF5bWVudEVycm9yQ29kZShXZWJDb3JlOjpQYXlt
ZW50RXJyb3I6OkNvZGUgY29kZSkKLXsKLSAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIFBLUGF5
bWVudFVua25vd25FcnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6
U2hpcHBpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNoaXBwaW5n
Q29udGFjdEludmFsaWRFcnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QmlsbGlu
Z0NvbnRhY3RJbnZhbGlkRXJyb3I7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OkFkZHJlc3NVbnNlcnZpY2VhYmxlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBp
bmdBZGRyZXNzVW5zZXJ2aWNlYWJsZUVycm9yOwotICAgIH0KLX0KLQotc3RhdGljIFJldGFpblB0
cjxOU0Vycm9yPiB0b05TRXJyb3IoY29uc3QgV2ViQ29yZTo6UGF5bWVudEVycm9yJiBlcnJvcikK
LXsKLSAgICBhdXRvIHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxs
b2NdIGluaXRdKTsKLSAgICBbdXNlckluZm8gc2V0T2JqZWN0OmVycm9yLm1lc3NhZ2UgZm9yS2V5
Ok5TTG9jYWxpemVkRGVzY3JpcHRpb25LZXldOwotCi0gICAgaWYgKGVycm9yLmNvbnRhY3RGaWVs
ZCkgewotICAgICAgICBOU1N0cmluZyAqcGtDb250YWN0RmllbGQgPSBuaWw7Ci0gICAgICAgIE5T
U3RyaW5nICpwb3N0YWxBZGRyZXNzS2V5ID0gbmlsOwotCi0gICAgICAgIHN3aXRjaCAoKmVycm9y
LmNvbnRhY3RGaWVsZCkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29u
dGFjdEZpZWxkOjpQaG9uZU51bWJlcjoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFM
OjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCk7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpFbWFpbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRFbWFpbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6Ok5hbWU6
Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0
RmllbGROYW1lKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQaG9uZXRpY05hbWU6Ci0gICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZXRpY05h
bWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRh
Y3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpBZGRyZXNzTGluZXM6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVs
ZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAg
ICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5KCk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpTdWJMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxk
ID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAg
ICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJMb2NhbGl0eUtl
eSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvbnRhY3RGaWVsZDo6TG9jYWxpdHk6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVs
ZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAg
ICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6UG9zdGFsQ29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0g
UEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAg
ICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5KCk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpTdWJBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAgICAgICBwa0Nv
bnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNz
KCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3Vi
QWRtaW5pc3RyYXRpdmVBcmVhS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpBZG1pbmlzdHJhdGl2ZUFy
ZWE6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0g
Z2V0Q05Qb3N0YWxBZGRyZXNzU3RhdGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnk6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Q
b3N0YWxBZGRyZXNzQ291bnRyeUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291bnRyeUNvZGU6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Q
b3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0KLSAgICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwa0NvbnRhY3RGaWVsZCBmb3JL
ZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5
KCldOwotICAgICAgICBpZiAocG9zdGFsQWRkcmVzc0tleSkKLSAgICAgICAgICAgIFt1c2VySW5m
byBzZXRPYmplY3Q6cG9zdGFsQWRkcmVzc0tleSBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1Bh
eW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSgpXTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gYWRvcHROUyhbW05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmdldFBLUGF5bWVudEVy
cm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5m
bzp1c2VySW5mby5nZXQoKV0pOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvTlNF
cnJvcnMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4mIGVycm9ycykKLXsKLSAg
ICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwot
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBlcnJvciA6IGVycm9ycykgewotICAgICAgICBpZiAoYXV0
byBuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKLSAgICAgICAgICAgIFtyZXN1bHQgYWRkT2Jq
ZWN0Om5zRXJyb3IuZ2V0KCldOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxz
ZQotc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0PiYgcmVzdWx0KQotewotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0KLSAgICBpZiAocmVzdWx0LT5lcnJv
cnMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgYXV0byYgZXJyb3IgPSByZXN1bHQtPmVycm9yc1sw
XTsKLSAgICAgICAgc3dpdGNoIChlcnJvci5jb2RlKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0KLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAg
ICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZEJpbGxpbmdQb3N0
YWxBZGRyZXNzOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpT
aGlwcGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICAgICAgaWYgKGVycm9yLmNvbnRhY3RGaWVs
ZCAmJiBlcnJvci5jb250YWN0RmllbGQgPT0gV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ6OlBvc3RhbEFkZHJlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOwotCi0gICAgICAg
ICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ0Nv
bnRhY3Q7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHJlc3VsdC0+c3RhdHVzKSB7
Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczoK
LSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwotICAg
IGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkZhaWx1cmU6Ci0gICAg
ICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLSAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5SZXF1aXJlZDoKLSAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5SZXF1aXJlZDsKLSAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5JbmNvcnJlY3Q6Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOSW5jb3JyZWN0Owot
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6
Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOTG9ja291dDsK
LSAgICB9Ci0KLSAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7
Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZVBheW1lbnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0KQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFJlYWNoRmluYWxTdGF0ZSA9IFdlYkNvcmU6OmlzRmlu
YWxTdGF0ZVJlc3VsdChyZXN1bHQpOwotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKLSAgICBhdXRvIHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3RhdHVzIDogV2ViQ29yZTo6
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAgYXV0byBwa1BheW1lbnRB
dXRob3JpemF0aW9uUmVzdWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyhzdGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJy
b3JzKS5nZXQoKSA6IEBbIF1dKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0LmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9Q
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHJlc3VsdCkpOwotI2VuZGlmCi0gICAgbV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXpl
ZENvbXBsZXRpb24gPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29t
cGxldGVQYXltZW50U2Vzc2lvbihyZXN1bHQpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNv
cmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7Ci0g
ICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNT
RVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2Vzc2lvbkJs
b2NrKHBheW1lbnRNZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCksIG51
bGxwdHIpOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fc2Vzc2lvbkJsb2NrID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIt
PmNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKHBheW1lbnRNZXJjaGFudFNlc3Npb24pOwogfQog
CiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RV
cGRhdGU+JiB1cGRhdGUpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlKTsKLQotICAgIGlmICh1cGRhdGUpCi0gICAgICAgIG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRv
UEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwotCi0j
aWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRo
b2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0
aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
LmdldCgpXSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhvZFVw
ZGF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwotI2VuZGlmCi0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlv
blByZXNlbnRlci0+Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQog
Ci0jaWYgIUhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1zdGF0aWMgUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQotewotICAgIGlm
ICghdXBkYXRlIHx8IHVwZGF0ZS0+ZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwotCi0gICAgaWYgKHVwZGF0ZS0+ZXJy
b3JzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIGF1dG8mIGVycm9yID0gdXBkYXRlLT5lcnJvcnNb
MF07Ci0gICAgICAgIHN3aXRjaCAoZXJyb3IuY29kZSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50RXJyb3I6OkNvZGU6OkFkZHJlc3NVbnNlcnZpY2VhYmxlOgotICAgICAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotCi0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9z
dGFsQWRkcmVzczsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6
U2hpcHBpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAgICAgIGlmIChlcnJvci5jb250YWN0Rmll
bGQgJiYgZXJyb3IuY29udGFjdEZpZWxkID09IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFj
dEZpZWxkOjpQb3N0YWxBZGRyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczsKLQotICAgICAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdD
b250YWN0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNGYWlsdXJlOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3Qg
T3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQogewotICAg
IEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VS
VChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBp
ZiAodXBkYXRlKSB7Ci0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1z
KHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwotCi0gICAgICAgIGF1dG8gc2hpcHBpbmdN
ZXRob2RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAg
IGZvciAoYXV0byYgc2hpcHBpbmdNZXRob2QgOiB1cGRhdGUtPm5ld1NoaXBwaW5nTWV0aG9kcykK
LSAgICAgICAgICAgIFtzaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhv
ZChzaGlwcGluZ01ldGhvZCkuZ2V0KCldOwotCi0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzID0gV1RGTW92ZShzaGlw
cGluZ01ldGhvZHMpOwotICAgIH0KLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMp
Ci0gICAgYXV0byBwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVy
cm9yczp1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5
bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdl
dCgpXSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBk
YXRlLmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHRvUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdl
dCgpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IG51bGxwdHI7Cisg
ICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVj
dGlvbih1cGRhdGUpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0
Zm9ybUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3Jl
OjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFTU0VSVChtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAodXBkYXRlKQotICAgICAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRT
dW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5k
TGluZUl0ZW1zKTsKLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0
byBwa1BheW1lbnRNZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVx
dWVzdFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5
bWVudE1ldGhvZFVwZGF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24obV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
U3VtbWFyeUl0ZW1zLmdldCgpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24g
PSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uKHVwZGF0ZSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUF2YWlsYWJsZVBheW1lbnROZXR3b3JrcygpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KaW5kZXggNDMyMzUyNzAyOTk4MDNhMWRmYTBh
ZGQ4MGFjZTAzMTEwZDk4M2QxYS4uNTBjMDEyMTJiYTdhOGZiOGQwZjkxZjlmMWZhNmFkNjhiZjM1
ZmRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjksOCArMjks
OCBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNp
bXBvcnQgIkFQSVVJQ2xpZW50LmgiCisjaW1wb3J0ICJQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlci5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4KICNpbXBv
cnQgPFVJS2l0L1VJVmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMuaD4KQEAgLTQwLDQ3ICs0MCwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVu
dFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNv
blVSTFN0cmluZ3MsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
JiByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9
IG1fY2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhp
cyk7Ci0KLSAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgewotICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NF
UlQoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0KICAgICBhdXRvIHBh
eW1lbnRSZXF1ZXN0ID0gcGxhdGZvcm1QYXltZW50UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlu
a0ljb25VUkxTdHJpbmdzLCByZXF1ZXN0KTsKIAotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJl
cXVlc3QuZ2V0KCldKTsKLSAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eToqdGhpc10pOwotICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1
bW1hcnlJdGVtcyA9IFtwYXltZW50UmVxdWVzdCBwYXltZW50U3VtbWFyeUl0ZW1zXTsKLSAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0
aG9kcyA9IFtwYXltZW50UmVxdWVzdCBzaGlwcGluZ01ldGhvZHNdOwotCi0gICAgW21fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW21fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotCi0gICAgW3ByZXNlbnRpbmdW
aWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwot
Ci0gICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFtX2F1dGhvcml6YXRp
b25QcmVzZW50ZXIpOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1fY2xpZW50LnBh
eW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoKnRoaXMsIHBheW1lbnRSZXF1
ZXN0LmdldCgpKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPnByZXNlbnQobV9jbGll
bnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCp0aGlzKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpoaWRlUGF5bWVudFVJKCkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAgW1ttX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXSBkaXNtaXNzVmlld0NvbnRyb2xs
ZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRyXTsKLSAgICBbbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwot
ICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0
cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhv
cml6YXRpb25QcmVzZW50ZXIgPSBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNYWMubW0KaW5kZXggYmQyNTY0YzQzY2M4MjY3NWIzZjkwZjdhZjM1MjhjMDI2YmJh
ZTVmNC4uMWI1ZGFlMDEzYWMyMWRjYzY2OGM0NzNiODhlM2M2YzVlNGU3MzQxOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgUExB
VEZPUk0oTUFDKSAmJiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW1wb3J0ICJQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBv
cnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKICNpbXBvcnQgPHBhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCkBAIC02NCwx
MiArNjQsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQ
YXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3
Q29udHJvbGxlcik7CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gYWRvcHROUyhbW1dLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBheW1l
bnRDb29yZGluYXRvclByb3h5OipwYXltZW50Q29vcmRpbmF0b3JQcm94eV0pOwotICAgICAgICBw
YXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gW3BheW1lbnRSZXF1ZXN0IHBheW1l
bnRTdW1tYXJ5SXRlbXNdOwotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMg
PSBbcGF5bWVudFJlcXVlc3Qgc2hpcHBpbmdNZXRob2RzXTsKLSAgICAgICAgcGF5bWVudENvb3Jk
aW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IHZpZXdD
b250cm9sbGVyOwotICAgICAgICBbcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpwYXltZW50Q29vcmRpbmF0b3JQ
cm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCld
OwotICAgICAgICBbcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6cGF5bWVudENvb3JkaW5hdG9yUHJv
eHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsK
KyAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRl
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4o
KnBheW1lbnRDb29yZGluYXRvclByb3h5LCB2aWV3Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNT
RVJUKCFwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dp
dGhDb250ZW50Vmlld0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwpAQCAtOTAsMjYgKzg1LDIw
IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXltZW50VUkoKQogICAg
IGlmIChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nKSB7CiAgICAgICAgICsrbV9zaG93UGF5
bWVudFVJUmVxdWVzdFNlZWQ7CiAKLSAgICAgICAgQVNTRVJUKCFtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIpOwotICAgICAgICBBU1NFUlQoIW1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKKyAgICAgICAgQVNTRVJUKCFtX2F1dGhvcml6YXRp
b25QcmVzZW50ZXIpOwogICAgICAgICBBU1NFUlQoIW1fc2hlZXRXaW5kb3cpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlKTsKKyAgICBBU1NFUlQobV9hdXRob3JpemF0aW9uUHJlc2VudGVyKTsKICAgICBB
U1NFUlQobV9zaGVldFdpbmRvdyk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlci5n
ZXQoKV07CiAgICAgbV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyID0gbnVsbHB0cjsKIAog
ICAgIFtbbV9zaGVldFdpbmRvdyBzaGVldFBhcmVudF0gZW5kU2hlZXQ6bV9zaGVldFdpbmRvdy5n
ZXQoKV07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXREZWxl
Z2F0ZTpuaWxdOwotICAgIFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0
UHJpdmF0ZURlbGVnYXRlOm5pbF07Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyID0gbnVsbHB0cjsKLQotICAgIFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2Vu
dGVyLT5kaXNtaXNzKCk7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbnVsbHB0cjsK
IAogICAgIG1fc2hlZXRXaW5kb3cgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDk5NmZiMGM5MDU1NGE0MGZlNmRkNWZjZDFjZTQwNDc5ODg4MTM2ZWQuLjc3NmY4MWI3ZDJj
Y2ZiZWVmNTg3YTNiYjk3MGIxYjk0MWVmMzc0YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTY0LDggKzY0LDExIEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxhdGZvcm0vY2xh
c3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAog
UGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAK
IAorUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KK1BsYXRm
b3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KIFBsYXRmb3Jt
L2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0vY29jb2EvV0tDcmFzaFJlcG9y
dGVyLm1tCitQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0K
IFBsYXRmb3JtL2NvY29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8tdW5pZnkKIAogUGxhdGZvcm0v
Zm91bmRhdGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA5MzM5NDI0ZWZmNjA5MmFiMWRlYTVjNzY0MzdhYjJlY2VlYmRiZjA1
Li43YTViMTdiNzc5MWUyY2I0YTNhZjk2MzczNDc1MTVjNTAzZGUzMzA5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk4Nyw2ICsxOTg3LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmll
d0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0
aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVz
dCAqKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKE1B
QykKICAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25z
dCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNmQxODVmZGYwOTczZDhiZTJh
M2I0YjZkNTM3ZjUwZDg0ZTU4NjhkOC4uMDk1YWJlNzcyYjYwOTA5ZmM5MzZkOTNkMzIzMjZjZjU3
Y2IwM2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIK
KyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IlByaW50SW5mby5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
IgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCkBA
IC0xMTg3LDYgKzExODgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2Vu
dGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwg
UEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3Jk
aW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlWaWV3Q29udHJvbGxlciAqV2Vi
UGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29u
c3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIHJldHVybiB1aUNsaWVudCgp
LnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTNiODFkODUyZjQxYzVjNTkzZTgwYTQzZTZl
ZjhjZGQxZjEyMTYzZi4uOTZmY2Y1ZmM1ZWZiNjI5Njk1M2JiOTE5NWU0NDhlYjJjYTZkMzA0OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTMsNyArMjkzLDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEuaCAqLzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAv
KiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dC5oICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3OEMxRDFCMzM1NTAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3OTYxRDFCMzYxMzAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MjFEMUIzNjEzMDA3QzlC
RDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5
MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsg
fTsKQEAgLTEyODMsNiArMTI4MiwxMCBAQAogCQlBMTNEQzY4MjIwN0FBNkIyMDA2NkVGNzIgLyog
V0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUExNUVFREU2MUUzMDFDRUUwMDAw
NjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3
LmggKi87IH07CiAJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0Nv
Y29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc1
QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovOyB9OworCQlB
MTc5OEIzRTIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk4QjNE
MjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oICovOyB9
OworCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaCAqLzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJQTE4MUE3OTgyMUFDQzc0QjAw
NTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRp
dGlvbnMubW0gKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmls
aXR5SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlB
MTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOURE
M0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5o
ICovOyB9OwpAQCAtMjIyNSw3ICsyMjI4LDYgQEAKIAkJMUFCMUY3NzExRDFCMkY3RTAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MzFEMUIyRjdFMDA3
QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUIxRjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQjFGNzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUIxRjc3RDFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4
NDMsNiArMzg0NSwxMyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29y
ZFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYXNzd29yZFZpZXcu
aDsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBB
cmd1bWVudENvZGVyc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCM0QyMjJEOTdB
MjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNDAyMjJE
OThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0NzIyMkU1MzBBMDAwNzY0QkQg
LyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTc5OEI0ODIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0QTIyMkYxMzNBMDAw
NzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgxQTc5NzIxQUNB
QzYxMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViS2l0QWRkaXRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVC
MjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmls
aXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNjIsNyArNTI3MSw3IEBACiAJ
CTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJCQlBMTc5OEI0QjIyMkYxQkQ0
MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovLAogCQkJCTFB
QjFGNzc5MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYzODAsMTAgKzYzODksMTYgQEAK
IAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIyMkQ5N0EyMDAwNzY0QkQgLyog
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJCQlBMTc5OEI0QTIyMkYxMzNB
MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8sCisJCQkJQTE3
OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIuaCAqLywKKwkJCQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIg
LyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovLAogCQkJCUExODFBNzk3MjFBQ0FDNjEwMDU5QTMx
NiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4MjIxRjZFNTE4MjAwQzQzRjlG
IC8qIFdLQ3Jhc2hSZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIzMUY2RTUxODIwMEM0M0Y5RiAv
KiBXS0NyYXNoUmVwb3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8q
IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAorCQkJCUExNzk4QjQ4MjIyRTUz
MEEwMDA3NjRCRCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkyMzcs
NiArOTI1Miw4IEBACiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDNDODYwMDgyREY3NyAvKiBQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzRBNTgxMTJFNjY2ODEw
MDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNzk4QjNF
MjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxRTEyM0JBMjBBMTE1
NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5NTgy
RDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8sCkBAIC05NTQxLDcgKzk1NTgsNyBAQAogCQkJCTdDNDY5NENBMUE0QjRFQTEwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFC
MUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjFGNzdFMUQxQjMwQTkw
MDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTYwOCw2ICs5NjI1LDcgQEAK
IAkJCQk3QzM2MUQ3OTE5MjgwM0JEMDAzNkE1OUQgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
UHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTU3MzlCQkQxQjQyMDQyRDAwRDI1
OEMxIC8qIFdlYlVzZXJNZWRpYUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNFRTU3NUMx
REI3RDYxMTAwQzc0QzUwIC8qIFdlYlZhbGlkYXRpb25NZXNzYWdlQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1vdmVUb1dp
bmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREZDN0RCQjFCQ0NDMTk1MDBDMTU0
OEMgLyogV2ViVmlld0ltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5Q0Q1NUFBMTI4RTI5NEYw
MDEzM0M4NSAvKiBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMjkyMzJERjQxOEIyOUQ2ODAwRDA1OTZGIC8qIFdLQWNjZXNzaWJpbGl0eVdlYlBh
Z2VPYmplY3RNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtOTc0NCw3ICs5NzYyLDYgQEAKIAkJCQlD
NTQyNTZCQTE4QkVDMThDMDBERTQxNzkgLyogV0tGb3JtU2VsZWN0Q29udHJvbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwOENGNTIxRDYzQzEzQTAwQjQ4REYxIC8qIFdLRm9ybVNlbGVjdFBpY2tl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwOENGNTQxRDYzQzE0MDAwQjQ4REYxIC8qIFdLRm9y
bVNlbGVjdFBvcG92ZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCTU3MkZENDQzMjIyNjVDRTIwMEEx
RUNDMyAvKiBXZWJWaWV3RGlkTW92ZVRvV2luZG93T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDRTQ2OTVBMTIxNEVERjQwMDBCOThFQiAvKiBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3REZBNzAwMTgxMEJCOTIwMDFGNEE5RiAvKiBXS0ZvdW5k
YXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDAxMzlCMTEwRkE0MjAwMDNCOEE2NyAvKiBX
S0ZyYW1lLmggaW4gSGVhZGVycyAqLywKQEAgLTk4NTUsNiArOTg3Miw3IEBACiAJCQkJMUFCOEEx
RjIxODQwMEI2MjAwRTlBRTY5IC8qIFdLUGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUVGRDM4QzE2QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBMTVFRURFNjFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZp
ZXcuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNzk4QjQ5MjIyRTUzMUQwMDA3NjRCRCAvKiBXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkFCNTQx
MTkyQjFDNEEwMDNBOUZEMSAvKiBXS1BERlBhZ2VOdW1iZXJJbmRpY2F0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUExMDQ2RUExMjA3OTI2MzEwMEYwQzVEOCAvKiBXS1BERlZpZXcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDMTM1QUE5MTczQjBCQ0EwMDU4NkFFMiAvKiBXS1BsdWdpbkluZm9ybWF0
aW9uLmggaW4gSGVhZGVycyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363723</attachid>
            <date>2019-03-05 19:33:25 -0800</date>
            <delta_ts>2019-03-05 20:04:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190305193324.patch</filename>
            <type>text/plain</type>
            <size>114048</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi5kZWFiMjdlMzEwYjJlYTY3MWVmZjIz
ZWUzMmM2ZTEzNGI4NWExZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAg
ICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW06CisKIDIwMTktMDMtMDEgIENvbnJh
ZCBTaHVsdHogIDxjb25yYWRfc2h1bHR6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3BlciB1
c2Ugb2YgUExBVEZPUk0oVFZPUykgaW4gUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2ZGI1NjBlMTMxODQ1NmJk
NzlkMWU3YzRmOGZmZmM3NTgyNWVkN2EuLmEwNTc5YjRlNGY4YjJjYTMyNDdhYzFmNmYwMjlkODg5
NzM2MGY3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDE5LTAzLTA1ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBVbnRhbmdsZSBQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZnJvbSBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1MzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp0
b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5
bWVudEVycm9yQ29kZSk6CisgICAgICAgIChXZWJLaXQ6OnRvTlNFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6OnRvTlNFcnJvcnMpOgorICAgICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2Rz
KToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6
OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24pOgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGluaXRXaXRoUHJlc2VudGVyOl0pOgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOgorICAgICAgICAo
LVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246XSk6Cisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6
Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XSk6CisgICAgICAg
ICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6d2lsbEZpbmlzaFdpdGhFcnJvcjpdKToKKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOl0p
OgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cGxhdGZvcm1EZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OmRpc21pc3Mp
OgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpw
cmVzZW50KToKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlIHN1bW1hcnlJdGVtc10pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgc2hpcHBpbmdNZXRob2RzXSk6CisgICAgICAgICgtW1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjplcnJvcjpd
KToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlv
bkRlbGVnYXRlIGNvbXBsZXRlUGF5bWVudFNlc3Npb246ZXJyb3JzOmRpZFJlYWNoRmluYWxTdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOnN1bW1hcnlJdGVtczpzaGlwcGluZ01ldGhvZHM6ZXJy
b3JzOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlIF9pbml0V2l0aFByZXNlbnRlcjpdKToKKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkRmluaXNo
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkUmVxdWVz
dE1lcmNoYW50U2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XSk6CisgICAgICAgICgt
W1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
OmNvbXBsZXRpb246XSk6CisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUg
X3dpbGxGaW5pc2hXaXRoRXJyb3I6XSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZEF1dGhvcml6
ZVBheW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cHJlc2VudGVyRGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0aG9yaXplUGF5
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlk
U2VsZWN0UGF5bWVudE1ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUpOgorICAgICAgICAoV2Vi
S2l0Ojp0b0RlY2ltYWxOdW1iZXIpOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlIGluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlIGludmFsaWRhdGVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjp3aWxsRmluaXNoV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6IERlbGV0ZWQu
CisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmhhbmRsZXI6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
IHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9y
aXplUGF5bWVudDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRpb246XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1l
dGhvZDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OnRvTlNFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnRvTlNF
cnJvcnMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRVSSk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1l
bnRVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRl
UGF5bWVudFVJKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxOS0wMy0wNSAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNh
ZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBm
b2xsb3cgbGlua3Mgd2l0aCAnZG93bmxvYWQnIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0ODk1NTY1MWQ5Y2Mz
YjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRkY2VmMTI1Zjc3YTE0
MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiwg
dm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQS0Nhbk1ha2VQ
YXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIGNvbXBs
ZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Ry
YXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJh
d1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50
QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJh
d1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAotI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKIFNPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCkKIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwg
UEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNz
LCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQYXltZW50RXJy
b3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFE
RVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwg
UEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5k
U291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwg
UEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9t
YWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQppbmRl
eCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44NzI5NzNlNGE5NGFm
NGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBAQCBTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRo
b2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtD
YW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWlu
LCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0b25U
eXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3VhZ2VD
b2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdlQ29k
ZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxB
Ul9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFJl
cXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBAQCBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZp
ZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtDb250YWN0RmllbGQs
IFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtDb250YWN0RmllbGQs
IFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIFBLUGF5
bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcg
KiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXksIFBL
UGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNo
YW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcg
KmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0
aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4NjY5ZGIwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CitPQkpD
X0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0OworY2xhc3MgUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xpZW50IHsKKyAgICAg
ICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBy
ZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGJvb2wgZGlk
UmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50ZXJEaWRT
ZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXNl
bnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50ZXJX
aWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1f
Y2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBk
YXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNsaWVudCkKKyAgICAg
ICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgPSAwOworCitwcml2
YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCIK
KworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKK1NPRlRf
TElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChD
b250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJ
TktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5LCBO
U1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNz
UG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMs
IENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFO
VChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRpdmVB
cmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVu
Y3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cK
Ky8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0g
cmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKwor
c3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykKK3sK
KyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQYXltZW50RXJyb3JD
b2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZSBjb2Rl
KQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5rbm93bkVycm9yOwor
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZh
bGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9y
OworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdElu
dmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFjdEludmFsaWRFcnJv
cjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2Vydmlj
ZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJlc3NVbnNlcnZpY2Vh
YmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vycm9yKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0
TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW3VzZXJJbmZvIHNl
dE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsK
KworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNTdHJpbmcgKnBrQ29u
dGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRkcmVzc0tleSA9IG5p
bDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6CisgICAg
ICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQ
aG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxBZGRyZXNzOgor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpOYW1lOgorICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
TmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1lOgorICAgICAg
ICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhv
bmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzOgor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRkcmVzc0xp
bmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxB
ZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVy
cm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAg
ICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlLZXkoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAgICAgICBwa0NvbnRh
Y3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7
CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFs
Q29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5pc3RyYXRpdmVB
cmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJy
b3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0YXRl
S2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgorICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVz
c0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnlDb2RlOgor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9y
S2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tl
eSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAgICAgICBbdXNlcklu
Zm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQ
YXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAgfQorCisgICAgcmV0
dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVy
cm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5m
bzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05TRXJyb3JzKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7CisgICAgTlNNdXRhYmxl
QXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTplcnJvcnMu
c2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7CisgICAgICAg
IGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAgICAgICAgICAgIFty
ZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
CisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKworI2lmICFIQVZFKFBB
U1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsK
KworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBl
cnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJs
ZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0Nv
bnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAg
ICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bv
c3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3
aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAgICBpZiAoIXVwZGF0
ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUtPmVycm9ycy5zaXpl
KCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3JzWzBdOworICAg
ICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJl
c3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5n
Q29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVy
cm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JT
KQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgc2hp
cHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBwaW5nTWV0aG9kcyA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01ldGhvZHMuc2l6ZSgp
XTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdNZXRob2RzKQorICAg
ICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlw
cGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsKK30KKwordm9pZCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hhbnRTZXNzaW9uKQor
eworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0Zm9ybURlbGVnYXRl
KCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVudE1l
cmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChw
bGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/
IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDog
cGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgp
IGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNdOworfQorCit2b2lk
IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0
KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhBVkUoUEFTU0tJVF9H
UkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0b1BLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0ID8gdG9OU0Vycm9y
cyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJyYXkgKmVycm9ycyA9
IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudFNl
c3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOldlYkNvcmU6Omlz
RmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VS
VChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5nTWV0aG9kcyA9IHVw
ZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGluZ01ldGhvZHMpIDog
cGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0FycmF5ICpzdW1tYXJ5
SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFs
QW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7CisjaWYgSEFW
RShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJvcnMgPSB1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0byBzdGF0dXMgPSBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisgICAgTlNBcnJheSAq
ZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1zOnN1bW1hcnlJdGVt
cyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJvcnNdOworfQorCit2
b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYg
dXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkg
KnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+
bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsK
KyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246
c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTc5MDBjODA0MmYwYjQ1Njg1YzJjODI0MDQyNjJhMjQyODhlMWY1YgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1
ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGU7CitPQkpDX0NM
QVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7CisKK2Ns
YXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgUGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorICAgIFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVu
dCYsIFBLUGF5bWVudFJlcXVlc3QgKik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIFBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6
OkNsaWVudCYsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKTsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIC8vIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyCisgICAg
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgZmluYWw7
CisgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKSBmaW5hbDsKKyNlbmRpZgorCisgICAgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fZGVsZWdhdGU7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY5MGRiN2FkMTFj
MTlkMGRkMWY4YTAzZTY5MzI1ODI0ZmQ4MTM5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIu
bW0KQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKKworI2lmIFVTRShQ
QVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCIKKyNp
bXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworQGludGVyZmFjZSBXS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA6IFdLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxlZ2F0ZT4K
KworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyJilwcmVzZW50ZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCisKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFByZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlciYpcHJlc2VudGVyCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhQ
cmVzZW50ZXI6cHJlc2VudGVyXSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4g
c2VsZjsKK30KKworI3ByYWdtYSBtYXJrIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlCisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRpZEZpbmlzaDooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJv
bGxlcgoreworICAgIFtzZWxmIF9kaWRGaW5pc2hdOworfQorCisjaWYgSEFWRShQQVNTS0lUX0dS
QU5VTEFSX0VSUk9SUykKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRp
ZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgaGFuZGxlcjoodm9pZCAoXiko
UEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uCit7CisgICAg
W3NlbGYgX2RpZEF1dGhvcml6ZVBheW1lbnQ6cGF5bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25d
OworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5kbGVyOih2
b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29t
cGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpzaGlwcGluZ01l
dGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250
YWN0IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRh
dGUgKnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ0Nv
bnRhY3Q6Y29udGFjdCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50
TWV0aG9kICopcGF5bWVudE1ldGhvZCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2Q6cGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25d
OworfQorCisjZWxzZQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlk
QXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0aW9uOih2b2lkKF4p
KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpKWNvbXBsZXRpb24KK3sKKyAgICBbc2VsZiBf
ZGlkQXV0aG9yaXplUGF5bWVudDpwYXltZW50IGNvbXBsZXRpb246Y29tcGxldGlvbl07Cit9CisK
Ky0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01l
dGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KHZvaWQo
XikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5
SXRlbSAqPiAqKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kOnNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246Y29tcGxldGlvbl07Cit9CisKKy0gKHZvaWQp
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBL
Q29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLCBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKiwgTlNBcnJheTxQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqPiAqKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdDpjb250YWN0IGNvbXBsZXRpb246Y29tcGxldGlvbl07Cit9CisKKy0gKHZv
aWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQ
S1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KHZvaWQoXikoTlNBcnJh
eTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2Q6cGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25d
OworfQorCisjZW5kaWYKKworI3ByYWdtYSBtYXJrIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlUHJpdmF0ZQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgd2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgW3Nl
bGYgX3dpbGxGaW5pc2hXaXRoRXJyb3I6ZXJyb3JdOworfQorCistICh2b2lkKXBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjoodm9pZCheKShQS1Bh
eW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNFcnJvciAqKSljb21wbGV0aW9uCit7CisgICAgW3Nl
bGYgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246Y29tcGxldGlvbl07Cit9CisKK0BlbmQKKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQorICAg
IDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xpZW50KQorICAgICwgbV92aWV3Q29u
dHJvbGxlcihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnJlcXVlc3RdKSkKKyAgICAs
IG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQoreworICAgIFttX3Zp
ZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFttX3ZpZXdD
b250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30KKworI2lm
IFBMQVRGT1JNKE1BQykKK1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OlBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
KnZpZXdDb250cm9sbGVyKQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xp
ZW50KQorICAgICwgbV92aWV3Q29udHJvbGxlcih2aWV3Q29udHJvbGxlcikKKyAgICAsIG1fZGVs
ZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQoreworICAgIFttX3ZpZXdDb250
cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFttX3ZpZXdDb250cm9s
bGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30KKyNlbmRpZgorCitX
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgKlBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6OnBsYXRmb3JtRGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2RlbGVnYXRlLmdl
dCgpOworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OmRpc21p
c3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW1ttX3ZpZXdDb250cm9sbGVy
IHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6
WUVTIGNvbXBsZXRpb246bnVsbHB0cl07CisjZW5kaWYKKyAgICBbbV92aWV3Q29udHJvbGxlciBz
ZXREZWxlZ2F0ZTpuaWxdOworICAgIFttX3ZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0
ZTpuaWxdOworICAgIG1fdmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgW21fZGVsZWdhdGUgaW52
YWxpZGF0ZV07CisgICAgbV9kZWxlZ2F0ZSA9IG5pbDsKK30KKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cHJlc2Vu
dChVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIgfHwgIW1fdmlld0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBbcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjptX3ZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVk
OllFUyBjb21wbGV0aW9uOm51bGxwdHJdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
fQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUEFT
U0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjMjNkMDZkOTA2OTk4
ODRmMmFkNDU2MzUxZDQ2NTI0NTQxZTgyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
KworT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0Vycm9yOworT0JKQ19DTEFTUyBV
SVZpZXdDb250cm9sbGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI7CisKK3VzaW5nIERpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25D
b21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNF
cnJvciAqKT47CisKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQordXNpbmcgRGlk
QXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQgKik+OwordXNpbmcgRGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICop
PjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBCbG9ja1B0cjx2
b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKik+OwordXNpbmcgRGlk
U2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKik+OworI2Vsc2UKK3VzaW5nIERpZEF1dGhvcml6
ZVBheW1lbnRDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKT47Cit1c2luZyBEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiA9IEJsb2Nr
UHRyPHZvaWQoTlNBcnJheSAqKT47Cit1c2luZyBEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21w
bGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0Fy
cmF5ICosIE5TQXJyYXkgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0FycmF5
ICopPjsKKyNlbmRpZgorCit9CisKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBkaWRSZWFjaEZpbmFsU3Rh
dGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8UEtQYXltZW50U3Vt
bWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICpzaGlwcGluZ01ldGhvZHM7CisKKy0gKHZv
aWQpY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246KFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAq
KXNlc3Npb24gZXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKy0gKHZvaWQpY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFy
eUl0ZW1zOworLSAodm9pZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBk
aWRSZWFjaEZpbmFsU3RhdGU6KEJPT0wpZGlkUmVhY2hGaW5hbFN0YXRlOworLSAodm9pZCljb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cylzdGF0dXMgc3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICop
c3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+
ICopc2hpcHBpbmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJyb3JzOwor
LSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVu
dFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zOworLSAodm9pZClpbnZhbGlkYXRlOworCitA
ZW5kCisKKy8vIEhlbHBlciBtZXRob2RzIGNhbGxlZCBieSBXS1BheW1lbnRBdXRob3JpemF0aW9u
U2Vzc2lvbidzIHN1YmNsYXNzZXMKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIChQcm90ZWN0ZWQpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhQcmVzZW50ZXI6
KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImKXByZXNlbnRlcjsKKworLSAo
dm9pZClfZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0aW9u
OihXZWJLaXQ6OkRpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxl
dGlvbjsKKy0gKHZvaWQpX2RpZEZpbmlzaDsKKy0gKHZvaWQpX2RpZFJlcXVlc3RNZXJjaGFudFNl
c3Npb246KFdlYktpdDo6RGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb246OkJsb2Nr
VHlwZSljb21wbGV0aW9uOworLSAodm9pZClfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXlt
ZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFBh
eW1lbnRNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOihX
ZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb246OkJsb2NrVHlwZSljb21w
bGV0aW9uOworLSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRo
b2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV93aWxsRmlu
aXNoV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CisKK0BlbmQKKworI2VuZGlmIC8vIFVTRShQ
QVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29h
L1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDI5NmQ1YmYw
YTY1MWQ5Y2Q2ZTZiYjYyMThiYzdjOTlmNDk4Njc0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0K
QEAgLTAsMCArMSwyMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCisKKyNpZiBVU0UoUEFT
U0tJVCkKKworI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Bh
eW1lbnRNZXRob2QuaD4KKworQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZSB7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4+
IF9zdW1tYXJ5SXRlbXM7CisgICAgUmV0YWluUHRyPE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAq
Pj4gX3NoaXBwaW5nTWV0aG9kczsKKyAgICBXZWFrUHRyPFdlYktpdDo6UGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI+IF9wcmVzZW50ZXI7CisgICAgV2ViS2l0OjpEaWRBdXRob3JpemVQYXlt
ZW50Q29tcGxldGlvbiBfZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb247CisgICAgV2ViS2l0
OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiBfZGlkUmVxdWVzdE1lcmNoYW50
U2Vzc2lvbkNvbXBsZXRpb247CisgICAgV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29t
cGxldGlvbiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247CisgICAgV2ViS2l0OjpE
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3RDb21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb247Cit9CisKKy0gKE5TQXJyYXk8
UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAgICByZXR1cm4gX3N1
bW1hcnlJdGVtcy5nZXQoKTsKK30KKworLSAoTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICop
c2hpcHBpbmdNZXRob2RzCit7CisgICAgcmV0dXJuIF9zaGlwcGluZ01ldGhvZHMuZ2V0KCk7Cit9
CisKKy0gKHZvaWQpY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246KFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbiAqKXNlc3Npb24gZXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIHN0ZDo6ZXhj
aGFuZ2UoX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uLCBuaWwpKHNlc3Npb24s
IGVycm9yKTsKK30KKworLSAodm9pZCljb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KE5T
QXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAgICBfc3Vt
bWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJP
UlMpCisgICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVz
dFBheW1lbnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVt
czpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAgc3Rk
OjpleGNoYW5nZShfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkoX3N1bW1h
cnlJdGVtcyk7CisjZW5kaWYKK30KKworLSAodm9pZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJv
ciAqPiAqKWVycm9ycyBkaWRSZWFjaEZpbmFsU3RhdGU6KEJPT0wpZGlkUmVhY2hGaW5hbFN0YXRl
Cit7CisgICAgX2RpZFJlYWNoRmluYWxTdGF0ZSA9IGRpZFJlYWNoRmluYWxTdGF0ZTsKKyNpZiBI
QVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRo
U3RhdHVzOnN0YXR1cyBlcnJvcnM6ZXJyb3JzXSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkQXV0
aG9yaXplUGF5bWVudENvbXBsZXRpb24sIG5pbCkocmVzdWx0LmdldCgpKTsKKyNlbHNlCisgICAg
QVNTRVJUKCFlcnJvcnMuY291bnQpOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZEF1dGhvcml6ZVBh
eW1lbnRDb21wbGV0aW9uLCBuaWwpKHN0YXR1cyk7CisjZW5kaWYKK30KKworLSAodm9pZCljb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cylzdGF0dXMgc3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICop
c3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+
ICopc2hpcHBpbmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJyb3JzCit7
CisgICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKKyAgICBfc2hpcHBpbmdNZXRob2Rz
ID0gc2hpcHBpbmdNZXRob2RzOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisg
ICAgQVNTRVJUKHN0YXR1cyA9PSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2Vzcyk7
CisgICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6ZXJyb3JzIHBheW1l
bnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6X3NoaXBw
aW5nTWV0aG9kcy5nZXQoKV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJU
KCFlcnJvcnMuY291bnQpOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdENvbXBsZXRpb24sIG5pbCkoc3RhdHVzLCBfc2hpcHBpbmdNZXRob2RzLCBfc3VtbWFyeUl0
ZW1zKTsKKyNlbmRpZgorfQorCistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAg
ICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxB
Ul9FUlJPUlMpCisgICAgYXV0byB1cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50
UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1t
YXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworI2Vsc2UK
KyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24sIG5p
bCkoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIF9zdW1tYXJ5SXRlbXMpOwor
I2VuZGlmCit9CisKKy0gKHZvaWQpaW52YWxpZGF0ZQoreworICAgIGlmIChfZGlkQXV0aG9yaXpl
UGF5bWVudENvbXBsZXRpb24pCisgICAgICAgIFtzZWxmIGNvbXBsZXRlUGF5bWVudFNlc3Npb246
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbXSBkaWRSZWFjaEZp
bmFsU3RhdGU6WUVTXTsKK30KKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIChQcm90ZWN0ZWQpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdp
dGhQcmVzZW50ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImKXByZXNl
bnRlcgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworCisgICAgX3ByZXNlbnRlciA9IG1ha2VXZWFrUHRyKHByZXNlbnRlcik7CisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpX2RpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAq
KXBheW1lbnQgY29tcGxldGlvbjooV2ViS2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlv
bjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRBdXRob3JpemVQYXlt
ZW50Q29tcGxldGlvbik7CisgICAgX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uID0gY29t
cGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKKyAgICBp
ZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlUGF5bWVudFNlc3Np
b246UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF0gZGlkUmVh
Y2hGaW5hbFN0YXRlOllFU107CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRp
ZEF1dGhvcml6ZVBheW1lbnQoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudChwYXltZW50KSk7
Cit9CisKKy0gKHZvaWQpX2RpZEZpbmlzaAoreworICAgIGlmIChhdXRvIHByZXNlbnRlciA9IF9w
cmVzZW50ZXIuZ2V0KCkpCisgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyRGlk
RmluaXNoKCpwcmVzZW50ZXIsIF9kaWRSZWFjaEZpbmFsU3RhdGUpOworfQorCistICh2b2lkKV9k
aWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJLaXQ6OkRpZFJlcXVlc3RNZXJjaGFudFNlc3Np
b25Db21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAgIEFTU0VSVCghX2RpZFJl
cXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uKTsKKyAgICBfZGlkUmVxdWVzdE1lcmNoYW50
U2Vzc2lvbkNvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgW1BBTDo6Z2V0UEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFu
dFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CisKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIEFT
U0VSVChfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24pOworCisgICAgICAgICAg
ICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXBy
ZXNlbnRlcikgeworICAgICAgICAgICAgICAgIF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29t
cGxldGlvbihuaWwsIG5pbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlcldpbGxWYWxpZGF0
ZU1lcmNoYW50KCpwcmVzZW50ZXIsIG1lcmNoYW50VVJMKTsKKyAgICAgICAgfSk7CisgICAgfV07
Cit9CisKKy0gKHZvaWQpX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAq
KXBheW1lbnRNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9k
Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRTZWxl
Y3RQYXltZW50TWV0aG9kQ29tcGxldGlvbik7CisgICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RD
b21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRl
ci5nZXQoKTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKworICAgIHByZXNlbnRlci0+Y2xpZW50
KCkucHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQ
YXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKK30KKworLSAodm9pZClfZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KFdlYktpdDo6RGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sK
KyAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsKKyAgICBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBh
dXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIpCisg
ICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBzdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGlu
Z01ldGhvZHM6QFsgXSBlcnJvcnM6QFsgXV07CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnBy
ZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQYXlt
ZW50Q29udGFjdChjb250YWN0KSk7Cit9CisKK3N0YXRpYyBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgdG9TaGlwcGluZ01ldGhvZChQS1NoaXBw
aW5nTWV0aG9kICpzaGlwcGluZ01ldGhvZCkKK3sKKyAgICBBU1NFUlQoc2hpcHBpbmdNZXRob2Qp
OworCisgICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kIHJlc3VsdDsKKyAgICByZXN1bHQuYW1vdW50ID0gc2hpcHBpbmdNZXRob2QuYW1vdW50
LnN0cmluZ1ZhbHVlOworICAgIHJlc3VsdC5kZXRhaWwgPSBzaGlwcGluZ01ldGhvZC5kZXRhaWw7
CisgICAgcmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyOworICAg
IHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5nTWV0aG9kLmxhYmVsOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRo
b2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9k
aWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIgPSBf
cHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4gW3Nl
bGYgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKworICAgIHByZXNlbnRl
ci0+Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoKnByZXNlbnRlciwg
dG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOworfQorCistICh2b2lkKV93aWxsRmlu
aXNoV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKK30KKworQGVuZAorCisjZW5kaWYgLy8g
VVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjQ3NDVlMmViMDhjNmNl
NDMyNTExZTg1MzJiNzIxYmI4OGIyOTVlZi4uYTY5NWM2NzQ0ZWNiOWMyMzY3MzA3YTJmNWI0ZmNj
YmI3YjhhN2ZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZENhbmNlbFBheW1lbnRTZXNzaW9u
KCkKICAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJU
KG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgPT0gTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6Oklk
bGUpOwogCkBAIC0yMzgsMTMgKzIzOCwyMCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6VmFsaWRhdGVNZXJjaGFudCh1cmwuc3RyaW5nKCkpKTsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0aG9yaXplUGF5bWVu
dChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudChQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCiB7CiAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpBdXRob3JpemVkOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1l
bnRDb29yZGluYXRvcjo6RGlkQXV0aG9yaXplUGF5bWVudChwYXltZW50KSk7CiB9CiAKLXZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYg
c2hpcHBpbmdNZXRob2QpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50
ZXJEaWRGaW5pc2goUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBib29sIGRpZFJlYWNo
RmluYWxTdGF0ZSkKK3sKKyAgICBpZiAoIWRpZFJlYWNoRmluYWxTdGF0ZSkKKyAgICAgICAgZGlk
Q2FuY2VsUGF5bWVudFNlc3Npb24oKTsKKyAgICBoaWRlUGF5bWVudFVJKCk7Cit9CisKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApAQCAtMjUyLDcgKzI1
OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkp
OwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGlu
Z0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSk7CiAKQEAgLTI2MCw3ICsyNjcsNyBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6
UGF5bWVudAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0KHNoaXBwaW5nQ29udGFjdCkpOwogfQogCi12b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhv
ZCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmgKaW5kZXggYzE5YjEyYmEzZTgwNGJhZmEyNjAyYzgxY2QwZTkwNDdkMzQ5M2U1Ny4u
Y2FhNWY5NWVjYWNlNmI4MTgyYjc4ZjZhMzk1NzJkNWY5NmVlOWVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC01Niwx
MyArNTcsMTYgQEAgT0JKQ19DTEFTUyBOU1dpbmRvdzsKIE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1ZXN0Owog
T0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIAotY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiB7CitjbGFz
cyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KKyAgICAsIHB1YmxpYyBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNzUs
NiArNzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmly
dHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9u
U2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
PiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSA9IDA7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgICAgIHZpcnR1YWwgTlNXaW5kb3cgKnBheW1lbnRDb29yZGluYXRvclBy
ZXNlbnRpbmdXaW5kb3coY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CkBA
IC04NSwxMiArOTAsNiBAQCBwdWJsaWM6CiAgICAgfldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
KCk7CiAKICAgICB2b2lkIGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7Ci0gICAgdm9pZCB2YWxp
ZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYpOwotICAgIHZvaWQgZGlkQXV0aG9yaXplUGF5bWVudChj
b25zdCBXZWJDb3JlOjpQYXltZW50Jik7Ci0gICAgdm9pZCBkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2QmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChjb25zdCBXZWJDb3Jl
OjpQYXltZW50Q29udGFjdCYpOwotICAgIHZvaWQgZGlkU2VsZWN0UGF5bWVudE1ldGhvZChjb25z
dCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7Ci0KICAgICB2b2lkIGhpZGVQYXltZW50VUkoKTsK
IAogcHJpdmF0ZToKQEAgLTEwMSw2ICsxMDAsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKyAgICAKKyAgICAvLyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cjo6Q2xpZW50CisgICAgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpIGZpbmFsOwor
ICAgIHZvaWQgcHJlc2VudGVyRGlkRmluaXNoKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgYm9vbCBkaWRSZWFjaEZpbmFsU3RhdGUpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyRGlk
U2VsZWN0UGF5bWVudE1ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnRlckRpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJEaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYp
IGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMKICAgICB2b2lkIGF2YWlsYWJsZVBheW1lbnROZXR3b3JrcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKQEAgLTE3Myw4ICsxODAsNyBAQCBw
cml2YXRlOgogICAgICAgICBWYWxpZGF0aW9uQ29tcGxldGUKICAgICB9IG1fbWVyY2hhbnRWYWxp
ZGF0aW9uU3RhdGUgeyBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSB9OwogCi0gICAgUmV0
YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyPiBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXI7CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgdWludDY0X3QgbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggZmJiZWVhZDM3MjYzZDI3
YzdkMzNhMDViYjc2OTU4M2YyNWRmNjE1MS4uNGU5NDJiOTY4YTQzOWU2MzRiZjhhZTdiOTI2M2Nh
NjI0YjM4NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaApA
QCAtMjcsMzcgKzI3LDE4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0ICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgotI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVh
ZGVycy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KIAotQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyUHJp
dmF0ZURlbGVnYXRlPiB7Ci1AcGFja2FnZQotICAgIFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkqIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLSAgICBSZXRhaW5QdHI8TlNB
cnJheT4gX3BheW1lbnRTdW1tYXJ5SXRlbXM7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zaGlw
cGluZ01ldGhvZHM7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotICAgIEJsb2NrUHRyPHZvaWQoUEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKik+IF9zZXNzaW9uQmxvY2s7CisvLyBG
SVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBh
Ym91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0
IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgor
TlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7CitOU0RlY2ltYWxOdW1i
ZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCk7CitQS1BheW1lbnRTdW1t
YXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKK1BLUGF5bWVudFN1bW1hcnlJdGVtVHlw
ZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUpOworUEtTaGlwcGluZ01ldGhvZCAqdG9QS1NoaXBw
aW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZCYpOwogCi0gICAgQk9PTCBfZGlkUmVhY2hGaW5hbFN0YXRlOwotI2lmIEhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRB
dXRob3JpemF0aW9uUmVzdWx0ICopPiBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uOwotICAg
IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKik+IF9k
aWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGlu
Z0NvbnRhY3RVcGRhdGUgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOwot
I2Vsc2UKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpPiBf
cGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQoTlNBcnJheSAq
KT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQo
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqKT4gX2RpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMsIE5TQXJyYXkgKiwgTlNBcnJheSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdENvbXBsZXRpb247Ci0jZW5kaWYKLX0KK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eTooV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYpd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0KLS0g
KHZvaWQpaW52YWxpZGF0ZTsKLQotQGVuZAotCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQVBQ
TEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2Ev
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXgg
YWNlZjk4NGRjMDk5ZDRhMTRiOTEwNzM5OWFiMjNhOGNlNTlhOWY3Yi4uODUwMDk1MGU2MTRhYTE2
YzkxYjk4ZTg2Yjc2YWNhNDRlMGNiMmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQogCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQg
IldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5o
IgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgpAQCAtMzcsMjAyICszNyw2IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
I2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
LVNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCi1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFj
dHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5LCBOU1N0cmluZyAq
KTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ2l0eUtleSwg
TlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVz
c1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RB
TlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNT
dHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0Nv
dW50cnlLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBv
c3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoUEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7Ci0j
ZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlCi0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1lbnRDb29yZGluYXRv
clByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA9ICZ3
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2
b2lkKWludmFsaWRhdGUKLXsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBudWxs
cHRyOwotICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7Ci0jaWYgSEFWRShQ
QVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxl
dGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3Rh
bmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUg
ZXJyb3JzOkBbIF1dKS5nZXQoKSk7Ci0jZWxzZQotICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRD
b21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKLSNlbmRpZgot
ICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsKLSAgICB9Ci19
Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciB3aWxsRmluaXNoV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKLXsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKikpc2Vzc2lvbkJsb2NrCi17Ci0gICAgQVNTRVJUKCFf
c2Vzc2lvbkJsb2NrKTsKLSAgICBfc2Vzc2lvbkJsb2NrID0gc2Vzc2lvbkJsb2NrOwotCi0gICAg
W1BBTDo6Z2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXlt
ZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJy
b3IpIHsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJv
cik7Ci0KLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKLSAgICAgICAgICAgIEFTU0VSVChfc2Vzc2lvbkJsb2NrKTsKLQotICAgICAgICAgICAgaWYg
KCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgICAgICAgICBfc2Vzc2lv
bkJsb2NrKG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT52YWxp
ZGF0ZU1lcmNoYW50KG1lcmNoYW50VVJMKTsKLSAgICAgICAgfSk7Ci0gICAgfV07Ci19Ci0KLXN0
YXRpYyBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRo
b2QgdG9TaGlwcGluZ01ldGhvZChQS1NoaXBwaW5nTWV0aG9kICpzaGlwcGluZ01ldGhvZCkKLXsK
LSAgICBBU1NFUlQoc2hpcHBpbmdNZXRob2QpOwotCi0gICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKLSAgICByZXN1bHQubGFi
ZWwgPSBzaGlwcGluZ01ldGhvZC5sYWJlbDsKLSAgICByZXN1bHQuZGV0YWlsID0gc2hpcHBpbmdN
ZXRob2QuZGV0YWlsOwotICAgIHJlc3VsdC5hbW91bnQgPSBzaGlwcGluZ01ldGhvZC5hbW91bnQu
c3RyaW5nVmFsdWU7Ci0gICAgcmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGluZ01ldGhvZC5pZGVu
dGlmaWVyOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFO
VUxBUl9FUlJPUlMpCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRB
dXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgotewotICAgIGlm
ICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGlu
aXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpA
WyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfcGF5
bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKTsKLSAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0
aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlk
QXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXltZW50KHBheW1lbnQpKTsKLX0KLQotLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBL
UGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50
UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgotewotICAgIGlm
ICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0
aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0UGF5bWVudE1l
dGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKLX0KLQotLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQ
S1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24gewotICAg
IGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBj
b21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwotfQotCi0tICh2
b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
OihQS0NvbnRhY3QgKiljb250YWN0IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgotewotICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgp
IGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0
aG9kczpAWyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
KCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFdlYkNvcmU6OlBheW1lbnRD
b250YWN0KGNvbnRhY3QpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiAhSEFWRShQQVNTS0lUX0dSQU5V
TEFSX0VSUk9SUykKLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1
dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCAoXiko
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykpY29tcGxldGlvbgotewotICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUKCFfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKTsKLSAgICBfcGF5bWVudEF1
dGhvcml6ZWRDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+ZGlkQXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXltZW50KHBheW1lbnQp
KTsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxldGlv
bjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8
UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxldGlvbgotewotICAg
IGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24o
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsIEBbIF0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uKTsKLSAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlv
bjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKLX0KLQotLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVu
dE1ldGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlvbjoodm9pZCAoXikoTlNBcnJheTxQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zKSljb21wbGV0aW9uCi17Ci0gICAgaWYg
KCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihAWyBd
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24gPSBjb21wbGV0aW9uOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRT
ZWxlY3RQYXltZW50TWV0aG9kKFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkp
OwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBOU0FycmF5PFBLU2hpcHBpbmdNZXRo
b2QgKj4gKnNoaXBwaW5nTWV0aG9kcywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAq
c3VtbWFyeUl0ZW1zKSljb21wbGV0aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZSwgQFsgXSwgQFsgXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoV2ViQ29yZTo6UGF5
bWVudENvbnRhY3QoY29udGFjdCkpOwotfQotCi0jZW5kaWYKLQotLSAodm9pZClwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOihQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghX2RpZFJlYWNoRmluYWxT
dGF0ZSkKLSAgICAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRDYW5jZWxQYXlt
ZW50U2Vzc2lvbigpOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5oaWRlUGF5
bWVudFVJKCk7Ci19Ci0KLUBlbmQKLQogLy8gRklYTUU6IE9uY2UgcmRhcjovL3Byb2JsZW0vMjQ0
MjAwMjQgaGFzIGJlZW4gZml4ZWQsIGltcG9ydCBQS1BheW1lbnRSZXF1ZXN0X1ByaXZhdGUuaCBp
bnN0ZWFkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmV0YWluKSBOU1VSTCAqb3JpZ2luYXRpbmdVUkw7CkBAIC0zMjIsNyArMTI2LDcgQEAg
c3RhdGljIFBLQWRkcmVzc0ZpZWxkIHRvUEtBZGRyZXNzRmllbGQoY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXUKIH0KICNlbmRpZgogCi1zdGF0aWMgUEtQYXltZW50U3Vt
bWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQorUEtQYXltZW50U3Vt
bWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDoKQEAgLTMzMywyOCArMTM3LDI4IEBAIHN0YXRpYyBQ
S1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzCiAgICAgfQogfQogCi1zdGF0aWMgTlNEZWNpbWFsTnVtYmVyICp0b0Rl
Y2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCitOU0RlY2ltYWxOdW1iZXIgKnRvRGVj
aW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKIHsKICAgICBpZiAoIWFtb3VudCkKICAg
ICAgICAgcmV0dXJuIFtOU0RlY2ltYWxOdW1iZXIgemVyb107CiAgICAgcmV0dXJuIFtOU0RlY2lt
YWxOdW1iZXIgZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2FsZTpAeyBOU0xvY2Fs
ZURlY2ltYWxTZXBhcmF0b3IgOiBAIi4iIH1dOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPFBLUGF5
bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCitQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQogewogICAgIHJl
dHVybiBbUEFMOjpnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRo
TGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91
bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQog
Ci1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cyYgdG90YWxBbmRMaW5lSXRlbXMpCitOU0FycmF5ICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5l
SXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQogewotICAgIGF1dG8gcGF5bWVudFN1bW1hcnlJdGVt
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIE5TTXV0YWJs
ZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OnRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcy5zaXplKCkgKyAxXTsKICAgICBmb3Ig
KGF1dG8mIGxpbmVJdGVtIDogdG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKSB7Ci0gICAgICAg
IGlmIChhdXRvIHN1bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkp
Ci0gICAgICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW0u
Z2V0KCldOworICAgICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1bW1hcnlJdGVtID0g
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCisgICAgICAgICAgICBbcGF5bWVudFN1
bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwogICAgIH0KIAotICAgIGlmIChhdXRv
IHRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0odG90YWxBbmRMaW5lSXRlbXMudG90
YWwpKQotICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtLmdl
dCgpXTsKKyAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvdGFsSXRlbSA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0odG90YWxBbmRMaW5lSXRlbXMudG90YWwpKQorICAgICAgICBbcGF5bWVu
dFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKIAogICAgIHJldHVybiBwYXltZW50
U3VtbWFyeUl0ZW1zOwogfQpAQCAtMzk5LDkgKzIwMyw5IEBAIHN0YXRpYyBQS1NoaXBwaW5nVHlw
ZSB0b1BLU2hpcHBpbmdUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpTCiAgICAgfQogfQogCi1zdGF0aWMgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHRvUEtT
aGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQorUEtTaGlwcGluZ01ldGhvZCAqdG9Q
S1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCiB7Ci0gICAgUmV0YWluUHRyPFBL
U2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldFBLU2hpcHBpbmdNZXRob2RDbGFzcygp
IHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2lt
YWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CisgICAgUEtTaGlwcGluZ01ldGhvZCAq
cmVzdWx0ID0gW1BBTDo6Z2V0UEtTaGlwcGluZ01ldGhvZENsYXNzKCkgc3VtbWFyeUl0ZW1XaXRo
TGFiZWw6c2hpcHBpbmdNZXRob2QubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihzaGlwcGlu
Z01ldGhvZC5hbW91bnQpXTsKICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c2hpcHBpbmdNZXRo
b2QuaWRlbnRpZmllcl07CiAgICAgW3Jlc3VsdCBzZXREZXRhaWw6c2hpcHBpbmdNZXRob2QuZGV0
YWlsXTsKIApAQCAtNDcwLDE3ICsyNzQsMTcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKIAog
ICAgIGF1dG8gc2hpcHBpbmdNZXRob2RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgZm9yIChhdXRvJiBzaGlwcGluZ01ldGhvZCA6IHBheW1lbnRSZXF1ZXN0
LnNoaXBwaW5nTWV0aG9kcygpKQotICAgICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0
b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpLmdldCgpXTsKKyAgICAgICAgW3NoaXBw
aW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKV07
CiAgICAgW3Jlc3VsdCBzZXRTaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzLmdldCgpXTsK
IAogICAgIGF1dG8gcGF5bWVudFN1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiBwYXltZW50UmVxdWVz
dC5saW5lSXRlbXMoKSkgewotICAgICAgICBpZiAoYXV0byBzdW1tYXJ5SXRlbSA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRl
bXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtLmdldCgpXTsKKyAgICAgICAgaWYgKFBLUGF5bWVudFN1
bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0p
KQorICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVt
XTsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCkpKQotICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVt
cyBhZGRPYmplY3Q6dG90YWxJdGVtLmdldCgpXTsKKyAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0
ZW0gKnRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0ocGF5bWVudFJlcXVlc3QudG90
YWwoKSkpCisgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW1d
OwogCiAgICAgW3Jlc3VsdCBzZXRQYXltZW50U3VtbWFyeUl0ZW1zOnBheW1lbnRTdW1tYXJ5SXRl
bXMuZ2V0KCldOwogCkBAIC01MTMsMjc4ICszMTcsMjkgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0
KGMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKLXN0YXRpYyBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0
dXMpCi17Ci0gICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6RmFpbHVyZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNGYWlsdXJlOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXM6OlBJTlJlcXVpcmVkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1BJTlJlcXVpcmVkOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OwotICAgIH0KLX0KLQotc3RhdGljIFBLUGF5bWVu
dEVycm9yQ29kZSB0b1BLUGF5bWVudEVycm9yQ29kZShXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGUgY29kZSkKLXsKLSAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFVua25vd25F
cnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250
YWN0SW52YWxpZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNoaXBwaW5nQ29udGFjdEludmFs
aWRFcnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0Nv
bnRhY3RJbnZhbGlkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QmlsbGluZ0NvbnRhY3RJbnZh
bGlkRXJyb3I7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkFkZHJlc3NV
bnNlcnZpY2VhYmxlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdBZGRyZXNzVW5z
ZXJ2aWNlYWJsZUVycm9yOwotICAgIH0KLX0KLQotc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiB0
b05TRXJyb3IoY29uc3QgV2ViQ29yZTo6UGF5bWVudEVycm9yJiBlcnJvcikKLXsKLSAgICBhdXRv
IHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
LSAgICBbdXNlckluZm8gc2V0T2JqZWN0OmVycm9yLm1lc3NhZ2UgZm9yS2V5Ok5TTG9jYWxpemVk
RGVzY3JpcHRpb25LZXldOwotCi0gICAgaWYgKGVycm9yLmNvbnRhY3RGaWVsZCkgewotICAgICAg
ICBOU1N0cmluZyAqcGtDb250YWN0RmllbGQgPSBuaWw7Ci0gICAgICAgIE5TU3RyaW5nICpwb3N0
YWxBZGRyZXNzS2V5ID0gbmlsOwotCi0gICAgICAgIHN3aXRjaCAoKmVycm9yLmNvbnRhY3RGaWVs
ZCkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQ
aG9uZU51bWJlcjoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tp
dF9QS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpFbWFpbEFkZHJl
c3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRFbWFpbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6Ok5hbWU6Ci0gICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGROYW1lKCk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpQaG9uZXRpY05hbWU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVs
ZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250
YWN0RmllbGQ6OlBvc3RhbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpBZGRyZXNzTGluZXM6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0
X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0
YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5KCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpTdWJMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRf
UGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3Rh
bEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJMb2NhbGl0eUtleSgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRh
Y3RGaWVsZDo6TG9jYWxpdHk6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0
X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0
YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6UG9zdGFsQ29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFk
ZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5KCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpTdWJBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAg
ICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRp
dmVBcmVhS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxB
ZGRyZXNzU3RhdGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnk6Ci0gICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNz
Q291bnRyeUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291bnRyeUNvZGU6Ci0gICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNz
SVNPQ291bnRyeUNvZGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwa0NvbnRhY3RGaWVsZCBmb3JLZXk6UEFMOjpnZXRf
UGFzc0tpdF9QS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5KCldOwotICAgICAg
ICBpZiAocG9zdGFsQWRkcmVzc0tleSkKLSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
cG9zdGFsQWRkcmVzc0tleSBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSgpXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmdldFBLUGF5bWVudEVycm9yRG9tYWluKCkg
Y29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvTlNFcnJvcnMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4mIGVycm9ycykKLXsKLSAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9yIChj
b25zdCBhdXRvJiBlcnJvciA6IGVycm9ycykgewotICAgICAgICBpZiAoYXV0byBuc0Vycm9yID0g
dG9OU0Vycm9yKGVycm9yKSkKLSAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3Iu
Z2V0KCldOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxzZQotc3RhdGljIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVz
dWx0KQotewotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0KLSAgICBpZiAocmVzdWx0LT5lcnJvcnMuc2l6ZSgpID09
IDEpIHsKLSAgICAgICAgYXV0byYgZXJyb3IgPSByZXN1bHQtPmVycm9yc1swXTsKLSAgICAgICAg
c3dpdGNoIChlcnJvci5jb2RlKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpVbmtub3duOgotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZEJpbGxpbmdQb3N0YWxBZGRyZXNzOwot
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0NvbnRh
Y3RJbnZhbGlkOgotICAgICAgICAgICAgaWYgKGVycm9yLmNvbnRhY3RGaWVsZCAmJiBlcnJvci5j
b250YWN0RmllbGQgPT0gV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3Rh
bEFkZHJlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOwotCi0gICAgICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ0NvbnRhY3Q7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHJlc3VsdC0+c3RhdHVzKSB7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczoKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwotICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLSAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5SZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5SZXF1aXJlZDsKLSAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5JbmNvcnJlY3Q6Ci0gICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOSW5jb3JyZWN0OwotICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6Ci0gICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOTG9ja291dDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci19Ci0jZW5kaWYK
LQogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1l
bnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiYgcmVzdWx0KQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSk7Ci0KLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFJlYWNoRmluYWxTdGF0ZSA9IFdlYkNvcmU6OmlzRmluYWxTdGF0ZVJlc3Vs
dChyZXN1bHQpOwotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBhdXRv
IHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3RhdHVzIDogV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAgYXV0byBwa1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJ
bnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhz
dGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6
IEBbIF1dKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0LmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzKHJlc3VsdCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24g
PSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50
U2Vzc2lvbihyZXN1bHQpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7Ci0gICAgQVNTRVJUKG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2Vzc2lvbkJsb2NrKHBheW1lbnRN
ZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCksIG51bGxwdHIpOwotICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2Vzc2lvbkJs
b2NrID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKHBheW1lbnRNZXJjaGFudFNlc3Npb24pOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+JiB1cGRh
dGUpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7
Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
KTsKLQotICAgIGlmICh1cGRhdGUpCi0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3Vt
bWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwotCi0jaWYgSEFWRShQQVNT
S0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhvZFVwZGF0ZS5nZXQoKSk7
Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNTdWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24gPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQogCi0jaWYgIUhBVkUo
UEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1zdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQotewotICAgIGlmICghdXBkYXRlIHx8
IHVwZGF0ZS0+ZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNTdWNjZXNzOwotCi0gICAgaWYgKHVwZGF0ZS0+ZXJyb3JzLnNpemUoKSA9
PSAxKSB7Ci0gICAgICAgIGF1dG8mIGVycm9yID0gdXBkYXRlLT5lcnJvcnNbMF07Ci0gICAgICAg
IHN3aXRjaCAoZXJyb3IuY29kZSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OkFkZHJlc3NVbnNlcnZpY2VhYmxlOgotICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzczsK
LQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250
YWN0SW52YWxpZDoKLSAgICAgICAgICAgIGlmIChlcnJvci5jb250YWN0RmllbGQgJiYgZXJyb3Iu
Y29udGFjdEZpZWxkID09IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzSW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczsKLQotICAgICAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdDb250YWN0OwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNG
YWlsdXJlOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFTU0VSVChtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAodXBkYXRlKSB7
Ci0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
cGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3
VG90YWxBbmRMaW5lSXRlbXMpOwotCi0gICAgICAgIGF1dG8gc2hpcHBpbmdNZXRob2RzID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGZvciAoYXV0byYg
c2hpcHBpbmdNZXRob2QgOiB1cGRhdGUtPm5ld1NoaXBwaW5nTWV0aG9kcykKLSAgICAgICAgICAg
IFtzaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlwcGluZ01l
dGhvZCkuZ2V0KCldOwotCi0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzID0gV1RGTW92ZShzaGlwcGluZ01ldGhvZHMp
OwotICAgIH0KLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBw
a1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7Ci0gICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgpKTsK
LSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKLSNlbmRp
ZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRob3Jp
emF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1cGRhdGUp
OwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRl
UGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0
aG9kVXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAodXBkYXRlKQotICAgICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMg
PSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsK
LQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBwa1BheW1lbnRN
ZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRN
ZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRl
bXMuZ2V0KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhvZFVw
ZGF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
LmdldCgpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBudWxscHRyOwor
ICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKHVwZGF0ZSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUF2YWlsYWJsZVBheW1lbnROZXR3b3JrcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KaW5kZXggNDMyMzUyNzAyOTk4MDNhMWRmYTBhZGQ4MGFjZTAzMTEw
ZDk4M2QxYS4uNTBjMDEyMTJiYTdhOGZiOGQwZjkxZjlmMWZhNmFkNjhiZjM1ZmRlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjksOCArMjksOCBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbXBvcnQgIkFQSVVJ
Q2xpZW50LmgiCisjaW1wb3J0ICJQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIgogI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLmgiCiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMuaD4KQEAgLTQwLDQ3ICs0MCwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVS
TCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3Ms
IGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fY2xpZW50LnBh
eW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyk7Ci0KLSAgICBp
ZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIW1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0KICAgICBhdXRvIHBheW1lbnRSZXF1ZXN0
ID0gcGxhdGZvcm1QYXltZW50UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJp
bmdzLCByZXF1ZXN0KTsKIAotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCld
KTsKLSAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eToqdGhpc10pOwotICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9
IFtwYXltZW50UmVxdWVzdCBwYXltZW50U3VtbWFyeUl0ZW1zXTsKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcyA9IFtwYXlt
ZW50UmVxdWVzdCBzaGlwcGluZ01ldGhvZHNdOwotCi0gICAgW21fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotCi0gICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxl
ciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwotCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIp
OworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGlu
YXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoKnRoaXMsIHBheW1lbnRSZXF1ZXN0LmdldCgpKTsK
KyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPnByZXNlbnQobV9jbGllbnQucGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCp0aGlzKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRl
UGF5bWVudFVJKCkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUpOwotCi0gICAgW1ttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXSBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZ
RVMgY29tcGxldGlvbjpudWxscHRyXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2F1
dGhvcml6YXRpb25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMu
bW0KaW5kZXggYmQyNTY0YzQzY2M4MjY3NWIzZjkwZjdhZjM1MjhjMDI2YmJhZTVmNC4uMWI1ZGFl
MDEzYWMyMWRjYzY2OGM0NzNiODhlM2M2YzVlNGU3MzQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW1wb3J0ICJQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCkBAIC02NCwxMiArNjQsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7
CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBheW1lbnRDb29yZGluYXRv
clByb3h5OipwYXltZW50Q29vcmRpbmF0b3JQcm94eV0pOwotICAgICAgICBwYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9wYXltZW50U3VtbWFyeUl0ZW1zID0gW3BheW1lbnRSZXF1ZXN0IHBheW1lbnRTdW1tYXJ5SXRl
bXNdOwotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBbcGF5bWVudFJl
cXVlc3Qgc2hpcHBpbmdNZXRob2RzXTsKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IHZpZXdDb250cm9sbGVyOwot
ICAgICAgICBbcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotICAgICAgICBb
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciBzZXRQcml2YXRlRGVsZWdhdGU6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgcGF5
bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29y
ZGluYXRvclByb3h5LCB2aWV3Q29udHJvbGxlcik7CiAKICAgICAgICAgQVNTRVJUKCFwYXltZW50
Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHBheW1lbnRDb29yZGlu
YXRvclByb3h5LT5tX3NoZWV0V2luZG93ID0gW05TV2luZG93IHdpbmRvd1dpdGhDb250ZW50Vmll
d0NvbnRyb2xsZXI6dmlld0NvbnRyb2xsZXJdOwpAQCAtOTAsMjYgKzg1LDIwIEBAIHZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXltZW50VUkoKQogICAgIGlmIChtX3N0YXRl
ID09IFN0YXRlOjpBY3RpdmF0aW5nKSB7CiAgICAgICAgICsrbV9zaG93UGF5bWVudFVJUmVxdWVz
dFNlZWQ7CiAKLSAgICAgICAgQVNTRVJUKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIpOwotICAgICAgICBBU1NFUlQoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlKTsKKyAgICAgICAgQVNTRVJUKCFtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIp
OwogICAgICAgICBBU1NFUlQoIW1fc2hlZXRXaW5kb3cpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0g
ICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsK
KyAgICBBU1NFUlQobV9hdXRob3JpemF0aW9uUHJlc2VudGVyKTsKICAgICBBU1NFUlQobV9zaGVl
dFdpbmRvdyk7CiAKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHJl
bW92ZU9ic2VydmVyOm1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlci5nZXQoKV07CiAgICAg
bV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyID0gbnVsbHB0cjsKIAogICAgIFtbbV9zaGVl
dFdpbmRvdyBzaGVldFBhcmVudF0gZW5kU2hlZXQ6bV9zaGVldFdpbmRvdy5nZXQoKV07Ci0gICAg
W21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwot
ICAgIFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVn
YXRlOm5pbF07Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyID0gbnVs
bHB0cjsKLQotICAgIFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBpbnZhbGlkYXRlXTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5kaXNtaXNz
KCk7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbnVsbHB0cjsKIAogICAgIG1fc2hl
ZXRXaW5kb3cgPSBudWxscHRyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGI3MzFlYjI5
YTc4MzRiZDBiYTQ5OTA2MzUwOTk2ZWI1NDRmNWY5YWYuLjE5ZWEzMTQ3ZTk5ZWE1OWU5YmI0MjBm
NDhmNzRiMjgyZDM4NDQyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTY1LDggKzY1LDEx
IEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2Nv
YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAogUGxhdGZvcm0vY2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKIAorUGxhdGZvcm0v
Y29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KK1BsYXRmb3JtL2NvY29hL1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1NoYXJl
ZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0vY29jb2EvV0tDcmFzaFJlcG9ydGVyLm1tCitQbGF0
Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KIFBsYXRmb3JtL2Nv
Y29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8tdW5pZnkKIAogUGxhdGZvcm0vZm91bmRhdGlvbi9M
b2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApp
bmRleCAyMTU1ZDE0MmU0NGZiYTU0NDU4YmM3MWY1MzkxYmU2ZTA5YjRlODAzLi40NDgzYjNiMjk2
NTNkZmRlMTQ1ZTQ4YjE0MWI5Mjg3MzcyZTUxZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaApAQCAtMTk4Niw2ICsxOTg2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUo
QVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlld0NvbnRyb2xsZXIg
KnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENv
b3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVy
KFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSBmaW5hbDsK
ICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKE1BQykKICAgICBOU1dp
bmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNmQxODVmZGYwOTczZDhiZTJhM2I0YjZkNTM3ZjUw
ZDg0ZTU4NjhkOC4uMDk1YWJlNzcyYjYwOTA5ZmM5MzZkOTNkMzIzMjZjZjU3Y2IwM2U0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0z
OCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0
ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQgIlBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlByaW50SW5mby5o
IgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAi
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMTg3LDYgKzEx
ODgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9v
a0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkp
CiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2ViUGFn
ZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50UmVx
dWVzdCAqcGF5bWVudFJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHks
IHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5Ojpw
YXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRpbmdW
aWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggZTliMDc1Njg1MGQ3ODBkNDU1YjVlMjcyMTNmNDE0ZjQ0OTQ3NzAx
Zi4uNzc5NWRkYTE0NzVjYTIwZGJjNDM1ZmJjOTMyNzFiY2ZhNDNkZTNkOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsNyArMjkz
LDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
QUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCAq
LzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdp
bmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXll
clRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5o
ICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3OEMxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3OTYxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1l
bnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MjFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTcxRDFC
MzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MzFEMUIzNjEzMDA3
QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTEyODQs
NiArMTI4MywxMCBAQAogCQlBMTNEQzY4MjIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlv
blN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRl
VHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUExNUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bh
c3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggKi87IH07CiAJ
CUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc1QzQ0OTIxQUEzMTcw
MDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovOyB9OworCQlBMTc5OEIzRTIyMkQ5
N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk4QjNEMjIyRDk3QTIwMDA3
NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oICovOyB9OworCQlBMTc5OEI0
MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCM0Yy
MjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCAq
LzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJQTE4MUE3OTgyMUFDQzc0QjAwNTlBMzE2IC8qIFdl
YktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi87
IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCMzFCRTZC
RDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlBMTlERDNDMDFEMDdE
MTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUREM0JGMUQwN0QxNjgw
MEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oICovOyB9OwpAQCAt
MjIyOCw3ICsyMjMxLDYgQEAKIAkJMUFCMUY3NzExRDFCMkY3RTAwN0M5QkQxIC8qIFdlYlBheW1l
bnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MzFEMUIyRjdFMDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIx
Rjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjFG
NzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3RDFE
MUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NTMsNiArMzg1NSwx
MyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYXNzd29yZFZpZXcuaDsgcGF0aCA9IGlv
cy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTc1QzQ0
OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVy
c0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCM0QyMjJEOTdBMjAwMDc2NEJEIC8q
IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUEx
Nzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNDAyMjJEOThCNjAwMDc2NEJE
IC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0NzIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0ODIy
MkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgxQTc5NzIxQUNBQzYxMDA1OUEzMTYg
LyogV2ViS2l0QWRkaXRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0QWRkaXRp
b25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1MDA4
N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNzIsNyArNTI4MSw3IEBACiAJCTFBQjFGNzc3MUQx
QjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJCQlBMTc5OEI0QjIyMkYxQkQ0MDAwNzY0QkQgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovLAogCQkJCTFBQjFGNzc5MUQxQjMw
QTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tICovLAogCQkJ
KTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYzODksMTAgKzYzOTgsMTYgQEAKIAkJNDQ1MEFFQkUx
REMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJCQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyog
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8sCisJCQkJQTE3OThCM0YyMjJEOThC
NjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLywKKwkJ
CQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVt
b3J5Q29jb2EuY3BwICovLAogCQkJCUExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRB
ZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4MjIxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jhc2hS
ZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIzMUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVw
b3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAorCQkJCUExNzk4QjQ4MjIyRTUzMEEwMDA3NjRCRCAv
KiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkyNTYsNiArOTI3MSw4IEBA
CiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDNDODYwMDgyREY3NyAvKiBQYWdlTG9hZFN0YXRlT2Jz
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzRBNTgxMTJFNjY2ODEwMDJERkU5OCAvKiBQ
YXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNzk4QjNFMjIyRDk3QTIwMDA3
NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAv
KiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5NTgyRDMxNTNDQkZENzAw
QjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkJGMTI0MjFB
RjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC05
NTYwLDcgKzk1NzcsNyBAQAogCQkJCTdDNDY5NENBMUE0QjRFQTEwMEFENTg0NSAvKiBXZWJQYXN0
ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTcxRDFCMzYx
MzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjFGNzdFMUQxQjMwQTkwMDdDOUJEMSAvKiBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTc5
OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODUwRkU3
MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg3NCw2ICs5ODkxLDcgQEAKIAkJCQkxQUI4QTFG
MjE4NDAwQjYyMDBFOUFFNjkgLyogV0tQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUExNUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmll
dy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDEx
OTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRp
b24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NjgsNiArMTA4ODYsNyBAQAogCQkJCTFCQkJFNEEw
MTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRl
bVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MTdBNTJE
ODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEy
QjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJN
ZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAw
NkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LApAQCAtMTEwNTIsNyArMTEwNzEsNiBAQAogCQkJCTJEODUwOEM2MjEyRTMzRUQwMDBFRjQ2QyAv
KiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4NTA4RDgyMTJFMzNF
RDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDg1
MDhDNTIxMkUzM0VEMDAwRUY0NkMgLyogVW5pZmllZFNvdXJjZTk5LmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNr
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODUwOEQyMjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlm
aWVkU291cmNlMTAwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDkxQjBEMUU3MzJFNEQwMDAw
OTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDRDQ5MUIxNzFFNzM1MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVy
ZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363724</attachid>
            <date>2019-03-05 20:04:09 -0800</date>
            <delta_ts>2019-03-06 15:34:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190305200408.patch</filename>
            <type>text/plain</type>
            <size>114393</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi5kZWFiMjdlMzEwYjJlYTY3MWVmZjIz
ZWUzMmM2ZTEzNGI4NWExZTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oOgorICAg
ICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsubW06CisKIDIwMTktMDMtMDEgIENvbnJh
ZCBTaHVsdHogIDxjb25yYWRfc2h1bHR6QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXByb3BlciB1
c2Ugb2YgUExBVEZPUk0oVFZPUykgaW4gUEFMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU2ZGI1NjBlMTMxODQ1NmJk
NzlkMWU3YzRmOGZmZmM3NTgyNWVkN2EuLmEwNTc5YjRlNGY4YjJjYTMyNDdhYzFmNmYwMjlkODg5
NzM2MGY3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDE5LTAzLTA1ICBBbmR5IEVz
dGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQXBwbGUgUGF5XSBVbnRhbmdsZSBQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZnJvbSBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk1MzQ5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcik6CisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW06IEFkZGVkLgorICAgICAgICAoV2ViS2l0Ojp0
b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5
bWVudEVycm9yQ29kZSk6CisgICAgICAgIChXZWJLaXQ6OnRvTlNFcnJvcik6CisgICAgICAgIChX
ZWJLaXQ6OnRvTlNFcnJvcnMpOgorICAgICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2Rz
KToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6
OmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24pOgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaDogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGluaXRXaXRoUHJlc2VudGVyOl0pOgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOgorICAgICAgICAo
LVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246XSk6Cisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6
Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XSk6CisgICAgICAg
ICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6d2lsbEZpbmlzaFdpdGhFcnJvcjpdKToKKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOl0p
OgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6UGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cGxhdGZvcm1EZWxlZ2F0ZSk6CisgICAg
ICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OmRpc21pc3Mp
OgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpw
cmVzZW50KToKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlIHN1bW1hcnlJdGVtc10pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgc2hpcHBpbmdNZXRob2RzXSk6CisgICAgICAgICgtW1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjplcnJvcjpd
KToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlv
bkRlbGVnYXRlIGNvbXBsZXRlUGF5bWVudFNlc3Npb246ZXJyb3JzOmRpZFJlYWNoRmluYWxTdGF0
ZTpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOnN1bW1hcnlJdGVtczpzaGlwcGluZ01ldGhvZHM6ZXJy
b3JzOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlIF9pbml0V2l0aFByZXNlbnRlcjpdKToKKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkRmluaXNo
XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkUmVxdWVz
dE1lcmNoYW50U2Vzc2lvbjpdKToKKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XSk6CisgICAgICAgICgt
W1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
OmNvbXBsZXRpb246XSk6CisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpj
b21wbGV0aW9uOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUg
X3dpbGxGaW5pc2hXaXRoRXJyb3I6XSk6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZEF1dGhvcml6
ZVBheW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cHJlc2VudGVyRGlkRmluaXNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpwcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0aG9yaXplUGF5
bWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlk
U2VsZWN0UGF5bWVudE1ldGhvZCk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaDoKKyAgICAgICAgKiBTaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbToKKyAg
ICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUpOgorICAgICAgICAoV2Vi
S2l0Ojp0b0RlY2ltYWxOdW1iZXIpOgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKToKKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMpOgorICAg
ICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbik6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlIGluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlIGludmFsaWRhdGVdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjp3aWxsRmluaXNoV2l0aEVycm9yOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6IERlbGV0ZWQu
CisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmhhbmRsZXI6XSk6IERlbGV0ZWQu
CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
IHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmhhbmRsZXI6
XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9y
aXplUGF5bWVudDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRpb246XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1l
dGhvZDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OnRvTlNFcnJvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnRvTlNF
cnJvcnMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRVSSk6CisgICAgICAgICogU2hh
cmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1l
bnRVSSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRl
UGF5bWVudFVJKToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKToKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKwogMjAxOS0wMy0wNSAgRGF2aWQgUXVlc2FkYSAgPGRhdmlkX3F1ZXNh
ZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBm
b2xsb3cgbGlua3Mgd2l0aCAnZG93bmxvYWQnIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0ODk1NTY1MWQ5Y2Mz
YjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRkY2VmMTI1Zjc3YTE0
MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUws
IFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiwg
dm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQS0Nhbk1ha2VQ
YXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21haW4sIGNvbXBs
ZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS0Ry
YXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBDR1JlY3QgZHJh
d1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwgUEtQYXltZW50
QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29udGV4dCwgZHJh
d1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAotI2lmIFBMQVRGT1JN
KElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJF
RCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKIFNPRlRfTElO
S19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCkKIFNP
RlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9uZU51bWJlciwg
UEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05T
VEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNz
LCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFz
c0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQYXltZW50RXJy
b3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NLaXQsIFBLUGF5
bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9IRUFE
RVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2VySW5mb0tleSwg
UEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVBREVSKFBBTCwg
UGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyRG9tYWluQW5k
U291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllciwg
UEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9t
YWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBsZXRpb24pKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQppbmRl
eCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44NzI5NzNlNGE5NGFm
NGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBAQCBTT0ZUX0xJTktf
Q0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hpcHBpbmdNZXRo
b2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmRE
b21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRvbWFpbiwgUEtD
YW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmllciwgZG9tYWlu
LCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfU09VUkNF
KFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0NvbnRleHRSZWYg
Y29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1lbnRCdXR0b25U
eXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAqbGFuZ3VhZ2VD
b2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxhbmd1YWdlQ29k
ZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxB
Ul9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJ
TktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudFJl
cXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9MSU5LX0NMQVNTX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBAQCBTT0ZUX0xJTktf
Q09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZp
ZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQo
UEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtDb250YWN0RmllbGQs
IFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtDb250YWN0RmllbGQs
IFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQ
QUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXksIFBLUGF5
bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcg
KiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJVEhfRVhQT1JU
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXksIFBL
UGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX1NP
VVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNo
YW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAoTlNTdHJpbmcg
KmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VBcHBsaWNhdGlv
blNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlvbiBjb21wbGV0
aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVu
dGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4NjY5ZGIwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29yZS9BcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CitPQkpD
X0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0OworY2xhc3MgUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciA6IHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4geworICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xpZW50IHsKKyAgICAg
ICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHBy
ZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGJvb2wgZGlk
UmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50ZXJEaWRT
ZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3Qg
V2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHByZXNl
bnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50ZXJX
aWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgpIHsgcmV0dXJuIG1f
Y2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNvbXBsZXRlUGF5bWVu
dE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBk
YXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2b2lkIGNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+Jik7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQor
ICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyAgICBleHBs
aWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNsaWVudCkKKyAgICAg
ICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgPSAwOworCitwcml2
YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCIK
KworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKKyNp
bXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NL
aXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKK1NPRlRf
TElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChD
b250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJ
TktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5LCBO
U1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNz
UG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMs
IENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFO
VChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRpdmVB
cmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVu
Y3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cK
Ky8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0g
cmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKwor
c3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cykKK3sK
KyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQYXltZW50RXJyb3JD
b2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZSBjb2Rl
KQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5rbm93bkVycm9yOwor
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZh
bGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9y
OworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdElu
dmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFjdEludmFsaWRFcnJv
cjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2Vydmlj
ZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJlc3NVbnNlcnZpY2Vh
YmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vycm9yKGNvbnN0IFdl
YkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2VySW5mbyA9IGFkb3B0
TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW3VzZXJJbmZvIHNl
dE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsK
KworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNTdHJpbmcgKnBrQ29u
dGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRkcmVzc0tleSA9IG5p
bDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6CisgICAg
ICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQ
aG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxBZGRyZXNzOgor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpOYW1lOgorICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
TmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1lOgorICAgICAg
ICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhv
bmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzOgor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRkcmVzc0xp
bmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bh
c3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxB
ZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVy
cm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAg
ICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlLZXkoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAgICAgICBwa0NvbnRh
Y3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7
CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFs
Q29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5pc3RyYXRpdmVB
cmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJy
b3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0YXRl
S2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgorICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVz
c0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAg
IGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnlDb2RlOgor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9y
S2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tl
eSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAgICAgICBbdXNlcklu
Zm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQ
YXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAgfQorCisgICAgcmV0
dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVy
cm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5m
bzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05TRXJyb3JzKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7CisgICAgTlNNdXRhYmxl
QXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTplcnJvcnMu
c2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7CisgICAgICAg
IGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAgICAgICAgICAgIFty
ZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQor
CisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKworI2lmICFIQVZFKFBB
U1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7CisgICAgaWYgKCFyZXN1
bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsK
KworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBl
cnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJs
ZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0Nv
bnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAg
ICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAg
ICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bv
c3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3
aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9wdGlvbmFsPFdl
YkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAgICBpZiAoIXVwZGF0
ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUtPmVycm9ycy5zaXpl
KCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3JzWzBdOworICAg
ICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJl
c3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5n
Q29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVy
cm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JT
KQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kPiYgc2hp
cHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBwaW5nTWV0aG9kcyA9
IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01ldGhvZHMuc2l6ZSgp
XTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdNZXRob2RzKQorICAg
ICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlw
cGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsKK30KKwordm9pZCBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24o
Y29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hhbnRTZXNzaW9uKQor
eworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0Zm9ybURlbGVnYXRl
KCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVudE1l
cmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChw
bGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/
IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDog
cGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgp
IGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNdOworfQorCit2b2lk
IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVzdWx0
KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhBVkUoUEFTU0tJVF9H
UkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0b1BLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0ID8gdG9OU0Vycm9y
cyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJyYXkgKmVycm9ycyA9
IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudFNl
c3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOldlYkNvcmU6Omlz
RmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VS
VChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5nTWV0aG9kcyA9IHVw
ZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGluZ01ldGhvZHMpIDog
cGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0FycmF5ICpzdW1tYXJ5
SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFs
QW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7CisjaWYgSEFW
RShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJvcnMgPSB1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0byBzdGF0dXMgPSBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisgICAgTlNBcnJheSAq
ZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdhdGUoKSBjb21wbGV0
ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1zOnN1bW1hcnlJdGVt
cyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJvcnNdOworfQorCit2
b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5nTWV0aG9k
U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYg
dXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkg
KnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+
bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsK
KyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246
c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NTUyNmIxNzk2ODU0YjQ2ZTNkMWMzNWJkNTE3YjVlMWEyMjVhNzZmOQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xBU1MgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1
ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGU7CitPQkpDX0NM
QVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlOworCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7CisKK2Ns
YXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwgOiBwdWJsaWMgUGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisgICAgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiwgUEtQYXltZW50UmVxdWVzdCAqKTsKKyNlbmRp
ZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQmLCBQS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICAvLyBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcgorICAgIFdLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZSAqcGxhdGZvcm1EZWxlZ2F0ZSgpIGZpbmFsOworICAgIHZvaWQgZGlzbWlzcygpIGZp
bmFsOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBwcmVzZW50KFVJVmlld0Nv
bnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CisjZW5k
aWYKKworICAgIFJldGFpblB0cjxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+
IG1fdmlld0NvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX2RlbGVnYXRlOworfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDk0NzU4ZDVhMTZmMGU3YWNiNThmYWFjOGNhZWI5Nzcz
MjFlMmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Q
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEsMTczIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCAiV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxwYWwvY29jb2EvUGFzc0tp
dFNvZnRMaW5rLmg+CisKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgOiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgPFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLCBQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+CisKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFByZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJl
c2VudGVyOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcmVzZW50
ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImKXByZXNlbnRlcgorewor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgX2luaXRXaXRoUHJlc2VudGVyOnByZXNlbnRlcl0pKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKyNwcmFnbWEgbWFy
ayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorCistICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBbc2VsZiBfZGlk
RmluaXNoXTsKK30KKworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisKKy0gKHZv
aWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50OihQS1Bh
eW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRBdXRob3JpemVQYXlt
ZW50OnBheW1lbnQgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5n
TWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KK3sKKyAgICBbc2VsZiBf
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjpjb21wbGV0
aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBoYW5kbGVyOih2b2lkICheKShQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24K
K3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbnRhY3QgY29tcGxldGlv
bjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
IGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2Qg
aGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVw
ZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kOnBh
eW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2Vsc2UKKworLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5
bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZEF1dGhvcml6ZVBheW1lbnQ6cGF5
bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2Qg
KilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlvbgor
eworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpzaGlwcGluZ01ldGhvZCBjb21w
bGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBs
ZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheTxQS1No
aXBwaW5nTWV0aG9kICo+ICosIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29t
cGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29udGFjdCBj
b21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVu
dE1ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0g
Kj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kOnBh
eW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2VuZGlmCisKKyNwcmFn
bWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZVByaXZh
dGUKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHdpbGxGaW5pc2hXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtzZWxmIF93aWxsRmluaXNoV2l0aEVycm9y
OmVycm9yXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFJl
cXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICos
IE5TRXJyb3IgKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRSZXF1ZXN0TWVyY2hhbnRT
ZXNzaW9uOmNvbXBsZXRpb25dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0KQor
ICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xpZW50KQorICAgICwgbV92aWV3
Q29udHJvbGxlcihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnJlcXVlc3RdKSkKKyAg
ICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQoreworICAgIFtt
X3ZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFttX3Zp
ZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30KKyNl
bmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjo6UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Q2xpZW50JiBjbGllbnQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIpCisgICAgOiBQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlcihjbGllbnQpCisgICAgLCBtX3ZpZXdDb250cm9sbGVyKHZpZXdDb250cm9sbGVyKQor
ICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUHJlc2VudGVyOip0aGlzXSkpCit7CisgICAg
W21fdmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07CisgICAgW21f
dmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworfQor
I2VuZGlmCisKK1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAqUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjo6cGxhdGZvcm1EZWxlZ2F0ZSgpCit7CisgICAgcmV0dXJuIG1f
ZGVsZWdhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjo6ZGlzbWlzcygpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbW21fdmll
d0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXSBkaXNtaXNzVmlld0NvbnRyb2xs
ZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRyXTsKKyNlbmRpZgorICAgIFttX3ZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW21fdmlld0NvbnRyb2xsZXIgc2V0UHJp
dmF0ZURlbGVnYXRlOm5pbF07CisgICAgbV92aWV3Q29udHJvbGxlciA9IG5pbDsKKyAgICBbbV9k
ZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKKyAgICBtX2RlbGVnYXRlID0gbmlsOworfQorCisjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOjpwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlciB8fCAhbV92aWV3Q29udHJvbGxlcikKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIFtwcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOm1fdmlld0NvbnRyb2xsZXIuZ2V0
KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07CisgICAgY29tcGxldGlvbkhhbmRs
ZXIodHJ1ZSk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmMy
M2QwNmQ5MDY5OTg4NGYyYWQ0NTYzNTFkNDY1MjQ1NDFlODJhMAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFVTRShQQVNTS0lU
KQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBvcnQgPHd0Zi9C
bG9ja1B0ci5oPgorCitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5TRXJyb3I7CitP
QkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjsKKwordXNpbmcgRGlkUmVxdWVzdE1lcmNo
YW50U2Vzc2lvbkNvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudE1lcmNoYW50U2Vz
c2lvbiAqLCBOU0Vycm9yICopPjsKKworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMp
Cit1c2luZyBEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQ
YXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqKT47Cit1c2luZyBEaWRTZWxlY3RQYXltZW50TWV0
aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRo
b2RVcGRhdGUgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9
IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqKT47
Cit1c2luZyBEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lk
KFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT47CisjZWxzZQordXNpbmcg
RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMpPjsKK3VzaW5nIERpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0
aW9uID0gQmxvY2tQdHI8dm9pZChOU0FycmF5ICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMsIE5TQXJyYXkgKiwgTlNBcnJheSAqKT47Cit1c2luZyBEaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMsIE5TQXJyYXkgKik+OworI2VuZGlmCisKK30KKworQGludGVyZmFjZSBXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19V
TkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIGRpZFJl
YWNoRmluYWxTdGF0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNBcnJheTxQ
S1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zOworQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKnNoaXBwaW5nTWV0aG9k
czsKKworLSAodm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uICopc2Vzc2lvbiBlcnJvcjooTlNFcnJvciAqKWVycm9yOworLSAodm9pZCljb21w
bGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0g
Kj4gKilzdW1tYXJ5SXRlbXM7CistICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Npb246KFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+
ICopZXJyb3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9PTClkaWRSZWFjaEZpbmFsU3RhdGU7Cist
ICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5TQXJyYXk8UEtQYXltZW50U3VtbWFy
eUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihOU0FycmF5PFBLU2hpcHBp
bmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4g
KillcnJvcnM7CistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246KE5TQXJy
YXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXM7CistICh2b2lkKWludmFs
aWRhdGU7CisKK0BlbmQKKworLy8gSGVscGVyIG1ldGhvZHMgY2FsbGVkIGJ5IFdLUGF5bWVudEF1
dGhvcml6YXRpb25TZXNzaW9uJ3Mgc3ViY2xhc3NlcworQGludGVyZmFjZSBXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgKFByb3RlY3RlZCkKKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aFByZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2Vu
dGVyOworCistICh2b2lkKV9kaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50
IGNvbXBsZXRpb246KFdlYktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb246OkJsb2Nr
VHlwZSljb21wbGV0aW9uOworLSAodm9pZClfZGlkRmluaXNoOworLSAodm9pZClfZGlkUmVxdWVz
dE1lcmNoYW50U2Vzc2lvbjooV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxl
dGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRTZWxlY3RQYXltZW50TWV0
aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6
RGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uOwor
LSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNv
bXBsZXRpb246KFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjo6Qmxv
Y2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtT
aGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZv
aWQpX3dpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKworQGVuZAorCisjZW5k
aWYgLy8gVVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2Nv
Y29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjY0Mjk2ZDViZjBhNjUxZDljZDZlNmJiNjIxOGJjN2M5OWY0OTg2NzQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDIyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCIKKwor
I2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnQuaD4KKyNpbXBvcnQg
PFdlYkNvcmUvUGF5bWVudE1ldGhvZC5oPgorCitAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIHsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTdW1t
YXJ5SXRlbSAqPj4gX3N1bW1hcnlJdGVtczsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1NoaXBw
aW5nTWV0aG9kICo+PiBfc2hpcHBpbmdNZXRob2RzOworICAgIFdlYWtQdHI8V2ViS2l0OjpQYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gX3ByZXNlbnRlcjsKKyAgICBXZWJLaXQ6OkRpZEF1
dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbjsK
KyAgICBXZWJLaXQ6OkRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uIF9kaWRSZXF1
ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbjsKKyAgICBXZWJLaXQ6OkRpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKKyAg
ICBXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gX2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb247CisgICAgV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24gX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsKK30KKwor
LSAoTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcworeworICAg
IHJldHVybiBfc3VtbWFyeUl0ZW1zLmdldCgpOworfQorCistIChOU0FycmF5PFBLU2hpcHBpbmdN
ZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMKK3sKKyAgICByZXR1cm4gX3NoaXBwaW5nTWV0aG9k
cy5nZXQoKTsKK30KKworLSAodm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uICopc2Vzc2lvbiBlcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cisg
ICAgc3RkOjpleGNoYW5nZShfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24sIG5p
bCkoc2Vzc2lvbiwgZXJyb3IpOworfQorCistICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNl
bGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcwor
eworICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7CisjaWYgSEFWRShQQVNTS0lUX0dS
QU5VTEFSX0VSUk9SUykKKyAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50
U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9k
aWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworI2Vs
c2UKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiwg
bmlsKShfc3VtbWFyeUl0ZW1zKTsKKyNlbmRpZgorfQorCistICh2b2lkKWNvbXBsZXRlUGF5bWVu
dFNlc3Npb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNB
cnJheTxOU0Vycm9yICo+ICopZXJyb3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9PTClkaWRSZWFj
aEZpbmFsU3RhdGUKK3sKKyAgICBfZGlkUmVhY2hGaW5hbFN0YXRlID0gZGlkUmVhY2hGaW5hbFN0
YXRlOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byByZXN1bHQg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNl
KCkgaW5pdFdpdGhTdGF0dXM6c3RhdHVzIGVycm9yczplcnJvcnNdKTsKKyAgICBzdGQ6OmV4Y2hh
bmdlKF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiwgbmlsKShyZXN1bHQuZ2V0KCkpOwor
I2Vsc2UKKyAgICBBU1NFUlQoIWVycm9ycy5jb3VudCk7CisgICAgc3RkOjpleGNoYW5nZShfZGlk
QXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24sIG5pbCkoc3RhdHVzKTsKKyNlbmRpZgorfQorCist
ICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5TQXJyYXk8UEtQYXltZW50U3VtbWFy
eUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihOU0FycmF5PFBLU2hpcHBp
bmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4g
KillcnJvcnMKK3sKKyAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOworICAgIF9zaGlw
cGluZ01ldGhvZHMgPSBzaGlwcGluZ01ldGhvZHM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFS
X0VSUk9SUykKKyAgICBBU1NFUlQoc3RhdHVzID09IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNTdWNjZXNzKTsKKyAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpl
cnJvcnMgcGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0
aG9kczpfc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworI2Vsc2UK
KyAgICBBU1NFUlQoIWVycm9ycy5jb3VudCk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0
U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiwgbmlsKShzdGF0dXMsIF9zaGlwcGluZ01ldGhvZHMs
IF9zdW1tYXJ5SXRlbXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01l
dGhvZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJ
dGVtcworeworICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7CisjaWYgSEFWRShQQVNT
S0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRo
UGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgc3RkOjpleGNo
YW5nZShfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5nZXQo
KSk7CisjZWxzZQorICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29t
cGxldGlvbiwgbmlsKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzcywgX3N1bW1h
cnlJdGVtcyk7CisjZW5kaWYKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7CisgICAgaWYgKF9k
aWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbikKKyAgICAgICAgW3NlbGYgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbjpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFtd
IGRpZFJlYWNoRmluYWxTdGF0ZTpZRVNdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBX
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgKFByb3RlY3RlZCkKKworLSAoaW5zdGFuY2V0
eXBlKV9pbml0V2l0aFByZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYpcHJlc2VudGVyCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisKKyAgICBfcHJlc2VudGVyID0gbWFrZVdlYWtQdHIocHJlc2VudGVy
KTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClfZGlkQXV0aG9yaXplUGF5bWVudDoo
UEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZEF1dGhvcml6ZVBheW1l
bnRDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAgIEFTU0VSVCghX2RpZEF1
dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uKTsKKyAgICBfZGlkQXV0aG9yaXplUGF5bWVudENvbXBs
ZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdl
dCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVQ
YXltZW50U2Vzc2lvbjpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6
QFsgXSBkaWRSZWFjaEZpbmFsU3RhdGU6WUVTXTsKKworICAgIHByZXNlbnRlci0+Y2xpZW50KCku
cHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQYXltZW50
KHBheW1lbnQpKTsKK30KKworLSAodm9pZClfZGlkRmluaXNoCit7CisgICAgaWYgKGF1dG8gcHJl
c2VudGVyID0gX3ByZXNlbnRlci5nZXQoKSkKKyAgICAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5w
cmVzZW50ZXJEaWRGaW5pc2goKnByZXNlbnRlciwgX2RpZFJlYWNoRmluYWxTdGF0ZSk7Cit9CisK
Ky0gKHZvaWQpX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KFdlYktpdDo6RGlkUmVxdWVzdE1l
cmNoYW50U2Vzc2lvbkNvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNT
RVJUKCFfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24pOworICAgIF9kaWRSZXF1
ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBbUEFMOjpn
ZXRQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2
aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVycm9yKTsKKwor
ICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeeworICAg
ICAgICAgICAgQVNTRVJUKF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbik7CisK
KyAgICAgICAgICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKKyAgICAgICAg
ICAgIGlmICghcHJlc2VudGVyKSB7CisgICAgICAgICAgICAgICAgX2RpZFJlcXVlc3RNZXJjaGFu
dFNlc3Npb25Db21wbGV0aW9uKG5pbCwgbmlsKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVy
V2lsbFZhbGlkYXRlTWVyY2hhbnQoKnByZXNlbnRlciwgbWVyY2hhbnRVUkwpOworICAgICAgICB9
KTsKKyAgICB9XTsKK30KKworLSAodm9pZClfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXlt
ZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFBh
eW1lbnRNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAgIEFTU0VS
VCghX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKTsKKyAgICBfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIg
PSBfcHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4g
W3NlbGYgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOkBbIF1dOworCisgICAgcHJlc2Vu
dGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKCpwcmVzZW50ZXIs
IFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOworfQorCistICh2b2lkKV9k
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoo
V2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29t
cGxldGlvbgoreworICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRp
b24pOworICAgIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gY29tcGxldGlv
bjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKKyAgICBpZiAoIXBy
ZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2Vs
ZWN0aW9uOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIHN1bW1hcnlJdGVtczpA
WyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdIGVycm9yczpAWyBdXTsKKworICAgIHByZXNlbnRlci0+
Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KCpwcmVzZW50ZXIsIFdl
YkNvcmU6OlBheW1lbnRDb250YWN0KGNvbnRhY3QpKTsKK30KKworc3RhdGljIFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCB0b1NoaXBwaW5nTWV0
aG9kKFBLU2hpcHBpbmdNZXRob2QgKnNoaXBwaW5nTWV0aG9kKQoreworICAgIEFTU0VSVChzaGlw
cGluZ01ldGhvZCk7CisKKyAgICBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QgcmVzdWx0OworICAgIHJlc3VsdC5hbW91bnQgPSBzaGlwcGluZ01l
dGhvZC5hbW91bnQuc3RyaW5nVmFsdWU7CisgICAgcmVzdWx0LmRldGFpbCA9IHNoaXBwaW5nTWV0
aG9kLmRldGFpbDsKKyAgICByZXN1bHQuaWRlbnRpZmllciA9IHNoaXBwaW5nTWV0aG9kLmlkZW50
aWZpZXI7CisgICAgcmVzdWx0LmxhYmVsID0gc2hpcHBpbmdNZXRob2QubGFiZWw7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCistICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtT
aGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAg
IEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbik7CisgICAgX2RpZFNl
bGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBhdXRvIHBy
ZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIpCisgICAgICAg
IHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOkBbIF1dOworCisg
ICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhvZCgq
cHJlc2VudGVyLCB0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7Cit9CisKKy0gKHZv
aWQpX3dpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworfQorCitAZW5kCisK
KyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAppbmRleCBiNDc0
NWUyZWIwOGM2Y2U0MzI1MTFlODUzMmI3MjFiYjg4YjI5NWVmLi5hNjk1YzY3NDRlY2I5YzIzNjcz
MDdhMmY1YjRmY2NiYjdiOGE3ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCkBAIC0yMzAs
NyArMjMwLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQ2FuY2VsUGF5
bWVudFNlc3Npb24oKQogICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwogfQogCi12b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQor
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyV2lsbFZhbGlkYXRlTWVy
Y2hhbnQoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBVUkwmIHVybCkKIHsK
ICAgICBBU1NFUlQobV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9PSBNZXJjaGFudFZhbGlkYXRp
b25TdGF0ZTo6SWRsZSk7CiAKQEAgLTIzOCwxMyArMjM4LDIwIEBAIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJiB1cmwpCiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpWYWxpZGF0ZU1lcmNoYW50KHVybC5z
dHJpbmcoKSkpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRBdXRo
b3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVu
dCkKIHsKICAgICBtX3N0YXRlID0gU3RhdGU6OkF1dGhvcml6ZWQ7CiAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRBdXRob3JpemVQYXltZW50KHBheW1lbnQpKTsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBw
aW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGJv
b2wgZGlkUmVhY2hGaW5hbFN0YXRlKQoreworICAgIGlmICghZGlkUmVhY2hGaW5hbFN0YXRlKQor
ICAgICAgICBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOworICAgIGhpZGVQYXltZW50VUkoKTsK
K30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2VsZWN0
U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBw
aW5nTWV0aG9kKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogCkBA
IC0yNTIsNyArMjU5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXkKICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKHNoaXBw
aW5nTWV0aG9kKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdChjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgc2hpcHBp
bmdDb250YWN0KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29u
c3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKIHsKICAgICBBU1NF
UlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApAQCAtMjYwLDcgKzI2Nyw3IEBAIHZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChjb25z
dCBXZWJDb3JlOjpQYXltZW50CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5h
dG9yOjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0KSk7CiB9CiAKLXZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFBheW1lbnRNZXRob2QoY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKK3ZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QoUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBw
YXltZW50TWV0aG9kKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaAppbmRleCBjMTliMTJiYTNlODA0YmFmYTI2MDJjODFjZDBlOTA0
N2QzNDkzZTU3Li5jYWE1Zjk1ZWNhY2U2YjgxODJiNzhmNmEzOTU3MmQ1Zjk2ZWU5ZWRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk1lc3NhZ2VS
ZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRlICJQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5bWVudEhlYWRl
cnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIu
aD4KQEAgLTU2LDEzICs1NywxNiBAQCBPQkpDX0NMQVNTIE5TV2luZG93OwogT0JKQ19DTEFTUyBQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNTIFBLUGF5bWVu
dFJlcXVlc3Q7CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7Ci1PQkpDX0NMQVNTIFdLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OwogCi1jbGFzcyBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUgSVBDOjpNZXNz
YWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk+IHsKK2NsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CisgICAgOiBwcml2YXRlIElQ
Qzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlcgorICAg
ICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PgorICAg
ICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQgewogcHVibGlj
OgogICAgIHN0cnVjdCBDbGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSA9IGRlZmF1
bHQ7CkBAIC03NSw2ICs3OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgICAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNl
bnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpID0g
MDsKICAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGluYXRvckNURGF0
YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI+IHBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopID0gMDsKICNlbmRp
ZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdmlydHVhbCBOU1dpbmRvdyAqcGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSYpID0gMDsKQEAgLTg1LDEyICs5MCw2IEBAIHB1YmxpYzoKICAgICB+V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkoKTsKIAogICAgIHZvaWQgZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKLSAg
ICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7Ci0gICAgdm9pZCBkaWRBdXRob3Jp
emVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpTaGlwcGluZ01ldGhvZCYpOwotICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNv
bnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7Ci0gICAgdm9pZCBkaWRTZWxlY3RQYXltZW50
TWV0aG9kKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKTsKLQogICAgIHZvaWQgaGlkZVBh
eW1lbnRVSSgpOwogCiBwcml2YXRlOgpAQCAtMTAxLDYgKzEwMCwxNCBAQCBwcml2YXRlOgogICAg
IC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVzc2FnZVNlbmRl
ckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdlU2VuZGVyRGVz
dGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIAorICAgIC8vIFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyOjpDbGllbnQKKyAgICB2b2lkIHByZXNlbnRlckRpZEF1dGhvcml6ZVBheW1l
bnQoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50
JikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJEaWRGaW5pc2goUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXImLCBib29sIGRpZFJlYWNoRmluYWxTdGF0ZSkgZmluYWw7CisgICAgdm9pZCBw
cmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpIGZpbmFsOworICAgIHZvaWQgcHJl
c2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKSBmaW5hbDsKKyAgICB2b2lkIHBy
ZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBw
aW5nTWV0aG9kJikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFu
dChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFVSTCYpIGZpbmFsOwogCiAg
ICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgYXZhaWxhYmxlUGF5bWVudE5ldHdvcmtz
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwpAQCAtMTczLDgg
KzE4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbGlkYXRpb25Db21wbGV0ZQogICAgIH0gbV9t
ZXJjaGFudFZhbGlkYXRpb25TdGF0ZSB7IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxlIH07
CiAKLSAgICBSZXRhaW5QdHI8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPiBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI7Ci0gICAgUmV0YWluUHRyPFdLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IG1fYXV0aG9yaXphdGlvblByZXNlbnRlcjsKIAogI2lm
IFBMQVRGT1JNKE1BQykKICAgICB1aW50NjRfdCBtX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZCB7
IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAppbmRleCBmYmJl
ZWFkMzcyNjNkMjdjN2QzM2EwNWJiNzY5NTgzZjI1ZGY2MTUxLi40ZTk0MmI5NjhhNDM5ZTYzNGJm
OGFlN2I5MjYzY2E2MjRiMzg2ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
cHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5oCkBAIC0yNywzNyArMjcsMTggQEAKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAK
LSNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCi0jaW1wb3J0IDxXZWJDb3Jl
L1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4K
LSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCi1AaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIDogTlNPYmplY3QgPFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+IHsKLUBwYWNrYWdlCi0gICAgV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSogX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwotICAgIFJl
dGFpblB0cjxOU0FycmF5PiBfcGF5bWVudFN1bW1hcnlJdGVtczsKLSAgICBSZXRhaW5QdHI8TlNB
cnJheT4gX3NoaXBwaW5nTWV0aG9kczsKK25hbWVzcGFjZSBXZWJLaXQgewogCi0gICAgQmxvY2tQ
dHI8dm9pZChQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNFcnJvciAqKT4gX3Nlc3Npb25C
bG9jazsKKy8vIEZJWE1FOiBSYXRoZXIgdGhhbiBoYXZpbmcgdGhlc2UgZnJlZSBmdW5jdGlvbnMg
c2NhdHRlcmVkIGFib3V0LCBBcHBsZSBQYXkgZGF0YSB0eXBlcyBzaG91bGQga25vdworLy8gaG93
IHRvIGNvbnZlcnQgdGhlbXNlbHZlcyB0byBhbmQgZnJvbSB0aGVpciBwbGF0Zm9ybSByZXByZXNl
bnRhdGlvbnMuCitOU0FycmF5ICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmKTsKK05T
RGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KTsKK1BL
UGF5bWVudFN1bW1hcnlJdGVtICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYpOworUEtQYXltZW50U3Vt
bWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSk7CitQS1NoaXBwaW5nTWV0aG9k
ICp0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJik7CiAKLSAgICBCT09MIF9kaWRSZWFjaEZpbmFsU3Rh
dGU7Ci0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBCbG9ja1B0cjx2b2lk
KFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKik+IF9wYXltZW50QXV0aG9yaXplZENvbXBs
ZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVw
ZGF0ZSAqKT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRy
PHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopPiBfZGlkU2VsZWN0
U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVx
dWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENv
bXBsZXRpb247Ci0jZWxzZQotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cyk+IF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9p
ZChOU0FycmF5ICopPiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247Ci0gICAgQmxv
Y2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0FycmF5ICopPiBfZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqLCBOU0FycmF5ICopPiBfZGlkU2VsZWN0
U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKLSNlbmRpZgotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1lbnRDb29yZGluYXRvclByb3h5OihX
ZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3ZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTsKLQotLSAodm9pZClpbnZhbGlkYXRlOwotCi1AZW5kCi0KLSNlbmRpZgorI2VuZGlmIC8v
IEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbQppbmRleCBhY2VmOTg0ZGMwOTlkNGExNGI5MTA3Mzk5YWIyM2E4Y2U1OWE5ZjdiLi44NTAw
OTUwZTYxNGFhMTZjOTFiOThlODZiNzZhY2E0NGUwY2IyZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiAKKyNpbXBvcnQgIldLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKLSNpbXBvcnQgIldlYlBy
b2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxwYWwvY29j
b2EvUGFzc0tpdFNvZnRMaW5rLmg+CkBAIC0zNywyMDIgKzM3LDYgQEAKICNpbXBvcnQgPHd0Zi9S
dW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVM
QVJfRVJST1JTKQotU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKLVNPRlRfTElOS19DT05T
VEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAqKTsKLVNP
RlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXks
IE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJl
c3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Q
b3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RhdGVLZXksIE5TU3RyaW5n
ICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NQb3N0YWxD
b2RlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29u
dGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKLVNP
RlRfTElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0
cmluZyAqKTsKLSNlbmRpZgotCi1AaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKXdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Ci17Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5ID0gJndlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwotCi0gICAgcmV0dXJuIHNlbGY7
Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQotewotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSA9IG51bGxwdHI7Ci0gICAgaWYgKF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24pIHsK
LSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgICAgICBfcGF5bWVudEF1dGhv
cml6ZWRDb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKLSNlbHNlCi0gICAgICAgIF9wYXltZW50
QXV0aG9yaXplZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUp
OwotI2VuZGlmCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24gPSBudWxscHRy
OwotICAgIH0KLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHdpbGxG
aW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotfQotCi0tICh2b2lkKXBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjoodm9pZCheKShQ
S1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNFcnJvciAqKSlzZXNzaW9uQmxvY2sKLXsKLSAg
ICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwotICAgIF9zZXNzaW9uQmxvY2sgPSBzZXNzaW9uQmxv
Y2s7Ci0KLSAgICBbUEFMOjpnZXRQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJD
bGFzcygpIHBheW1lbnRTZXJ2aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBO
U0Vycm9yICplcnJvcikgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBMT0dfRVJS
T1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJv
ciAlQCIsIGVycm9yKTsKLQotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgQVNTRVJUKF9zZXNzaW9uQmxvY2spOwotCi0gICAg
ICAgICAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICAgICAg
ICAgIF9zZXNzaW9uQmxvY2sobnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHktPnZhbGlkYXRlTWVyY2hhbnQobWVyY2hhbnRVUkwpOwotICAgICAgICB9KTsKLSAgICB9
XTsKLX0KLQotc3RhdGljIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZCB0b1NoaXBwaW5nTWV0aG9kKFBLU2hpcHBpbmdNZXRob2QgKnNoaXBwaW5n
TWV0aG9kKQotewotICAgIEFTU0VSVChzaGlwcGluZ01ldGhvZCk7Ci0KLSAgICBXZWJDb3JlOjpB
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgcmVzdWx0OwotICAg
IHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5nTWV0aG9kLmxhYmVsOwotICAgIHJlc3VsdC5kZXRhaWwg
PSBzaGlwcGluZ01ldGhvZC5kZXRhaWw7Ci0gICAgcmVzdWx0LmFtb3VudCA9IHNoaXBwaW5nTWV0
aG9kLmFtb3VudC5zdHJpbmdWYWx1ZTsKLSAgICByZXN1bHQuaWRlbnRpZmllciA9IHNoaXBwaW5n
TWV0aG9kLmlkZW50aWZpZXI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0jaWYgSEFWRShQ
QVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgaGFuZGxlcjoo
dm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9u
Ci17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29t
cGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdElu
c3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1
cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlQoIV9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24pOwotICAgIF9wYXltZW50QXV0aG9y
aXplZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LT5kaWRBdXRob3JpemVQYXltZW50KFdlYkNvcmU6OlBheW1lbnQocGF5bWVudCkpOwot
fQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBoYW5kbGVyOih2b2lkIChe
KShQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9u
Ci17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29t
cGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlv
biA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxl
Y3RQYXltZW50TWV0aG9kKFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOwot
fQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBp
bmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5kbGVyOih2b2lk
ICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxl
dGlvbiB7Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0
aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdl
dCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kQ29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29t
cGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5k
aWRTZWxlY3RTaGlwcGluZ01ldGhvZCh0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7
Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uCi17Ci0g
ICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlv
bihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0
ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOkBbIF0g
c2hpcHBpbmdNZXRob2RzOkBbIF1dKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsKLSAgICBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoV2ViQ29y
ZTo6UGF5bWVudENvbnRhY3QoY29udGFjdCkpOwotfQotCi0jZW5kaWYKLQotI2lmICFIQVZFKFBB
U1NLSVRfR1JBTlVMQVJfRVJST1JTKQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0aW9u
Oih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSljb21wbGV0aW9uCi17Ci0g
ICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlv
bihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlQoIV9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24pOwotICAg
IF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotCi0gICAgX3dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRBdXRob3JpemVQYXltZW50KFdlYkNvcmU6OlBheW1l
bnQocGF5bWVudCkpOwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhv
ZCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1
cywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zKSljb21wbGV0
aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSwgQFsgXSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24g
PSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0
U2hpcHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwotfQotCi0t
ICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkICheKShO
U0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb24K
LXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21w
bGV0aW9uKEBbIF0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlk
U2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RQYXltZW50TWV0
aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHktPmRpZFNlbGVjdFBheW1lbnRNZXRob2QoV2ViQ29yZTo6UGF5bWVudE1ldGhvZChwYXlt
ZW50TWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBk
aWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjoo
dm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8UEtT
aGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzLCBOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlLCBAWyBdLCBAWyBdKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24pOwot
ICAgIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAg
ICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChX
ZWJDb3JlOjpQYXltZW50Q29udGFjdChjb250YWN0KSk7Ci19Ci0KLSNlbmRpZgotCi0tICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKLXsKLSAgICBpZiAoIV93ZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFfZGlk
UmVhY2hGaW5hbFN0YXRlKQotICAgICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRp
ZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHktPmhpZGVQYXltZW50VUkoKTsKLX0KLQotQGVuZAotCiAvLyBGSVhNRTogT25jZSByZGFyOi8v
cHJvYmxlbS8yNDQyMDAyNCBoYXMgYmVlbiBmaXhlZCwgaW1wb3J0IFBLUGF5bWVudFJlcXVlc3Rf
UHJpdmF0ZS5oIGluc3RlYWQuCiBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3QgKCkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIE5TVVJMICpvcmlnaW5hdGluZ1VSTDsKQEAgLTMyMiw3
ICsxMjYsNyBAQCBzdGF0aWMgUEtBZGRyZXNzRmllbGQgdG9QS0FkZHJlc3NGaWVsZChjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdQogfQogI2VuZGlmCiAKLXN0YXRpYyBQ
S1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlIHR5cGUpCitQ
S1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlIHR5cGUpCiB7
CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OkZpbmFsOgpAQCAtMzMzLDI4ICsxMzcsMjgg
QEAgc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVt
VHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3MKICAgICB9CiB9CiAKLXN0YXRpYyBOU0RlY2ltYWxO
dW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKK05TRGVjaW1hbE51
bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogewogICAgIGlmICgh
YW1vdW50KQogICAgICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsKICAgICByZXR1
cm4gW05TRGVjaW1hbE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91bnQgbG9jYWxl
OkB7IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07CiB9CiAKLXN0YXRpYyBSZXRh
aW5QdHI8UEtQYXltZW50U3VtbWFyeUl0ZW0+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRl
bSkKK1BLUGF5bWVudFN1bW1hcnlJdGVtICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0p
CiB7CiAgICAgcmV0dXJuIFtQQUw6OmdldFBLUGF5bWVudFN1bW1hcnlJdGVtQ2xhc3MoKSBzdW1t
YXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKGxp
bmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShsaW5lSXRlbS50
eXBlKV07CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdG9QS1BheW1lbnRTdW1tYXJ5
SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFs
QW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykKK05TQXJyYXkgKnRvUEtQYXltZW50U3Vt
bWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpU
b3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCiB7Ci0gICAgYXV0byBwYXltZW50
U3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Cisg
ICAgTlNNdXRhYmxlQXJyYXkgKnBheW1lbnRTdW1tYXJ5SXRlbXMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXlXaXRoQ2FwYWNpdHk6dG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zLnNpemUoKSArIDFd
OwogICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiB0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMp
IHsKLSAgICAgICAgaWYgKGF1dG8gc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVt
KGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpz
dW1tYXJ5SXRlbS5nZXQoKV07CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3Vt
bWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAgICAgICAgICAg
IFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CiAgICAgfQogCi0g
ICAgaWYgKGF1dG8gdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbSh0b3RhbEFuZExp
bmVJdGVtcy50b3RhbCkpCi0gICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0
b3RhbEl0ZW0uZ2V0KCldOworICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG90YWxJdGVt
ID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbSh0b3RhbEFuZExpbmVJdGVtcy50b3RhbCkpCisgICAg
ICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW1dOwogCiAgICAgcmV0
dXJuIHBheW1lbnRTdW1tYXJ5SXRlbXM7CiB9CkBAIC0zOTksOSArMjAzLDkgQEAgc3RhdGljIFBL
U2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlMKICAgICB9CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8UEtTaGlwcGluZ01l
dGhvZD4gdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCitQS1NoaXBwaW5n
TWV0aG9kICp0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKIHsKLSAgICBS
ZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW1BBTDo6Z2V0UEtTaGlwcGluZ01l
dGhvZENsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdNZXRob2QubGFiZWwgYW1v
dW50OnRvRGVjaW1hbE51bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQpXTsKKyAgICBQS1NoaXBw
aW5nTWV0aG9kICpyZXN1bHQgPSBbUEFMOjpnZXRQS1NoaXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1t
YXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVt
YmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOwogICAgIFtyZXN1bHQgc2V0SWRlbnRpZmllcjpz
aGlwcGluZ01ldGhvZC5pZGVudGlmaWVyXTsKICAgICBbcmVzdWx0IHNldERldGFpbDpzaGlwcGlu
Z01ldGhvZC5kZXRhaWxdOwogCkBAIC00NzAsMTcgKzI3NCwxNyBAQCBSZXRhaW5QdHI8UEtQYXlt
ZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5bWVudFJl
cXVlc3QoYwogCiAgICAgYXV0byBzaGlwcGluZ01ldGhvZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxl
QXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogcGF5
bWVudFJlcXVlc3Quc2hpcHBpbmdNZXRob2RzKCkpCi0gICAgICAgIFtzaGlwcGluZ01ldGhvZHMg
YWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkuZ2V0KCldOworICAg
ICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBp
bmdNZXRob2QpXTsKICAgICBbcmVzdWx0IHNldFNoaXBwaW5nTWV0aG9kczpzaGlwcGluZ01ldGhv
ZHMuZ2V0KCldOwogCiAgICAgYXV0byBwYXltZW50U3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHBh
eW1lbnRSZXF1ZXN0LmxpbmVJdGVtcygpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN1bW1hcnlJdGVt
ID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCi0gICAgICAgICAgICBbcGF5bWVu
dFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW0uZ2V0KCldOworICAgICAgICBpZiAo
UEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRl
bShsaW5lSXRlbSkpCisgICAgICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6
c3VtbWFyeUl0ZW1dOwogICAgIH0KIAotICAgIGlmIChhdXRvIHRvdGFsSXRlbSA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0ocGF5bWVudFJlcXVlc3QudG90YWwoKSkpCi0gICAgICAgIFtwYXltZW50
U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW0uZ2V0KCldOworICAgIGlmIChQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShwYXltZW50
UmVxdWVzdC50b3RhbCgpKSkKKyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0
OnRvdGFsSXRlbV07CiAKICAgICBbcmVzdWx0IHNldFBheW1lbnRTdW1tYXJ5SXRlbXM6cGF5bWVu
dFN1bW1hcnlJdGVtcy5nZXQoKV07CiAKQEAgLTUxMywyNzggKzMxNywyOSBAQCBSZXRhaW5QdHI8
UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtUGF5
bWVudFJlcXVlc3QoYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNpZiBIQVZFKFBBU1NLSVRf
R1JBTlVMQVJfRVJST1JTKQotc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9Q
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzIHN0YXR1cykKLXsKLSAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLSAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKLSAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgotICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7Ci0gICAgfQotfQotCi1zdGF0
aWMgUEtQYXltZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29kZSBjb2RlKQotewotICAgIHN3aXRjaCAoY29kZSkgewotICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50VW5rbm93bkVycm9yOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpT
aGlwcGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdD
b250YWN0SW52YWxpZEVycm9yOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2Rl
OjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5n
Q29udGFjdEludmFsaWRFcnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGlu
Z0FkZHJlc3NVbnNlcnZpY2VhYmxlRXJyb3I7Ci0gICAgfQotfQotCi1zdGF0aWMgUmV0YWluUHRy
PE5TRXJyb3I+IHRvTlNFcnJvcihjb25zdCBXZWJDb3JlOjpQYXltZW50RXJyb3ImIGVycm9yKQot
ewotICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlvbmFyeSBhbGxv
Y10gaW5pdF0pOwotICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3IubWVzc2FnZSBmb3JLZXk6
TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07Ci0KLSAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxk
KSB7Ci0gICAgICAgIE5TU3RyaW5nICpwa0NvbnRhY3RGaWVsZCA9IG5pbDsKLSAgICAgICAgTlNT
dHJpbmcgKnBvc3RhbEFkZHJlc3NLZXkgPSBuaWw7Ci0KLSAgICAgICAgc3dpdGNoICgqZXJyb3Iu
Y29udGFjdEZpZWxkKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250
YWN0RmllbGQ6OlBob25lTnVtYmVyOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIoKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6
OkVtYWlsQWRkcmVzczoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6TmFtZToK
LSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RG
aWVsZE5hbWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBob25ldGljTmFtZToKLSAgICAgICAgICAgIHBr
Q29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBob25ldGljTmFt
ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzczoKLSAgICAgICAgICAgIHBrQ29udGFj
dEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lczoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxk
ID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAg
ICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdHJlZXRLZXkoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OlN1YkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAg
ICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5
KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRF
cnJvcjo6Q29udGFjdEZpZWxkOjpMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxk
ID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAg
ICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NDaXR5S2V5KCk7Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6
Q29udGFjdEZpZWxkOjpQb3N0YWxDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQ
QUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAg
ICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1Bvc3RhbENvZGVLZXkoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OlN1YkFkbWluaXN0cmF0aXZlQXJlYToKLSAgICAgICAgICAgIHBrQ29u
dGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3Mo
KTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJB
ZG1pbmlzdHJhdGl2ZUFyZWFLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkbWluaXN0cmF0aXZlQXJl
YToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRh
Y3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBn
ZXRDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291bnRyeToKLSAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVs
ZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBv
c3RhbEFkZHJlc3NDb3VudHJ5S2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5Q29kZToKLSAg
ICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVs
ZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBv
c3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBrQ29udGFjdEZpZWxkIGZvcktl
eTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9LZXko
KV07Ci0gICAgICAgIGlmIChwb3N0YWxBZGRyZXNzS2V5KQotICAgICAgICAgICAgW3VzZXJJbmZv
IHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5
bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5KCldOwotICAgIH0KLQotICAgIHJldHVy
biBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46Z2V0UEtQYXltZW50RXJy
b3JEb21haW4oKSBjb2RlOnRvUEtQYXltZW50RXJyb3JDb2RlKGVycm9yLmNvZGUpIHVzZXJJbmZv
OnVzZXJJbmZvLmdldCgpXSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdG9OU0Vy
cm9ycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudEVycm9yPiYgZXJyb3JzKQotewotICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0K
LSAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7Ci0gICAgICAgIGlmIChhdXRv
IG5zRXJyb3IgPSB0b05TRXJyb3IoZXJyb3IpKQotICAgICAgICAgICAgW3Jlc3VsdCBhZGRPYmpl
Y3Q6bnNFcnJvci5nZXQoKV07Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLSNlbHNl
Ci1zdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25S
ZXN1bHQ+JiByZXN1bHQpCi17Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJldHVybiBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLQotICAgIGlmIChyZXN1bHQtPmVycm9y
cy5zaXplKCkgPT0gMSkgewotICAgICAgICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBd
OwotICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50RXJyb3I6OkNvZGU6OlVua25vd246Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKLSAgICAgICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLQotICAgICAgICBjYXNlIFdlYkNv
cmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3Rh
bEFkZHJlc3M7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNo
aXBwaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxk
ICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RG
aWVsZDo6UG9zdGFsQWRkcmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29u
dGFjdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsK
LSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgot
ICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKLSAgICAg
ICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgotICAgICAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOwotICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKLSAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoK
LSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0Owot
ICAgIH0KLQotICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsK
LX0KLSNlbmRpZgotCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNv
bXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkUmVhY2hGaW5hbFN0YXRlID0gV2ViQ29yZTo6aXNGaW5h
bFN0YXRlUmVzdWx0KHJlc3VsdCk7Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JT
KQotICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBXZWJDb3JlOjpQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBrUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVzdWx0LT5lcnJv
cnMpLmdldCgpIDogQFsgXV0pOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHBrUGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbih0b1BL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0KSk7Ci0jZW5kaWYKLSAgICBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21w
bGV0ZVBheW1lbnRTZXNzaW9uKHJlc3VsdCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29uc3QgV2ViQ29y
ZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lvbikKIHsKLSAg
ICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NF
UlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zZXNzaW9uQmxv
Y2socGF5bWVudE1lcmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Npb24oKSwgbnVs
bHB0cik7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9zZXNzaW9uQmxvY2sgPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+
Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24ocGF5bWVudE1lcmNoYW50U2Vzc2lvbik7CiB9CiAK
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ01ldGhvZFVw
ZGF0ZT4mIHVwZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUpOwotCi0gICAgaWYgKHVwZGF0ZSkKLSAgICAgICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9Q
S1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7Ci0KLSNp
ZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIGF1dG8gcGtTaGlwcGluZ01ldGhv
ZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRo
b2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMu
Z2V0KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihwa1NoaXBwaW5nTWV0aG9kVXBk
YXRlLmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24oUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7Ci0jZW5kaWYKLSAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9u
UHJlc2VudGVyLT5jb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVwZGF0ZSk7CiB9CiAK
LSNpZiAhSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLXN0YXRpYyBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhjb25zdCBPcHRp
b25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiB1cGRhdGUpCi17Ci0gICAgaWYg
KCF1cGRhdGUgfHwgdXBkYXRlLT5lcnJvcnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0KLSAgICBpZiAodXBkYXRlLT5lcnJv
cnMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgYXV0byYgZXJyb3IgPSB1cGRhdGUtPmVycm9yc1sw
XTsKLSAgICAgICAgc3dpdGNoIChlcnJvci5jb2RlKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0KLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAg
ICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZEJpbGxpbmdQb3N0
YWxBZGRyZXNzOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpT
aGlwcGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICAgICAgaWYgKGVycm9yLmNvbnRhY3RGaWVs
ZCAmJiBlcnJvci5jb250YWN0RmllbGQgPT0gV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0
RmllbGQ6OlBvc3RhbEFkZHJlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOwotCi0gICAgICAg
ICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ0Nv
bnRhY3Q7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c0ZhaWx1cmU7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiB1cGRhdGUpCiB7Ci0gICAg
QVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJU
KG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIGlm
ICh1cGRhdGUpIHsKLSAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMo
dXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7Ci0KLSAgICAgICAgYXV0byBzaGlwcGluZ01l
dGhvZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLSAgICAgICAg
Zm9yIChhdXRvJiBzaGlwcGluZ01ldGhvZCA6IHVwZGF0ZS0+bmV3U2hpcHBpbmdNZXRob2RzKQot
ICAgICAgICAgICAgW3NoaXBwaW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0aG9k
KHNoaXBwaW5nTWV0aG9kKS5nZXQoKV07Ci0KLSAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBXVEZNb3ZlKHNoaXBw
aW5nTWV0aG9kcyk7Ci0gICAgfQotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
LSAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJy
b3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdldCgpIDogQFsgXSBwYXlt
ZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6bV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0
KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24ocGtTaGlwcGluZ0NvbnRhY3RVcGRh
dGUuZ2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24odG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKHVwZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpLCBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0
KCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gbnVsbHB0cjsKKyAg
ICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0
aW9uKHVwZGF0ZSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlBheW1lbnRNZXRob2RVcGRhdGU+JiB1cGRhdGUpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIGlmICh1cGRhdGUpCi0gICAgICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1
bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRM
aW5lSXRlbXMpOwotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBhdXRv
IHBrUGF5bWVudE1ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1
ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0
ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVu
dFN1bW1hcnlJdGVtcy5nZXQoKV0pOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24ocGtQYXlt
ZW50TWV0aG9kVXBkYXRlLmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlv
bihtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRT
dW1tYXJ5SXRlbXMuZ2V0KCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiA9
IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVBheW1lbnRN
ZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5ldHdvcmtzKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCA0MzIzNTI3MDI5OTgwM2ExZGZhMGFk
ZDgwYWNlMDMxMTBkOTgzZDFhLi41MGMwMTIxMmJhN2E4ZmI4ZDBmOTFmOWYxZmE2YWQ2OGJmMzVm
ZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBw
bGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC0yOSw4ICsyOSw4
IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFQUExFX1BBWSkKIAogI2lt
cG9ydCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EuaCIKICNpbXBvcnQgPFBhc3NLaXQvUGFzc0tpdC5oPgogI2ltcG9y
dCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cy5oPgpAQCAtNDAsNDcgKzQwLDE3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50
VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4mIGxpbmtJY29u
VVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Qm
IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyID0g
bV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCp0aGlz
KTsKLQotICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VS
VCghbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLQogICAgIGF1dG8gcGF5
bWVudFJlcXVlc3QgPSBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KG9yaWdpbmF0aW5nVVJMLCBsaW5r
SWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpwYXltZW50UmVx
dWVzdC5nZXQoKV0pOwotICAgIGlmICghbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlID0gYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFBheW1lbnRDb29yZGluYXRvclByb3h5Oip0aGlzXSk7Ci0gICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3Vt
bWFyeUl0ZW1zID0gW3BheW1lbnRSZXF1ZXN0IHBheW1lbnRTdW1tYXJ5SXRlbXNdOwotICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRo
b2RzID0gW3BheW1lbnRSZXF1ZXN0IHNoaXBwaW5nTWV0aG9kc107Ci0KLSAgICBbbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKLSAgICBbbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0KLSAgICBbcHJlc2VudGluZ1Zp
ZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjptX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07Ci0K
LSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBBU1NFUlQoIW1fYXV0aG9yaXphdGlv
blByZXNlbnRlcik7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbV9jbGllbnQucGF5
bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcigqdGhpcywgcGF5bWVudFJlcXVl
c3QuZ2V0KCkpOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+cHJlc2VudChtX2NsaWVu
dC5wYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKnRoaXMpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OmhpZGVQYXltZW50VUkoKQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBbW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdIGRpc21pc3NWaWV3Q29udHJvbGxl
ckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwotICAgIFttX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTpuaWxdOwotICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IG51bGxwdHI7Ci0KLSAgICBbbV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV07Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBudWxscHRy
OworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+ZGlzbWlzcygpOworICAgIG1fYXV0aG9y
aXphdGlvblByZXNlbnRlciA9IG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbQppbmRleCBiZDI1NjRjNDNjYzgyNjc1YjNmOTBmN2FmMzUyOGMwMjZiYmFl
NWY0Li4xYjVkYWUwMTNhYzIxZGNjNjY4YzQ3M2I4OGUzYzZjNWU0ZTczNDE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBQTEFU
Rk9STShNQUMpICYmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbXBvcnQgIlBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9y
dCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgogI2ltcG9ydCA8cGFsL2NvY29h
L1Bhc3NLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKQEAgLTY0LDEy
ICs2NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1Bh
eW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICAgICAgQVNTRVJUKHZpZXdD
b250cm9sbGVyKTsKIAotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6KnBheW1lbnRDb29yZGluYXRvclByb3h5XSk7Ci0gICAgICAgIHBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSBbcGF5bWVudFJlcXVlc3QgcGF5bWVu
dFN1bW1hcnlJdGVtc107Ci0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcyA9
IFtwYXltZW50UmVxdWVzdCBzaGlwcGluZ01ldGhvZHNdOwotICAgICAgICBwYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyID0gdmlld0Nv
bnRyb2xsZXI7Ci0gICAgICAgIFtwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOnBheW1lbnRDb29yZGluYXRvclBy
b3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07
Ci0gICAgICAgIFtwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTpwYXltZW50Q29vcmRpbmF0b3JQcm94
eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwor
ICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9uUHJlc2VudGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPigq
cGF5bWVudENvb3JkaW5hdG9yUHJveHksIHZpZXdDb250cm9sbGVyKTsKIAogICAgICAgICBBU1NF
UlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93KTsKICAgICAgICAgcGF5
bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBbTlNXaW5kb3cgd2luZG93V2l0
aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CkBAIC05MCwyNiArODUsMjAg
QEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRVSSgpCiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcpIHsKICAgICAgICAgKyttX3Nob3dQYXlt
ZW50VUlSZXF1ZXN0U2VlZDsKIAotICAgICAgICBBU1NFUlQoIW1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcik7Ci0gICAgICAgIEFTU0VSVCghbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAgICAgICBBU1NFUlQoIW1fYXV0aG9yaXphdGlv
blByZXNlbnRlcik7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUpOworICAgIEFTU0VSVChtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIpOwogICAgIEFT
U0VSVChtX3NoZWV0V2luZG93KTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zaGVldFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyLmdl
dCgpXTsKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXIgPSBudWxscHRyOwogCiAg
ICAgW1ttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBlbmRTaGVldDptX3NoZWV0V2luZG93Lmdl
dCgpXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldERlbGVn
YXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXRQ
cml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50
ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBudWxscHRyOwog
CiAgICAgbV9zaGVldFdpbmRvdyA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggYjczMWViMjlhNzgzNGJkMGJhNDk5MDYzNTA5OTZlYjU0NGY1ZjlhZi4uYTczMGE1NWQxM2Fh
NzEzNGY2N2JjNTNiZDlkMTkwYTVhNWFlMjAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAt
MSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDggKzY1
LDExIEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9j
b2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAogUGxhdGZvcm0v
Y2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAKIAorUGxhdGZv
cm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KK1BsYXRmb3JtL2NvY29h
L1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1No
YXJlZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0vY29jb2EvV0tDcmFzaFJlcG9ydGVyLm1tCitQ
bGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KIFBsYXRmb3Jt
L2NvY29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8tdW5pZnkKIAogUGxhdGZvcm0vZm91bmRhdGlv
bi9Mb2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAppbmRleCAyMTU1ZDE0MmU0NGZiYTU0NDU4YmM3MWY1MzkxYmU2ZTA5YjRlODAzLi40NDgzYjNi
Mjk2NTNkZmRlMTQ1ZTQ4YjE0MWI5Mjg3MzcyZTUxZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaApAQCAtMTk4Niw2ICsxOTg2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFC
TEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmlld0NvbnRyb2xs
ZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVu
dENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2Vu
dGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSBmaW5h
bDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKE1BQykKICAgICBO
U1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNmQxODVmZGYwOTczZDhiZTJhM2I0YjZkNTM3
ZjUwZDg0ZTU4NjhkOC4uMDk1YWJlNzcyYjYwOTA5ZmM5MzZkOTNkMzIzMjZjZjU3Y2IwM2U0NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1w
b3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQg
IlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlByaW50SW5m
by5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9y
dCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCkBAIC0xMTg3LDYg
KzExODgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNr
TG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpCiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2Vi
UGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50
UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJv
eHksIHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlWaWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5
OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggZTliMDc1Njg1MGQ3ODBkNDU1YjVlMjcyMTNmNDE0ZjQ0OTQ3
NzAxZi4uNzc5NWRkYTE0NzVjYTIwZGJjNDM1ZmJjOTMyNzFiY2ZhNDNkZTNkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsNyAr
MjkzLDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEu
aCAqLzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5n
QXJlYVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVM
YXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4
dC5oICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3OEMxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3OTYxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MjFEMUIzNjEzMDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTcx
RDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MzFEMUIzNjEz
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTEy
ODQsNiArMTI4MywxMCBAQAogCQlBMTNEQzY4MjIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNh
dGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0
YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUExNUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBX
S1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggKi87IH07
CiAJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc1QzQ0OTIxQUEz
MTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovOyB9OworCQlBMTc5OEIzRTIy
MkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk4QjNEMjIyRDk3QTIw
MDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oICovOyB9OworCQlBMTc5
OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThC
M0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIu
aCAqLzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJQTE4MUE3OTgyMUFDQzc0QjAwNTlBMzE2IC8q
IFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0g
Ki87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCMzFC
RTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlBMTlERDNDMDFE
MDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJuYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOUREM0JGMUQwN0Qx
NjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5oICovOyB9OwpA
QCAtMjIyOCw3ICsyMjMxLDYgQEAKIAkJMUFCMUY3NzExRDFCMkY3RTAwN0M5QkQxIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MzFEMUIyRjdFMDA3QzlCRDEgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFdlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxRjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
QjFGNzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3
RDFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4NTMsNiArMzg1
NSwxMyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYXNzd29yZFZpZXcuaDsgcGF0aCA9
IGlvcy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTc1
QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVudENv
ZGVyc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCM0QyMjJEOTdBMjAwMDc2NEJE
IC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNDAyMjJEOThCNjAwMDc2
NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0NzIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0
ODIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyog
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgxQTc5NzIxQUNBQzYxMDA1OUEz
MTYgLyogV2ViS2l0QWRkaXRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0QWRk
aXRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1
MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNzIsNyArNTI4MSw3IEBACiAJCTFBQjFGNzc3
MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJCQlBMTc5OEI0QjIyMkYxQkQ0MDAwNzY0QkQg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovLAogCQkJCTFBQjFGNzc5MUQx
QjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tICovLAog
CQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYzODksMTAgKzYzOTgsMTYgQEAKIAkJNDQ1MEFF
QkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJCQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQg
LyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8sCisJCQkJQTE3OThCM0YyMjJE
OThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLywK
KwkJCQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVk
TWVtb3J5Q29jb2EuY3BwICovLAogCQkJCUExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJL
aXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4MjIxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jh
c2hSZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIzMUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNo
UmVwb3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAorCQkJCUExNzk4QjQ4MjIyRTUzMEEwMDA3NjRC
RCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0
aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkyNTYsNiArOTI3MSw4
IEBACiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDNDODYwMDgyREY3NyAvKiBQYWdlTG9hZFN0YXRl
T2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzRBNTgxMTJFNjY2ODEwMDJERkU5OCAv
KiBQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNzk4QjNFMjIyRDk3QTIw
MDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZG
NCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5NTgyRDMxNTNDQkZE
NzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTJENkJGMTI0
MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBA
IC05NTYwLDcgKzk1NzcsNyBAQAogCQkJCTdDNDY5NENBMUE0QjRFQTEwMEFENTg0NSAvKiBXZWJQ
YXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTcxRDFC
MzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjFGNzdFMUQxQjMwQTkwMDdDOUJEMSAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
MTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGODUw
RkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg3NCw2ICs5ODkxLDcgQEAKIAkJCQkxQUI4
QTFGMjE4NDAwQjYyMDBFOUFFNjkgLyogV0tQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUExNUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3Jk
Vmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1
NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmlldy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3Jt
YXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NjgsNiArMTA4ODYsNyBAQAogCQkJCTFCQkJF
NEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2Vj
SXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk2MTdB
NTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJl
Y2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAv
KiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3
MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xs
ZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4
ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMTEwNTIsNyArMTEwNzEsNiBAQAogCQkJCTJEODUwOEM2MjEyRTMzRUQwMDBFRjQ2
QyAvKiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4NTA4RDgyMTJF
MzNFRDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDg1MDhDNTIxMkUzM0VEMDAwRUY0NkMgLyogVW5pZmllZFNvdXJjZTk5LmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hU
YXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODUwOEQyMjEyRTMzRUQwMDBFRjQ2QyAvKiBV
bmlmaWVkU291cmNlMTAwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDkxQjBEMUU3MzJFNEQw
MDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRDQ5MUIxNzFFNzM1MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2Fw
dHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363802</attachid>
            <date>2019-03-06 15:34:12 -0800</date>
            <delta_ts>2019-03-06 16:02:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190306153411.patch</filename>
            <type>text/plain</type>
            <size>117594</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi41OGM2YTMxNTBjYjVkODZjZjY3MDgx
MzAzZTcyM2E0YTA2N2NmNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2
MjU1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZWQgc29mdC1saW5raW5nIG9mIFBLUGF5bWVudEVycm9yRG9tYWluIGZyb20gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgdG8gaGVyZSBhbmQgdXNlZAorICAgICAgICBhIG1vcmUgZGVzY3Jp
cHRpdmUgcGxhdGZvcm0gbWFjcm8uCisKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLmg6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbToKKwogMjAxOS0w
My0wMSAgQ29ucmFkIFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IEltcHJvcGVyIHVzZSBvZiBQTEFURk9STShUVk9TKSBpbiBQQUwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZkYjU2
MGUxMzE4NDU2YmQ3OWQxZTdjNGY4ZmZmYzc1ODI1ZWQ3YS4uYWU2MWY2MWE2MDkwNDFmZmViNjAz
YjIxNDdkZWIwOTYwNDAwNjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMTktMDMt
MDUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXld
IFVudGFuZ2xlIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBmcm9tIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTUzNDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI1NTEwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgYW5kIFdLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZSB0byBlbmNhcHN1bGF0ZQorICAgICAgICBQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgYW5kIGl0cyBkZWxlZ2F0ZS4gVGF1Z2h0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5IHRvCisgICAgICAgIGludGVyYWN0IHdpdGggUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIgcmF0aGVyIHRoYW4gUEtQQVZDIGRpcmVjdGx5LgorCisgICAgICAgIFRoZXNlIGNo
YW5nZXMgd2lsbCBhbGxvdyB1cyB0byBzd2FwIG91dCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgd2l0aCBQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciBpbiBhIGZv
bGxvdy1vbiBwYXRjaC4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmg6IEFkZGVkLiBEZWZpbmVkIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2Ug
Zm9yCisgICAgICAgIHBheW1lbnQgYXV0aG9yaXphdGlvbiBwcmVzZW50ZXJzIHRoYXQgdXNlIFBL
UEEoVilDLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKTogTW92ZWQgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
LgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0Ojp0b05TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9OU0Vycm9y
cyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2RzKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbik6IEFkZGVkLiBJbXBsZW1lbnRzIHRoZQorICAgICAgICBsb2dp
YyBwcmV2aW91c2x5IGluIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKTogRGl0dG8gZm9y
CisgICAgICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24pOiBEaXR0byBmb3IgCisgICAgICAg
IChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbik6IERpdHRvIGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uLgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbik6IERpdHRvIGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uLgorICAgICAgICAqIFBsYXRm
b3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDogQWRkZWQuIERl
ZmluZWQgYSBzdWJjbGFzcyBvZiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciBmb3IgUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLgorICAgICAgICAqIFBsYXRmb3JtL2Nv
Y29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbml0V2l0
aFByZXNlbnRlcjpdKTogQWRkZWQgYSBQS1BBVkMKKyAgICAgICAgZGVsZWdhdGUgdGhhdCdzIGEg
c3ViY2xhc3Mgb2YgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOgorICAgICAgICBDYWxsZWQgLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEZpbmlzaF0uCisgICAgICAgICgtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVyOl0pOiBDYWxsZWQK
KyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEF1dGhvcml6ZVBh
eW1lbnQ6Y29tcGxldGlvbjpdLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmhhbmRsZXI6XSk6IENhbGxlZAorICAgICAgICAtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6Y29tcGxl
dGlvbjpdLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdDpoYW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0uCisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpo
YW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUgX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOndpbGxGaW5pc2hXaXRoRXJyb3I6XSk6CisgICAgICAgIENhbGxl
ZCAtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfd2lsbEZpbmlzaFdpdGhFcnJvcjpd
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNl
c3Npb246XSk6IENhbGxlZAorICAgICAgICAtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29h
L1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgc3VtbWFyeUl0ZW1zXSk6IEFk
ZGVkIGEgc3VtbWFyeUl0ZW1zIGdldHRlci4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIHNoaXBwaW5nTWV0aG9kc10pOiBEaXR0byBmb3Igc2hpcHBpbmdNZXRob2Rz
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb246ZXJyb3I6XSk6IENhbGxlZAorICAgICAgICBfZGlkUmVxdWVzdE1lcmNo
YW50U2Vzc2lvbkNvbXBsZXRpb24gdGhlbiBzZXQgaXQgdG8gbmlsLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
Ol0pOiBEaXR0byBmb3IKKyAgICAgICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9u
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRlOl0pOiBEaXR0bworICAgICAgICBm
b3IgX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246c3Vt
bWFyeUl0ZW1zOnNoaXBwaW5nTWV0aG9kczplcnJvcnM6XSk6CisgICAgICAgIERpdHRvIGZvciBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbi4KKyAgICAgICAgKC1bV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246XSk6
IERpdHRvIGZvcgorICAgICAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgaW52YWxpZGF0ZV0pOiBJ
ZiB0aGVyZSdzIGFuIG91dHN0YW5kaW5nIGF1dGhvcml6YXRpb24KKyAgICAgICAgY2FsbGJhY2ss
IGNhbGxlZCAtY29tcGxldGVQYXltZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRl
OiB3aXRoIGEgc3RhdGUgb2YKKyAgICAgICAgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0Zh
aWx1cmUuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfaW5pdFdp
dGhQcmVzZW50ZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkQXV0aG9yaXplUGF5bWVudDpjb21wbGV0aW9uOl0pOiBBZGRlZC4gSW1wbGVtZW50cyB0
aGUKKyAgICAgICAgbG9naWMgcHJldmlvdXNseSBpbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRGaW5pc2hdKTogRGl0dG8uCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0UGF5bWVudE1l
dGhvZDpjb21wbGV0aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKTogRGl0
dG8uCisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKTogTW92ZWQgZnJvbSBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRpb246XSk6IEFkZGVkLiBJ
bXBsZW1lbnRzCisgICAgICAgIHRoZSBsb2dpYyBwcmV2aW91c2x5IGluIFdLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgX3dpbGxGaW5pc2hXaXRoRXJyb3I6XSk6IERpdHRvLgorICAgICAg
ICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJXaWxsVmFs
aWRhdGVNZXJjaGFudCk6IFRvIGNvbmZvcm0gdG8KKyAgICAgICAgUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OkNsaWVudCwgcmVuYW1lZCBmcm9tIHZhbGlkYXRlTWVyY2hhbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRBdXRo
b3JpemVQYXltZW50KTogUmVuYW1lZCBmcm9tCisgICAgICAgIGRpZEF1dGhvcml6ZVBheW1lbnQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJE
aWRGaW5pc2gpOiBNb3ZlZCBsb2dpYyBoZXJlIHRoYXQgcHJldmlvdXNseQorICAgICAgICBleGlz
dGVkIGluIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZGlkU2VsZWN0U2hpcHBp
bmdNZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
cmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QpOiBSZW5hbWVkIGZyb20KKyAgICAgICAg
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZCk6IFJlbmFtZWQg
ZnJvbQorICAgICAgICBkaWRTZWxlY3RQYXltZW50TWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6IFJlbmFtZWQgdG8K
KyAgICAgICAgcHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRBdXRob3JpemVQYXltZW50KTogUmVuYW1l
ZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50LgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qp
OiBSZW5hbWVkIHRvCisgICAgICAgIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KTogUmVuYW1lZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKTogUmVuYW1lZCB0bworICAgICAgICBkaWRTZWxlY3RQ
YXltZW50TWV0aG9kLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oOiBDaGFuZ2VkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IHRvCisgICAg
ICAgIHN1YmNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQuCisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaDogUmVtb3ZlZCBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBpbnRlcmZhY2UgYW5kIGRlY2xhcmVkIHNvbWUgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBu
ZWVkZWQgYnkgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuCisgICAgICAgICogU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKTogUmVtb3ZlZCBzdGF0aWMg
a2V5d29yZC4KKyAgICAgICAgKFdlYktpdDo6dG9EZWNpbWFsTnVtYmVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
dG9QS1NoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KTogQ2hhbmdlZCB0byBjYWxs
CisgICAgICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbml0V2l0aFBheW1lbnRD
b29yZGluYXRvclByb3h5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6d2lsbEZpbmlzaFdpdGhFcnJvcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOl0pOiBEZWxldGVkLgorICAgICAgICAodG9TaGlwcGluZ01ldGhvZCk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVu
dDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29t
cGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRp
ZEZpbmlzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKTogTW92ZWQgdG8gUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0u
CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50RXJyb3JDb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OnRvTlNFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b05TRXJyb3Jz
KTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IENoYW5nZWQgdG8gcHJlc2VudCBhCisgICAg
ICAgIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyIHJhdGhlciB0aGFuIGEgUEtQQVZDLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRV
SSk6IENoYW5nZWQgdG8gZGlzbWlzcyBhCisgICAgICAgIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyIHJhdGhlciB0aGFuIGEgUEtQQVZDLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXltZW50
VUkpOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKTogQWRkZWQuIFJldHVybnMgYSBuZXcKKyAgICAgICAg
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMy0wNSAgRGF2aWQgUXVlc2FkYSAgPGRh
dmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEl0IHNob3VsZCBiZSBwb3Nz
aWJsZSB0byBmb2xsb3cgbGlua3Mgd2l0aCAnZG93bmxvYWQnIGF0dHJpYnV0ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0ODk1
NTY1MWQ5Y2MzYjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRkY2Vm
MTI1Zjc3YTE0MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFu
ZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQ
S0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21h
aW4sIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNz
S2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwg
UEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29u
dGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
IFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9u
ZU51bWJlciwgUEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQ
YXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NL
aXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2Vy
SW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVy
RG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBs
ZXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0
U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGlu
ay5tbQppbmRleCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44NzI5
NzNlNGE5NGFmNGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBAQCBT
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hp
cHBpbmdNZXRob2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1l
bnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAq
bGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxh
bmd1YWdlQ29kZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFTU0tJ
VF9HUkFOVUxBUl9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBAQCBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtDb250
YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtDb250
YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9L
ZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwg
TlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlcklu
Zm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRz
V2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAo
TlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlv
biBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4NjY5
ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xs
ZXI7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0OworY2xh
c3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xpZW50
IHsKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYs
IGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVz
ZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGNvbnN0IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9u
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
TWV0aG9kVXBkYXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNsaWVu
dCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgPSAw
OworCitwcml2YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUyNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5UKENv
bnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19D
T05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7
CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlD
b2RlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQo
Q29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAq
KTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5p
c3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0
cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNl
IGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hv
dWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIg
cGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0
YXR1cykKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQYXlt
ZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6
Q29kZSBjb2RlKQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5rbm93
bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0Nv
bnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0SW52
YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5n
Q29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFjdElu
dmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVz
c1Vuc2VydmljZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJlc3NV
bnNlcnZpY2VhYmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vycm9y
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2VySW5m
byA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKKworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNTdHJp
bmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRkcmVz
c0tleSA9IG5pbDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1i
ZXI6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRQaG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxB
ZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpO
YW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1l
OgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxB
ZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
QWRkcmVzc0xpbmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAg
ICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlL
ZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxB
ZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRy
ZXNzUG9zdGFsQ29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5p
c3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAg
ICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFs
QWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRk
cmVzc1N0YXRlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgorICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
UG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9z
dGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50
cnlDb2RlOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0
RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRV
c2VySW5mb0tleSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bh
c3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAgfQor
CisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0X1BL
UGF5bWVudEVycm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2Rl
KSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05TRXJy
b3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7CisgICAg
TlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTplcnJvcnMuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7
CisgICAgICAgIGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAgICAg
ICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKworI2lm
ICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
U3VjY2VzczsKKworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAg
ICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25v
d246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5z
ZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6
QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Cisg
ICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9
PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRT
aGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAgICBp
ZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUtPmVy
cm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3Jz
WzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bv
c3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6
OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZp
ZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRh
Y3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAg
ICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5n
Q29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JBTlVM
QVJfRVJST1JTKQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kPiYgc2hpcHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBwaW5n
TWV0aG9kcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01ldGhv
ZHMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdNZXRo
b2RzKQorICAgICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01l
dGhvZChzaGlwcGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsKK30K
Kwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hhbnRT
ZXNzaW9uKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0Zm9y
bURlbGVnYXRlKCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9uLnBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAg
IEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9
IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5l
SXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1E
ZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNdOwor
fQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
PiYgcmVzdWx0KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhBVkUo
UEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0b1BL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0ID8g
dG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0YXR1
cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJyYXkg
KmVycm9ycyA9IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRl
UGF5bWVudFNlc3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOldl
YkNvcmU6OmlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQorewor
ICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5nTWV0
aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGluZ01l
dGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0FycmF5
ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUt
Pm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7
CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJvcnMg
PSB1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0byBz
dGF0dXMgPSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisgICAg
TlNBcnJheSAqZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdhdGUo
KSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1zOnN1
bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJvcnNd
OworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9k
VXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAg
IE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1z
KHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1h
cnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTUyNmIxNzk2ODU0YjQ2ZTNkMWMzNWJkNTE3YjVlMWEyMjVhNzZmOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQS1Bh
eW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGU7
CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwgOiBw
dWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiwgUEtQYXltZW50UmVxdWVzdCAq
KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQmLCBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKik7CisjZW5kaWYKKworcHJpdmF0ZToK
KyAgICAvLyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcgorICAgIFdLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZSAqcGxhdGZvcm1EZWxlZ2F0ZSgpIGZpbmFsOworICAgIHZvaWQgZGlz
bWlzcygpIGZpbmFsOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgdm9pZCBwcmVzZW50
KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmlu
YWw7CisjZW5kaWYKKworICAgIFJldGFpblB0cjxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI+IG1fdmlld0NvbnRyb2xsZXI7CisgICAgUmV0YWluUHRyPFdLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX2RlbGVnYXRlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNDk0NzU4ZDVhMTZmMGU3YWNiNThmYWFj
OGNhZWI5NzczMjFlMmNmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCkBAIC0wLDAgKzEs
MTczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2lt
cG9ydCAiV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0IDxwYWwvY29j
b2EvUGFzc0tpdFNvZnRMaW5rLmg+CisKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUgOiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUg
PFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLCBQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+CisKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFByZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYpcHJlc2VudGVyOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhQcmVzZW50ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImKXByZXNl
bnRlcgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgX2luaXRXaXRoUHJlc2VudGVyOnByZXNl
bnRlcl0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKyNw
cmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQor
CistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBb
c2VsZiBfZGlkRmluaXNoXTsKK30KKworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMp
CisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRBdXRob3JpemVQYXlt
ZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRBdXRo
b3JpemVQYXltZW50OnBheW1lbnQgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQ
S1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KK3sKKyAg
ICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6c2hpcHBpbmdNZXRob2QgY29tcGxldGlv
bjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVy
IGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBoYW5kbGVyOih2
b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUpKWNv
bXBsZXRpb24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbnRhY3Qg
Y29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1l
bnRNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RV
cGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50
TWV0aG9kOnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2Vsc2UK
KworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1l
bnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZEF1dGhvcml6ZVBh
eW1lbnQ6cGF5bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBp
bmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29t
cGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpzaGlwcGluZ01l
dGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250
YWN0IGNvbXBsZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNB
cnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICosIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0g
Kj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6
Y29udGFjdCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9k
ICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8UEtQYXltZW50U3Vt
bWFyeUl0ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50
TWV0aG9kOnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2VuZGlm
CisKKyNwcmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZVByaXZhdGUKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHdpbGxG
aW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtzZWxmIF93aWxsRmluaXNo
V2l0aEVycm9yOmVycm9yXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uICosIE5TRXJyb3IgKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRSZXF1ZXN0
TWVyY2hhbnRTZXNzaW9uOmNvbXBsZXRpb25dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJL
aXQgeworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRSZXF1ZXN0ICpy
ZXF1ZXN0KQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xpZW50KQorICAg
ICwgbV92aWV3Q29udHJvbGxlcihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnJlcXVl
c3RdKSkKKyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQor
eworICAgIFttX3ZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOwor
ICAgIFttX3ZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgp
XTsKK30KKyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjo6UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiBjbGllbnQsIFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIpCisgICAgOiBQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcihjbGllbnQpCisgICAgLCBtX3ZpZXdDb250cm9sbGVyKHZpZXdDb250
cm9sbGVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUHJlc2VudGVyOip0aGlzXSkp
Cit7CisgICAgW21fdmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07
CisgICAgW21fdmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0
KCldOworfQorI2VuZGlmCisKK1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAqUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cGxhdGZvcm1EZWxlZ2F0ZSgpCit7CisgICAg
cmV0dXJuIG1fZGVsZWdhdGUuZ2V0KCk7Cit9CisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjo6ZGlzbWlzcygpCit7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAg
ICBbW21fdmlld0NvbnRyb2xsZXIgcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXSBkaXNtaXNzVmll
d0NvbnRyb2xsZXJBbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRyXTsKKyNlbmRpZgorICAg
IFttX3ZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW21fdmlld0NvbnRyb2xs
ZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm5pbF07CisgICAgbV92aWV3Q29udHJvbGxlciA9IG5pbDsK
KyAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKKyAgICBtX2RlbGVnYXRlID0gbmlsOworfQor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOjpwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3sKKyAgICBpZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlciB8fCAhbV92aWV3Q29udHJv
bGxlcikKKyAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKworICAgIFtw
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOm1fdmlld0NvbnRy
b2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07CisgICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7Cit9CisKKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWUxNmJhYWY4YTJkNzQ3MWQxYTJhOGJiMTRlODk1NTY1YWRiNTdmYwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
Ni0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFVT
RShQQVNTS0lUKQorCisjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NLaXRTUEkuaD4KKyNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgorCitPQkpDX0NMQVNTIE5TQXJyYXk7CitPQkpDX0NMQVNTIE5T
RXJyb3I7CitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjsKKwordXNpbmcgRGlkUmVx
dWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudE1l
cmNoYW50U2Vzc2lvbiAqLCBOU0Vycm9yICopPjsKKworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxB
Ul9FUlJPUlMpCit1c2luZyBEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiA9IEJsb2NrUHRy
PHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqKT47Cit1c2luZyBEaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29t
cGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVw
ZGF0ZSAqKT47Cit1c2luZyBEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBCbG9j
a1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT47CisjZWxz
ZQordXNpbmcgRGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpPjsKK3VzaW5nIERpZFNlbGVjdFBheW1lbnRNZXRo
b2RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChOU0FycmF5ICopPjsKK3VzaW5nIERpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMsIE5TQXJyYXkgKiwgTlNBcnJheSAqKT47Cit1c2luZyBEaWRTZWxlY3RT
aGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMsIE5TQXJyYXkgKik+OworI2VuZGlmCisKK30KKworQGludGVyZmFjZSBXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgOiBOU09iamVjdAorCistIChpbnN0YW5jZXR5cGUp
aW5pdCBOU19VTkFWQUlMQUJMRTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBC
T09MIGRpZFJlYWNoRmluYWxTdGF0ZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
TlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKnNoaXBw
aW5nTWV0aG9kczsKKworLSAodm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uICopc2Vzc2lvbiBlcnJvcjooTlNFcnJvciAqKWVycm9yOworLSAo
dm9pZCljb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3Vt
bWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXM7CistICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Np
b246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcnJheTxO
U0Vycm9yICo+ICopZXJyb3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9PTClkaWRSZWFjaEZpbmFs
U3RhdGU7CistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5TQXJyYXk8UEtQYXlt
ZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihOU0FycmF5
PFBLU2hpcHBpbmdNZXRob2QgKj4gKilzaGlwcGluZ01ldGhvZHMgZXJyb3JzOihOU0FycmF5PE5T
RXJyb3IgKj4gKillcnJvcnM7CistICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rp
b246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXM7CistICh2
b2lkKWludmFsaWRhdGU7CisKK0BlbmQKKworLy8gSGVscGVyIG1ldGhvZHMgY2FsbGVkIGJ5IFdL
UGF5bWVudEF1dGhvcml6YXRpb25TZXNzaW9uJ3Mgc3ViY2xhc3NlcworQGludGVyZmFjZSBXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgKFByb3RlY3RlZCkKKworLSAoaW5zdGFuY2V0eXBl
KV9pbml0V2l0aFJlcXVlc3Q6KFBLUGF5bWVudFJlcXVlc3QgKilyZXF1ZXN0IHByZXNlbnRlcjoo
V2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVyOworCistICh2
b2lkKV9kaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGNvbXBsZXRpb246
KFdlYktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0
aW9uOworLSAodm9pZClfZGlkRmluaXNoOworLSAodm9pZClfZGlkUmVxdWVzdE1lcmNoYW50U2Vz
c2lvbjooV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbjo6QmxvY2tU
eXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1l
bnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uOworLSAodm9pZClfZGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KFdl
YktpdDo6RGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBs
ZXRpb247CistICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhv
ZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX3dpbGxGaW5p
c2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKworQGVuZAorCisjZW5kaWYgLy8gVVNFKFBB
U1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2Ev
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNGM1NTRhYzU3
ODhiMWQyMjcwMjZmYmEyMDZiYjVlZTY2MzExZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbQpA
QCAtMCwwICsxLDIyNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCIKKworI2lmIFVTRShQQVNT
S0lUKQorCisjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGF5
bWVudE1ldGhvZC5oPgorCitAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIHsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPj4g
X3N1bW1hcnlJdGVtczsKKyAgICBSZXRhaW5QdHI8TlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+
PiBfc2hpcHBpbmdNZXRob2RzOworICAgIFdlYWtQdHI8V2ViS2l0OjpQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcj4gX3ByZXNlbnRlcjsKKyAgICBXZWJLaXQ6OkRpZEF1dGhvcml6ZVBheW1l
bnRDb21wbGV0aW9uIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbjsKKyAgICBXZWJLaXQ6
OkRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uIF9kaWRSZXF1ZXN0TWVyY2hhbnRT
ZXNzaW9uQ29tcGxldGlvbjsKKyAgICBXZWJLaXQ6OkRpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKKyAgICBXZWJLaXQ6OkRp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dENvbXBsZXRpb247CisgICAgV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRp
b24gX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjsKK30KKworLSAoTlNBcnJheTxQ
S1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcworeworICAgIHJldHVybiBfc3Vt
bWFyeUl0ZW1zLmdldCgpOworfQorCistIChOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4gKilz
aGlwcGluZ01ldGhvZHMKK3sKKyAgICByZXR1cm4gX3NoaXBwaW5nTWV0aG9kcy5nZXQoKTsKK30K
KworLSAodm9pZCljb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbjooUEtQYXltZW50TWVyY2hhbnRT
ZXNzaW9uICopc2Vzc2lvbiBlcnJvcjooTlNFcnJvciAqKWVycm9yCit7CisgICAgc3RkOjpleGNo
YW5nZShfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24sIG5pbCkoc2Vzc2lvbiwg
ZXJyb3IpOworfQorCistICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooTlNB
cnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcworeworICAgIF9zdW1t
YXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKKyAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0
UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1z
Ol9zdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RQYXlt
ZW50TWV0aG9kQ29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworI2Vsc2UKKyAgICBzdGQ6
OmV4Y2hhbmdlKF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiwgbmlsKShfc3VtbWFy
eUl0ZW1zKTsKKyNlbmRpZgorfQorCistICh2b2lkKWNvbXBsZXRlUGF5bWVudFNlc3Npb246KFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIGVycm9yczooTlNBcnJheTxOU0Vycm9y
ICo+ICopZXJyb3JzIGRpZFJlYWNoRmluYWxTdGF0ZTooQk9PTClkaWRSZWFjaEZpbmFsU3RhdGUK
K3sKKyAgICBfZGlkUmVhY2hGaW5hbFN0YXRlID0gZGlkUmVhY2hGaW5hbFN0YXRlOworI2lmIEhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhT
dGF0dXM6c3RhdHVzIGVycm9yczplcnJvcnNdKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRBdXRo
b3JpemVQYXltZW50Q29tcGxldGlvbiwgbmlsKShyZXN1bHQuZ2V0KCkpOworI2Vsc2UKKyAgICBB
U1NFUlQoIWVycm9ycy5jb3VudCk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkQXV0aG9yaXplUGF5
bWVudENvbXBsZXRpb24sIG5pbCkoc3RhdHVzKTsKKyNlbmRpZgorfQorCistICh2b2lkKWNvbXBs
ZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
KXN0YXR1cyBzdW1tYXJ5SXRlbXM6KE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKilz
dW1tYXJ5SXRlbXMgc2hpcHBpbmdNZXRob2RzOihOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4g
KilzaGlwcGluZ01ldGhvZHMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMKK3sK
KyAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0ZW1zOworICAgIF9zaGlwcGluZ01ldGhvZHMg
PSBzaGlwcGluZ01ldGhvZHM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAg
ICBBU1NFUlQoc3RhdHVzID09IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzKTsK
KyAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczplcnJvcnMgcGF5bWVu
dFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczpfc2hpcHBp
bmdNZXRob2RzLmdldCgpXSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdD
b250YWN0Q29tcGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworI2Vsc2UKKyAgICBBU1NFUlQo
IWVycm9ycy5jb3VudCk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0Q29tcGxldGlvbiwgbmlsKShzdGF0dXMsIF9zaGlwcGluZ01ldGhvZHMsIF9zdW1tYXJ5SXRl
bXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlv
bjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcworeworICAg
IF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFS
X0VSUk9SUykKKyAgICBhdXRvIHVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1h
cnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgpXSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5nZXQoKSk7CisjZWxzZQor
ICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiwgbmls
KShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzcywgX3N1bW1hcnlJdGVtcyk7Cisj
ZW5kaWYKK30KKworLSAodm9pZClpbnZhbGlkYXRlCit7CisgICAgaWYgKF9kaWRBdXRob3JpemVQ
YXltZW50Q29tcGxldGlvbikKKyAgICAgICAgW3NlbGYgY29tcGxldGVQYXltZW50U2Vzc2lvbjpQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFtdIGRpZFJlYWNoRmlu
YWxTdGF0ZTpZRVNdOworfQorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgKFByb3RlY3RlZCkKKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0
aFJlcXVlc3Q6KFBLUGF5bWVudFJlcXVlc3QgKilyZXF1ZXN0IHByZXNlbnRlcjooV2ViS2l0OjpQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVyCit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfc3VtbWFyeUl0
ZW1zID0gcmVxdWVzdC5wYXltZW50U3VtbWFyeUl0ZW1zOworICAgIF9zaGlwcGluZ01ldGhvZHMg
PSByZXF1ZXN0LnNoaXBwaW5nTWV0aG9kczsKKyAgICBfcHJlc2VudGVyID0gbWFrZVdlYWtQdHIo
cHJlc2VudGVyKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClfZGlkQXV0aG9yaXpl
UGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZEF1dGhv
cml6ZVBheW1lbnRDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAgIEFTU0VS
VCghX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uKTsKKyAgICBfZGlkQXV0aG9yaXplUGF5
bWVudENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJl
c2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4gW3NlbGYg
Y29tcGxldGVQYXltZW50U2Vzc2lvbjpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZSBlcnJvcnM6QFsgXSBkaWRSZWFjaEZpbmFsU3RhdGU6WUVTXTsKKworICAgIHByZXNlbnRlci0+
Y2xpZW50KCkucHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudCgqcHJlc2VudGVyLCBXZWJDb3Jl
OjpQYXltZW50KHBheW1lbnQpKTsKK30KKworLSAodm9pZClfZGlkRmluaXNoCit7CisgICAgaWYg
KGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKSkKKyAgICAgICAgcHJlc2VudGVyLT5j
bGllbnQoKS5wcmVzZW50ZXJEaWRGaW5pc2goKnByZXNlbnRlciwgX2RpZFJlYWNoRmluYWxTdGF0
ZSk7Cit9CisKKy0gKHZvaWQpX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KFdlYktpdDo6RGlk
UmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7
CisgICAgQVNTRVJUKCFfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24pOworICAg
IF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAg
ICBbUEFMOjpnZXRQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJDbGFzcygpIHBh
eW1lbnRTZXJ2aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNoYW50VVJMLCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMT0dfRVJST1IoIlBLQ2Fu
TWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERvbWFpbiBlcnJvciAlQCIsIGVy
cm9yKTsKKworICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeeworICAgICAgICAgICAgQVNTRVJUKF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxl
dGlvbik7CisKKyAgICAgICAgICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsK
KyAgICAgICAgICAgIGlmICghcHJlc2VudGVyKSB7CisgICAgICAgICAgICAgICAgX2RpZFJlcXVl
c3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uKG5pbCwgbmlsKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCku
cHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQoKnByZXNlbnRlciwgbWVyY2hhbnRVUkwpOwor
ICAgICAgICB9KTsKKyAgICB9XTsKK30KKworLSAodm9pZClfZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgorewor
ICAgIEFTU0VSVCghX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKTsKKyAgICBfZGlk
U2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBw
cmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAg
ICByZXR1cm4gW3NlbGYgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOkBbIF1dOworCisg
ICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKCpw
cmVzZW50ZXIsIFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkpOworfQorCist
ICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29t
cGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOjpCbG9j
a1R5cGUpY29tcGxldGlvbgoreworICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0g
Y29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKKyAg
ICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hpcHBpbmdD
b250YWN0U2VsZWN0aW9uOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIHN1bW1h
cnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0aG9kczpAWyBdIGVycm9yczpAWyBdXTsKKworICAgIHBy
ZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KCpwcmVz
ZW50ZXIsIFdlYkNvcmU6OlBheW1lbnRDb250YWN0KGNvbnRhY3QpKTsKK30KKworc3RhdGljIFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCB0b1No
aXBwaW5nTWV0aG9kKFBLU2hpcHBpbmdNZXRob2QgKnNoaXBwaW5nTWV0aG9kKQoreworICAgIEFT
U0VSVChzaGlwcGluZ01ldGhvZCk7CisKKyAgICBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgcmVzdWx0OworICAgIHJlc3VsdC5hbW91bnQgPSBz
aGlwcGluZ01ldGhvZC5hbW91bnQuc3RyaW5nVmFsdWU7CisgICAgcmVzdWx0LmRldGFpbCA9IHNo
aXBwaW5nTWV0aG9kLmRldGFpbDsKKyAgICByZXN1bHQuaWRlbnRpZmllciA9IHNoaXBwaW5nTWV0
aG9kLmlkZW50aWZpZXI7CisgICAgcmVzdWx0LmxhYmVsID0gc2hpcHBpbmdNZXRob2QubGFiZWw7
CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KFdlYktp
dDo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlv
bgoreworICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbik7Cisg
ICAgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAg
ICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIp
CisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOkBb
IF1dOworCisgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZCgqcHJlc2VudGVyLCB0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7Cit9
CisKKy0gKHZvaWQpX3dpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworfQor
CitAZW5kCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApp
bmRleCBiNDc0NWUyZWIwOGM2Y2U0MzI1MTFlODUzMmI3MjFiYjg4YjI5NWVmLi5hNjk1YzY3NDRl
Y2I5YzIzNjczMDdhMmY1YjRmY2NiYjdiOGE3ZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3Bw
CkBAIC0yMzAsNyArMjMwLDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlk
Q2FuY2VsUGF5bWVudFNlc3Npb24oKQogICAgIGRpZFJlYWNoRmluYWxTdGF0ZSgpOwogfQogCi12
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVS
TCYgdXJsKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyV2lsbFZh
bGlkYXRlTWVyY2hhbnQoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBVUkwm
IHVybCkKIHsKICAgICBBU1NFUlQobV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSA9PSBNZXJjaGFu
dFZhbGlkYXRpb25TdGF0ZTo6SWRsZSk7CiAKQEAgLTIzOCwxMyArMjM4LDIwIEBAIHZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJiB1cmwp
CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpWYWxpZGF0ZU1lcmNo
YW50KHVybC5zdHJpbmcoKSkpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpkaWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCit2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRBdXRob3JpemVQYXlt
ZW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVu
dCYgcGF5bWVudCkKIHsKICAgICBtX3N0YXRlID0gU3RhdGU6OkF1dGhvcml6ZWQ7CiAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGF5bWVudENvb3JkaW5hdG9yOjpEaWRBdXRob3JpemVQYXltZW50KHBh
eW1lbnQpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0
U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKK3ZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKQoreworICAgIGlmICghZGlkUmVhY2hGaW5h
bFN0YXRlKQorICAgICAgICBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOworICAgIGhpZGVQYXlt
ZW50VUkoKTsKK30KKwordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVy
RGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRo
b2QmIHNoaXBwaW5nTWV0aG9kKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3Rp
dmUpOwogCkBAIC0yNTIsNyArMjU5LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXkKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKHNoaXBwaW5nTWV0aG9kKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFj
dCYgc2hpcHBpbmdDb250YWN0KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJl
c2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkKIHsK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApAQCAtMjYwLDcgKzI2Nyw3
IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdChjb25zdCBXZWJDb3JlOjpQYXltZW50CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Qoc2hpcHBpbmdDb250YWN0KSk7
CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFBheW1lbnRN
ZXRob2QoY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhvZCkKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRo
b2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50
TWV0aG9kJiBwYXltZW50TWV0aG9kKQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpB
Y3RpdmUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAppbmRleCBjMTliMTJiYTNlODA0YmFmYTI2MDJj
ODFjZDBlOTA0N2QzNDkzZTU3Li5jYWE1Zjk1ZWNhY2U2YjgxODJiNzhmNmEzOTU3MmQ1Zjk2ZWU5
ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIk1lc3NhZ2VTZW5kZXIuaCIKKyNpbmNsdWRl
ICJQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUGF5
bWVudEhlYWRlcnMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KQEAgLTU2LDEzICs1NywxNiBAQCBPQkpDX0NMQVNTIE5TV2luZG93OwogT0JK
Q19DTEFTUyBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI7CiBPQkpDX0NMQVNT
IFBLUGF5bWVudFJlcXVlc3Q7CiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7Ci1PQkpDX0NM
QVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlOwogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5OwogCi1jbGFzcyBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIsIHByaXZhdGUg
SVBDOjpNZXNzYWdlU2VuZGVyLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk+IHsKK2NsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5CisgICAgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCisgICAgLCBwcml2YXRlIElQQzo6TWVzc2FnZVNl
bmRlcgorICAgICwgcHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5PgorICAgICwgcHVibGljIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQg
ewogcHVibGljOgogICAgIHN0cnVjdCBDbGllbnQgewogICAgICAgICB2aXJ0dWFsIH5DbGllbnQo
KSA9IGRlZmF1bHQ7CkBAIC03NSw2ICs3OSw3IEBAIHB1YmxpYzoKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgICAgICB2aXJ0dWFsIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGlu
YXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eSYpID0gMDsKICAgICAgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIHBheW1lbnRDb29yZGlu
YXRvckNURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZShjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYpID0gMDsKKyAgICAgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8UGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVz
ZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQS1BheW1lbnRSZXF1ZXN0ICopID0g
MDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgdmlydHVhbCBOU1dpbmRvdyAq
cGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSYpID0gMDsKQEAgLTg1LDEyICs5MCw2IEBAIHB1YmxpYzoKICAgICB+V2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkoKTsKIAogICAgIHZvaWQgZGlkQ2FuY2VsUGF5bWVudFNlc3Np
b24oKTsKLSAgICB2b2lkIHZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJik7Ci0gICAgdm9pZCBk
aWRBdXRob3JpemVQYXltZW50KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKTsKLSAgICB2b2lkIGRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYpOwotICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdD
b250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0Jik7Ci0gICAgdm9pZCBkaWRTZWxl
Y3RQYXltZW50TWV0aG9kKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKTsKLQogICAgIHZv
aWQgaGlkZVBheW1lbnRVSSgpOwogCiBwcml2YXRlOgpAQCAtMTAxLDYgKzEwMCwxNCBAQCBwcml2
YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVNlbmRlcgogICAgIElQQzo6Q29ubmVjdGlvbiogbWVz
c2FnZVNlbmRlckNvbm5lY3Rpb24oKSBjb25zdCBmaW5hbDsKICAgICB1aW50NjRfdCBtZXNzYWdl
U2VuZGVyRGVzdGluYXRpb25JRCgpIGNvbnN0IGZpbmFsOworICAgIAorICAgIC8vIFBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQKKyAgICB2b2lkIHByZXNlbnRlckRpZEF1dGhv
cml6ZVBheW1lbnQoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3Jl
OjpQYXltZW50JikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJEaWRGaW5pc2goUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXImLCBib29sIGRpZFJlYWNoRmluYWxTdGF0ZSkgZmluYWw7Cisg
ICAgdm9pZCBwcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpIGZpbmFsOworICAg
IHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKSBmaW5hbDsKKyAg
ICB2b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kJikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJXaWxsVmFsaWRh
dGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFVSTCYpIGZp
bmFsOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycwogICAgIHZvaWQgYXZhaWxhYmxlUGF5bWVu
dE5ldHdvcmtzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYpOwpA
QCAtMTczLDggKzE4MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIFZhbGlkYXRpb25Db21wbGV0ZQog
ICAgIH0gbV9tZXJjaGFudFZhbGlkYXRpb25TdGF0ZSB7IE1lcmNoYW50VmFsaWRhdGlvblN0YXRl
OjpJZGxlIH07CiAKLSAgICBSZXRhaW5QdHI8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyPiBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI7Ci0gICAgUmV0YWlu
UHRyPFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlPiBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IG1fYXV0aG9yaXphdGlvblByZXNlbnRl
cjsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICB1aW50NjRfdCBtX3Nob3dQYXltZW50VUlSZXF1
ZXN0U2VlZCB7IDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaApp
bmRleCBmYmJlZWFkMzcyNjNkMjdjN2QzM2EwNWJiNzY5NTgzZjI1ZGY2MTUxLi40ZTk0MmI5Njhh
NDM5ZTYzNGJmOGFlN2I5MjYzY2E2MjRiMzg2ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlDb2NvYS5oCkBAIC0yNywzNyArMjcsMTggQEAKIAogI2lmIEVOQUJMRShBUFBM
RV9QQVkpCiAKLSNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCi0jaW1wb3J0
IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1Bhc3NL
aXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCi1AaW50ZXJmYWNlIFdLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIDogTlNPYmplY3QgPFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLCBQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJQcml2YXRlRGVsZWdhdGU+IHsKLUBwYWNrYWdlCi0gICAgV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSogX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OwotICAgIFJldGFpblB0cjxOU0FycmF5PiBfcGF5bWVudFN1bW1hcnlJdGVtczsKLSAgICBSZXRh
aW5QdHI8TlNBcnJheT4gX3NoaXBwaW5nTWV0aG9kczsKK25hbWVzcGFjZSBXZWJLaXQgewogCi0g
ICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNFcnJvciAqKT4g
X3Nlc3Npb25CbG9jazsKKy8vIEZJWE1FOiBSYXRoZXIgdGhhbiBoYXZpbmcgdGhlc2UgZnJlZSBm
dW5jdGlvbnMgc2NhdHRlcmVkIGFib3V0LCBBcHBsZSBQYXkgZGF0YSB0eXBlcyBzaG91bGQga25v
dworLy8gaG93IHRvIGNvbnZlcnQgdGhlbXNlbHZlcyB0byBhbmQgZnJvbSB0aGVpciBwbGF0Zm9y
bSByZXByZXNlbnRhdGlvbnMuCitOU0FycmF5ICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRl
bXMmKTsKK05TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1v
dW50KTsKK1BLUGF5bWVudFN1bW1hcnlJdGVtICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYpOworUEtQ
YXltZW50U3VtbWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6
OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSk7CitQS1NoaXBw
aW5nTWV0aG9kICp0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJik7CiAKLSAgICBCT09MIF9kaWRSZWFj
aEZpbmFsU3RhdGU7Ci0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBCbG9j
a1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKik+IF9wYXltZW50QXV0aG9y
aXplZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0UGF5bWVu
dE1ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwotICAg
IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopPiBf
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQoUEtQ
YXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdENvbXBsZXRpb247Ci0jZWxzZQotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyk+IF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb247Ci0gICAgQmxv
Y2tQdHI8dm9pZChOU0FycmF5ICopPiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247
Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0FycmF5
ICopPiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZv
aWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqLCBOU0FycmF5ICopPiBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKLSNlbmRpZgotfQorfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1lbnRDb29yZGluYXRv
clByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTsKLQotLSAodm9pZClpbnZhbGlkYXRlOwotCi1AZW5kCi0KLSNlbmRpZgor
I2VuZGlmIC8vIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbQppbmRleCBhY2VmOTg0ZGMwOTlkNGExNGI5MTA3Mzk5YWIyM2E4Y2U1OWE5
ZjdiLi44NTAwOTUwZTYxNGFhMTZjOTFiOThlODZiNzZhY2E0NGUwY2IyZDFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29h
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KQEAgLTI4LDggKzI4LDggQEAKIAog
I2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbXBvcnQgIldLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5oIgogI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKLSNpbXBv
cnQgIldlYlByb2Nlc3NQb29sLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW1wb3J0
IDxwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CkBAIC0zNywyMDIgKzM3LDYgQEAKICNpbXBv
cnQgPHd0Zi9SdW5Mb29wLmg+CiAjaW1wb3J0IDx3dGYvVVJMLmg+CiAKLSNpZiBIQVZFKFBBU1NL
SVRfR1JBTlVMQVJfRVJST1JTKQotU09GVF9MSU5LX0ZSQU1FV09SSyhDb250YWN0cykKLVNPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9j
YWxpdHlLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBv
c3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAq
KTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RhdGVLZXks
IE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJl
c3NQb3N0YWxDb2RlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0
cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5LCBOU1N0cmlu
ZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChQQUw6OlBhc3NLaXQsIFBLUGF5bWVudEVycm9yRG9t
YWluLCBOU1N0cmluZyAqKTsKLSNlbmRpZgotCi1AaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUKLQotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ci17Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0XSkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotCi0gICAgX3dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5ID0gJndlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwotCi0gICAgcmV0
dXJuIHNlbGY7Ci19Ci0KLS0gKHZvaWQpaW52YWxpZGF0ZQotewotICAgIF93ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSA9IG51bGxwdHI7Ci0gICAgaWYgKF9wYXltZW50QXV0aG9yaXplZENvbXBs
ZXRpb24pIHsKLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgICAgICBfcGF5
bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKLSNlbHNlCi0gICAgICAg
IF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
c0ZhaWx1cmUpOwotI2VuZGlmCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24g
PSBudWxscHRyOwotICAgIH0KLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIHdpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgotewotfQotCi0tICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjoo
dm9pZCheKShQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNFcnJvciAqKSlzZXNzaW9uQmxv
Y2sKLXsKLSAgICBBU1NFUlQoIV9zZXNzaW9uQmxvY2spOwotICAgIF9zZXNzaW9uQmxvY2sgPSBz
ZXNzaW9uQmxvY2s7Ci0KLSAgICBbUEFMOjpnZXRQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJDbGFzcygpIHBheW1lbnRTZXJ2aWNlc01lcmNoYW50VVJMOl4oTlNVUkwgKm1lcmNo
YW50VVJMLCBOU0Vycm9yICplcnJvcikgewotICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAg
ICBMT0dfRVJST1IoIlBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFuZERv
bWFpbiBlcnJvciAlQCIsIGVycm9yKTsKLQotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewotICAgICAgICAgICAgQVNTRVJUKF9zZXNzaW9uQmxvY2sp
OwotCi0gICAgICAgICAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAg
ICAgICAgICAgICAgIF9zZXNzaW9uQmxvY2sobnVsbHB0ciwgbnVsbHB0cik7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHktPnZhbGlkYXRlTWVyY2hhbnQobWVyY2hhbnRVUkwpOwotICAgICAgICB9
KTsKLSAgICB9XTsKLX0KLQotc3RhdGljIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCB0b1NoaXBwaW5nTWV0aG9kKFBLU2hpcHBpbmdNZXRob2Qg
KnNoaXBwaW5nTWV0aG9kKQotewotICAgIEFTU0VSVChzaGlwcGluZ01ldGhvZCk7Ci0KLSAgICBX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgcmVz
dWx0OwotICAgIHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5nTWV0aG9kLmxhYmVsOwotICAgIHJlc3Vs
dC5kZXRhaWwgPSBzaGlwcGluZ01ldGhvZC5kZXRhaWw7Ci0gICAgcmVzdWx0LmFtb3VudCA9IHNo
aXBwaW5nTWV0aG9kLmFtb3VudC5zdHJpbmdWYWx1ZTsKLSAgICByZXN1bHQuaWRlbnRpZmllciA9
IHNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXI7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0j
aWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLQotLSAodm9pZClwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQg
aGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqcmVzdWx0KSlj
b21wbGV0aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF1dKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoIV9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24pOwotICAgIF9wYXlt
ZW50QXV0aG9yaXplZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotCi0gICAgX3dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5LT5kaWRBdXRob3JpemVQYXltZW50KFdlYkNvcmU6OlBheW1lbnQocGF5
bWVudCkpOwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBoYW5kbGVy
Oih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqdXBkYXRlKSlj
b21wbGV0aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAg
ICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1l
bnRNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBd
XSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RQYXltZW50TWV0aG9k
Q29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
LT5kaWRTZWxlY3RQYXltZW50TWV0aG9kKFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1l
dGhvZCkpOwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6
KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBoYW5k
bGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKnVwZGF0
ZSkpY29tcGxldGlvbiB7Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsK
LSAgICAgICAgY29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nTWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6
QFsgXV0pLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ01ldGhvZCh0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5n
TWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgaGFuZGxlcjoodm9pZCAo
XikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0
aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29u
dGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6QFsgXSBwYXltZW50U3VtbWFyeUl0
ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF1dKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9u
KTsKLSAgICBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247
Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3QoV2ViQ29yZTo6UGF5bWVudENvbnRhY3QoY29udGFjdCkpOwotfQotCi0jZW5kaWYKLQotI2lm
ICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotCi0tICh2b2lkKXBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciAqKWNvbnRyb2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBj
b21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSljb21wbGV0
aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAg
Y29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9wYXltZW50QXV0aG9yaXplZENvbXBsZXRp
b24pOwotICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotCi0g
ICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRBdXRob3JpemVQYXltZW50KFdlYkNv
cmU6OlBheW1lbnQocGF5bWVudCkpOwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlw
cGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzIHN0YXR1cywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1z
KSljb21wbGV0aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsK
LSAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSwg
QFsgXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RT
aGlwcGluZ01ldGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENv
bXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkp
OwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5
bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOih2
b2lkICheKShOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNv
bXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAg
ICAgICBjb21wbGV0aW9uKEBbIF0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNT
RVJUKCFfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0KLSAgICBfd2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFBheW1lbnRNZXRob2QoV2ViQ29yZTo6UGF5bWVudE1l
dGhvZChwYXltZW50TWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29u
dHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29t
cGxldGlvbjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE5T
QXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzLCBOU0FycmF5PFBLUGF5
bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAo
IV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlLCBAWyBdLCBAWyBdKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBs
ZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gY29tcGxl
dGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdChXZWJDb3JlOjpQYXltZW50Q29udGFjdChjb250YWN0KSk7Ci19Ci0KLSNlbmRpZgot
Ci0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKLXsKLSAgICBp
ZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKCFfZGlkUmVhY2hGaW5hbFN0YXRlKQotICAgICAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHktPmRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7Ci0KLSAgICBfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHktPmhpZGVQYXltZW50VUkoKTsKLX0KLQotQGVuZAotCiAvLyBGSVhNRTogT25j
ZSByZGFyOi8vcHJvYmxlbS8yNDQyMDAyNCBoYXMgYmVlbiBmaXhlZCwgaW1wb3J0IFBLUGF5bWVu
dFJlcXVlc3RfUHJpdmF0ZS5oIGluc3RlYWQuCiBAaW50ZXJmYWNlIFBLUGF5bWVudFJlcXVlc3Qg
KCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIE5TVVJMICpvcmlnaW5hdGluZ1VSTDsK
QEAgLTMyMiw3ICsxMjYsNyBAQCBzdGF0aWMgUEtBZGRyZXNzRmllbGQgdG9QS0FkZHJlc3NGaWVs
ZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdQogfQogI2VuZGlmCiAK
LXN0YXRpYyBQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5
cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBl
IHR5cGUpCitQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5
cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBl
IHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGU6OkZpbmFsOgpAQCAtMzMzLDI4
ICsxMzcsMjggQEAgc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3MKICAgICB9CiB9CiAKLXN0YXRpYyBO
U0RlY2ltYWxOdW1iZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKK05T
RGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQogewog
ICAgIGlmICghYW1vdW50KQogICAgICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciB6ZXJvXTsK
ICAgICByZXR1cm4gW05TRGVjaW1hbE51bWJlciBkZWNpbWFsTnVtYmVyV2l0aFN0cmluZzphbW91
bnQgbG9jYWxlOkB7IE5TTG9jYWxlRGVjaW1hbFNlcGFyYXRvciA6IEAiLiIgfV07CiB9CiAKLXN0
YXRpYyBSZXRhaW5QdHI8UEtQYXltZW50U3VtbWFyeUl0ZW0+IHRvUEtQYXltZW50U3VtbWFyeUl0
ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVt
JiBsaW5lSXRlbSkKK1BLUGF5bWVudFN1bW1hcnlJdGVtICp0b1BLUGF5bWVudFN1bW1hcnlJdGVt
KGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYg
bGluZUl0ZW0pCiB7CiAgICAgcmV0dXJuIFtQQUw6OmdldFBLUGF5bWVudFN1bW1hcnlJdGVtQ2xh
c3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpsaW5lSXRlbS5sYWJlbCBhbW91bnQ6dG9EZWNpbWFs
TnVtYmVyKGxpbmVJdGVtLmFtb3VudCkgdHlwZTp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShs
aW5lSXRlbS50eXBlKV07CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gdG9QS1BheW1l
bnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykKK05TQXJyYXkgKnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYgdG90YWxBbmRMaW5lSXRlbXMpCiB7Ci0gICAgYXV0
byBwYXltZW50U3VtbWFyeUl0ZW1zID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7CisgICAgTlNNdXRhYmxlQXJyYXkgKnBheW1lbnRTdW1tYXJ5SXRlbXMgPSBbTlNNdXRh
YmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6dG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zLnNp
emUoKSArIDFdOwogICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiB0b3RhbEFuZExpbmVJdGVtcy5s
aW5lSXRlbXMpIHsKLSAgICAgICAgaWYgKGF1dG8gc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtKGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFk
ZE9iamVjdDpzdW1tYXJ5SXRlbS5nZXQoKV07CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5
SXRlbSAqc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAg
ICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8gdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbSh0
b3RhbEFuZExpbmVJdGVtcy50b3RhbCkpCi0gICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFk
ZE9iamVjdDp0b3RhbEl0ZW0uZ2V0KCldOworICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAq
dG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbSh0b3RhbEFuZExpbmVJdGVtcy50b3Rh
bCkpCisgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW1dOwog
CiAgICAgcmV0dXJuIHBheW1lbnRTdW1tYXJ5SXRlbXM7CiB9CkBAIC0zOTksOSArMjAzLDkgQEAg
c3RhdGljIFBLU2hpcHBpbmdUeXBlIHRvUEtTaGlwcGluZ1R5cGUoV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlMKICAgICB9CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8UEtT
aGlwcGluZ01ldGhvZD4gdG9QS1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCitQ
S1NoaXBwaW5nTWV0aG9kICp0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkK
IHsKLSAgICBSZXRhaW5QdHI8UEtTaGlwcGluZ01ldGhvZD4gcmVzdWx0ID0gW1BBTDo6Z2V0UEtT
aGlwcGluZ01ldGhvZENsYXNzKCkgc3VtbWFyeUl0ZW1XaXRoTGFiZWw6c2hpcHBpbmdNZXRob2Qu
bGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihzaGlwcGluZ01ldGhvZC5hbW91bnQpXTsKKyAg
ICBQS1NoaXBwaW5nTWV0aG9kICpyZXN1bHQgPSBbUEFMOjpnZXRQS1NoaXBwaW5nTWV0aG9kQ2xh
c3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5sYWJlbCBhbW91bnQ6dG9E
ZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOwogICAgIFtyZXN1bHQgc2V0SWRl
bnRpZmllcjpzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyXTsKICAgICBbcmVzdWx0IHNldERldGFp
bDpzaGlwcGluZ01ldGhvZC5kZXRhaWxdOwogCkBAIC00NzAsMTcgKzI3NCwxNyBAQCBSZXRhaW5Q
dHI8UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3Jt
UGF5bWVudFJlcXVlc3QoYwogCiAgICAgYXV0byBzaGlwcGluZ01ldGhvZHMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0
aG9kIDogcGF5bWVudFJlcXVlc3Quc2hpcHBpbmdNZXRob2RzKCkpCi0gICAgICAgIFtzaGlwcGlu
Z01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkuZ2V0
KCldOworICAgICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0b1BLU2hpcHBpbmdNZXRo
b2Qoc2hpcHBpbmdNZXRob2QpXTsKICAgICBbcmVzdWx0IHNldFNoaXBwaW5nTWV0aG9kczpzaGlw
cGluZ01ldGhvZHMuZ2V0KCldOwogCiAgICAgYXV0byBwYXltZW50U3VtbWFyeUl0ZW1zID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7CiAgICAgZm9yIChhdXRvJiBsaW5l
SXRlbSA6IHBheW1lbnRSZXF1ZXN0LmxpbmVJdGVtcygpKSB7Ci0gICAgICAgIGlmIChhdXRvIHN1
bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCi0gICAgICAgICAg
ICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW0uZ2V0KCldOworICAg
ICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1bW1hcnlJdGVtID0gdG9QS1BheW1lbnRT
dW1tYXJ5SXRlbShsaW5lSXRlbSkpCisgICAgICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBh
ZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwogICAgIH0KIAotICAgIGlmIChhdXRvIHRvdGFsSXRlbSA9
IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0ocGF5bWVudFJlcXVlc3QudG90YWwoKSkpCi0gICAgICAg
IFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW0uZ2V0KCldOworICAgIGlm
IChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRl
bShwYXltZW50UmVxdWVzdC50b3RhbCgpKSkKKyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMg
YWRkT2JqZWN0OnRvdGFsSXRlbV07CiAKICAgICBbcmVzdWx0IHNldFBheW1lbnRTdW1tYXJ5SXRl
bXM6cGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV07CiAKQEAgLTUxMywyNzggKzMxNywyOSBAQCBS
ZXRhaW5QdHI8UEtQYXltZW50UmVxdWVzdD4gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtUGF5bWVudFJlcXVlc3QoYwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNpZiBIQVZF
KFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzIHN0YXR1cykKLXsKLSAgICBzd2l0Y2ggKHN0YXR1cykgewotICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAg
IHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLSAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgotICAgICAgICByZXR1
cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0gICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6Ci0gICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7Ci0gICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgotICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKLSAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgotICAgICAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7Ci0gICAgfQot
fQotCi1zdGF0aWMgUEtQYXltZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNv
cmU6OlBheW1lbnRFcnJvcjo6Q29kZSBjb2RlKQotewotICAgIHN3aXRjaCAoY29kZSkgewotICAg
IGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgotICAgICAgICByZXR1
cm4gUEtQYXltZW50VW5rbm93bkVycm9yOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50
U2hpcHBpbmdDb250YWN0SW52YWxpZEVycm9yOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVy
cm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1l
bnRCaWxsaW5nQ29udGFjdEludmFsaWRFcnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRF
cnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgIHJldHVybiBQS1BheW1l
bnRTaGlwcGluZ0FkZHJlc3NVbnNlcnZpY2VhYmxlRXJyb3I7Ci0gICAgfQotfQotCi1zdGF0aWMg
UmV0YWluUHRyPE5TRXJyb3I+IHRvTlNFcnJvcihjb25zdCBXZWJDb3JlOjpQYXltZW50RXJyb3Im
IGVycm9yKQotewotICAgIGF1dG8gdXNlckluZm8gPSBhZG9wdE5TKFtbTlNNdXRhYmxlRGljdGlv
bmFyeSBhbGxvY10gaW5pdF0pOwotICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6ZXJyb3IubWVzc2Fn
ZSBmb3JLZXk6TlNMb2NhbGl6ZWREZXNjcmlwdGlvbktleV07Ci0KLSAgICBpZiAoZXJyb3IuY29u
dGFjdEZpZWxkKSB7Ci0gICAgICAgIE5TU3RyaW5nICpwa0NvbnRhY3RGaWVsZCA9IG5pbDsKLSAg
ICAgICAgTlNTdHJpbmcgKnBvc3RhbEFkZHJlc3NLZXkgPSBuaWw7Ci0KLSAgICAgICAgc3dpdGNo
ICgqZXJyb3IuY29udGFjdEZpZWxkKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVy
cm9yOjpDb250YWN0RmllbGQ6OlBob25lTnVtYmVyOgotICAgICAgICAgICAgcGtDb250YWN0Rmll
bGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmVOdW1iZXIoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250
YWN0RmllbGQ6OkVtYWlsQWRkcmVzczoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFM
OjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZEVtYWlsQWRkcmVzcygpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6TmFtZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9Q
S0NvbnRhY3RGaWVsZE5hbWUoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBob25ldGljTmFtZToKLSAgICAg
ICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBo
b25ldGljTmFtZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzczoKLSAgICAgICAgICAg
IHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFk
ZHJlc3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkZHJlc3NMaW5lczoKLSAgICAgICAgICAgIHBrQ29u
dGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3Mo
KTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdHJl
ZXRLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlN1YkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1Ykxv
Y2FsaXR5S2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29u
dGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3Mo
KTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NDaXR5
S2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwot
ICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1Bvc3RhbENv
ZGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlN1YkFkbWluaXN0cmF0aXZlQXJlYToKLSAgICAgICAg
ICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3Rh
bEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFk
ZHJlc3NTdWJBZG1pbmlzdHJhdGl2ZUFyZWFLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkFkbWluaXN0
cmF0aXZlQXJlYToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tp
dF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJl
c3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291
bnRyeToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkg
PSBnZXRDTlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5
Q29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tpdF9QS0Nv
bnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFkZHJlc3NLZXkg
PSBnZXRDTlBvc3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLQotICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBrQ29udGFjdEZp
ZWxkIGZvcktleTpQQUw6OmdldF9QYXNzS2l0X1BLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNl
ckluZm9LZXkoKV07Ci0gICAgICAgIGlmIChwb3N0YWxBZGRyZXNzS2V5KQotICAgICAgICAgICAg
W3VzZXJJbmZvIHNldE9iamVjdDpwb3N0YWxBZGRyZXNzS2V5IGZvcktleTpQQUw6OmdldF9QYXNz
S2l0X1BLUGF5bWVudEVycm9yUG9zdGFsQWRkcmVzc1VzZXJJbmZvS2V5KCldOwotICAgIH0KLQot
ICAgIHJldHVybiBhZG9wdE5TKFtbTlNFcnJvciBhbGxvY10gaW5pdFdpdGhEb21haW46Z2V0UEtQ
YXltZW50RXJyb3JEb21haW4oKSBjb2RlOnRvUEtQYXltZW50RXJyb3JDb2RlKGVycm9yLmNvZGUp
IHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNBcnJh
eT4gdG9OU0Vycm9ycyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6UGF5bWVudEVycm9yPiYgZXJyb3Jz
KQotewotICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBp
bml0XSk7Ci0KLSAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7Ci0gICAgICAg
IGlmIChhdXRvIG5zRXJyb3IgPSB0b05TRXJyb3IoZXJyb3IpKQotICAgICAgICAgICAgW3Jlc3Vs
dCBhZGRPYmplY3Q6bnNFcnJvci5nZXQoKV07Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX0KLSNlbHNlCi1zdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCi17Ci0gICAgaWYgKCFyZXN1bHQpCi0gICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLQotICAgIGlmIChyZXN1
bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgewotICAgICAgICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+
ZXJyb3JzWzBdOwotICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKLSAgICAgICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246Ci0gICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKLSAgICAgICAgICAg
IHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLQotICAgICAgICBj
YXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgot
ICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmls
bGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICBpZiAoZXJyb3IuY29u
dGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm4gUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7Ci0K
LSAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNo
aXBwaW5nQ29udGFjdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHN3aXRjaCAocmVzdWx0LT5z
dGF0dXMpIHsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpT
dWNjZXNzOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nl
c3M7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVy
ZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwot
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVk
OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVk
OwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29y
cmVjdDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNv
cnJlY3Q7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElO
TG9ja291dDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5M
b2Nrb3V0OwotICAgIH0KLQotICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
RmFpbHVyZTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Npb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkUmVhY2hGaW5hbFN0YXRlID0gV2ViQ29y
ZTo6aXNGaW5hbFN0YXRlUmVzdWx0KHJlc3VsdCk7Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVM
QVJfRVJST1JTKQotICAgIGF1dG8gc3RhdHVzID0gcmVzdWx0ID8gcmVzdWx0LT5zdGF0dXMgOiBX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczsKLSAgICBhdXRvIHBr
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdEluc3RhbmNlKCkgaW5pdFdpdGhTdGF0dXM6dG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKHN0YXR1cykgZXJyb3JzOnJlc3VsdCA/IHRvTlNFcnJvcnMocmVz
dWx0LT5lcnJvcnMpLmdldCgpIDogQFsgXV0pOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHBrUGF5
bWVudEF1dGhvcml6YXRpb25SZXN1bHQuZ2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxl
dGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0KSk7Ci0jZW5kaWYKLSAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRB
dXRob3JpemVkQ29tcGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2Vu
dGVyLT5jb21wbGV0ZVBheW1lbnRTZXNzaW9uKHJlc3VsdCk7CiB9CiAKIHZvaWQgV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24oY29u
c3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgcGF5bWVudE1lcmNoYW50U2Vzc2lv
bikKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsK
LSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUp
OwotCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9z
ZXNzaW9uQmxvY2socGF5bWVudE1lcmNoYW50U2Vzc2lvbi5wa1BheW1lbnRNZXJjaGFudFNlc3Np
b24oKSwgbnVsbHB0cik7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9zZXNzaW9uQmxvY2sgPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblBy
ZXNlbnRlci0+Y29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24ocGF5bWVudE1lcmNoYW50U2Vzc2lv
bik7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGlu
Z01ldGhvZFVwZGF0ZT4mIHVwZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAgaWYgKHVwZGF0ZSkKLSAgICAgICAgbV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0
ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVt
cyk7Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIGF1dG8gcGtTaGlw
cGluZ01ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1t
YXJ5SXRlbXMuZ2V0KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihwa1NoaXBwaW5n
TWV0aG9kVXBkYXRlLmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24o
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MsIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7Ci0j
ZW5kaWYKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRo
b3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKHVwZGF0
ZSk7CiB9CiAKLSNpZiAhSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLXN0YXRpYyBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiB1cGRhdGUpCi17
Ci0gICAgaWYgKCF1cGRhdGUgfHwgdXBkYXRlLT5lcnJvcnMuaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0KLSAgICBpZiAodXBk
YXRlLT5lcnJvcnMuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgYXV0byYgZXJyb3IgPSB1cGRhdGUt
PmVycm9yc1swXTsKLSAgICAgICAgc3dpdGNoIChlcnJvci5jb2RlKSB7Ci0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgotICAgICAgICBjYXNlIFdlYkNv
cmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgICAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0KLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoK
LSAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZEJp
bGxpbmdQb3N0YWxBZGRyZXNzOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpTaGlwcGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICAgICAgaWYgKGVycm9yLmNv
bnRhY3RGaWVsZCAmJiBlcnJvci5jb250YWN0RmllbGQgPT0gV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OlBvc3RhbEFkZHJlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOwot
Ci0gICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRT
aGlwcGluZ0NvbnRhY3Q7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci19Ci0jZW5kaWYKLQogdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlv
bihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTaGlwcGluZ0NvbnRhY3RVcGRhdGU+JiB1cGRhdGUp
CiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0g
ICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsK
LQotICAgIGlmICh1cGRhdGUpIHsKLSAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1t
YXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7Ci0KLSAgICAgICAgYXV0byBz
aGlwcGluZ01ldGhvZHMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgZm9yIChhdXRvJiBzaGlwcGluZ01ldGhvZCA6IHVwZGF0ZS0+bmV3U2hpcHBpbmdN
ZXRob2RzKQotICAgICAgICAgICAgW3NoaXBwaW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBw
aW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKS5nZXQoKV07Ci0KLSAgICAgICAgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBXVEZN
b3ZlKHNoaXBwaW5nTWV0aG9kcyk7Ci0gICAgfQotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFS
X0VSUk9SUykKLSAgICBhdXRvIHBrU2hpcHBpbmdDb250YWN0VXBkYXRlID0gYWRvcHROUyhbUEFM
OjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGlu
aXRXaXRoRXJyb3JzOnVwZGF0ZSA/IHRvTlNFcnJvcnModXBkYXRlLT5lcnJvcnMpLmdldCgpIDog
QFsgXSBwYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01l
dGhvZHMuZ2V0KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24ocGtTaGlwcGluZ0Nv
bnRhY3RVcGRhdGUuZ2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24o
dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKHVwZGF0ZSksIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpLCBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5
SXRlbXMuZ2V0KCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gbnVs
bHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlU2hpcHBpbmdDb250
YWN0U2VsZWN0aW9uKHVwZGF0ZSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlBheW1lbnRNZXRob2RVcGRhdGU+JiB1cGRhdGUpCiB7Ci0gICAgQVNTRVJUKG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIGlmICh1cGRhdGUp
Ci0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
cGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3
VG90YWxBbmRMaW5lSXRlbXMpOwotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
LSAgICBhdXRvIHBrUGF5bWVudE1ldGhvZFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50
U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24ocGtQYXltZW50TWV0aG9kVXBkYXRlLmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9k
Q29tcGxldGlvbihtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29t
cGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAogVmVjdG9yPFN0cmluZz4gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQXZhaWxhYmxlUGF5bWVudE5ldHdvcmtz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5
L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQppbmRleCA0MzIzNTI3MDI5OTgw
M2ExZGZhMGFkZDgwYWNlMDMxMTBkOTgzZDFhLi41MGMwMTIxMmJhN2E4ZmI4ZDBmOTFmOWYxZmE2
YWQ2OGJmMzVmZGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9p
b3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCkBAIC0y
OSw4ICsyOSw4IEBACiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgRU5BQkxFKEFQUExFX1BB
WSkKIAogI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKICNpbXBvcnQgPFBhc3NLaXQvUGFzc0tpdC5o
PgogI2ltcG9ydCA8VUlLaXQvVUlWaWV3Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9Q
YXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgpAQCAtNDAsNDcgKzQwLDE3IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNo
b3dQYXltZW50VUkoY29uc3QgVVJMJiBvcmlnaW5hdGluZ1VSTCwgY29uc3QgVmVjdG9yPFVSTD4m
IGxpbmtJY29uVVJMU3RyaW5ncywgY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVu
dFJlcXVlc3QmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyKCp0aGlzKTsKLQotICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKSB7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVCghbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLQogICAg
IGF1dG8gcGF5bWVudFJlcXVlc3QgPSBwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KG9yaWdpbmF0aW5n
VVJMLCBsaW5rSWNvblVSTFN0cmluZ3MsIHJlcXVlc3QpOwogCi0gICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50UmVxdWVzdDpw
YXltZW50UmVxdWVzdC5nZXQoKV0pOwotICAgIGlmICghbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlID0gYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBheW1lbnRDb29yZGluYXRvclByb3h5Oip0aGlz
XSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9w
YXltZW50U3VtbWFyeUl0ZW1zID0gW3BheW1lbnRSZXF1ZXN0IHBheW1lbnRTdW1tYXJ5SXRlbXNd
OwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hp
cHBpbmdNZXRob2RzID0gW3BheW1lbnRSZXF1ZXN0IHNoaXBwaW5nTWV0aG9kc107Ci0KLSAgICBb
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKLSAgICBbbV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0KLSAgICBbcHJl
c2VudGluZ1ZpZXdDb250cm9sbGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjptX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIuZ2V0KCkgYW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVs
bHB0cl07Ci0KLSAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKKyAgICBBU1NFUlQoIW1fYXV0
aG9yaXphdGlvblByZXNlbnRlcik7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbV9j
bGllbnQucGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcigqdGhpcywgcGF5
bWVudFJlcXVlc3QuZ2V0KCkpOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+cHJlc2Vu
dChtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKnRo
aXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHk6OmhpZGVQYXltZW50VUkoKQogewotICAgIEFTU0VSVChtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBbW21fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdIGRpc21pc3NWaWV3
Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwotICAgIFttX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbbV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTpuaWxd
OwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IG51bGxwdHI7Ci0K
LSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxp
ZGF0ZV07Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
PSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+ZGlzbWlzcygpOworICAg
IG1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG51bGxwdHI7CiB9CiAKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbQppbmRleCBiZDI1NjRjNDNjYzgyNjc1YjNmOTBmN2FmMzUy
OGMwMjZiYmFlNWY0Li4xYjVkYWUwMTNhYzIxZGNjNjY4YzQ3M2I4OGUzYzZjNWU0ZTczNDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
bWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAK
ICNpZiBQTEFURk9STShNQUMpICYmIEVOQUJMRShBUFBMRV9QQVkpCiAKKyNpbXBvcnQgIlBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5o
IgotI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgogI2ltcG9ydCA8
cGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAK
QEAgLTY0LDEyICs2NCw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMCiAKICAgICAgICAgQVNT
RVJUKHZpZXdDb250cm9sbGVyKTsKIAotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtb
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KnBheW1lbnRDb29yZGluYXRvclByb3h5XSk7Ci0g
ICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSBbcGF5bWVudFJlcXVl
c3QgcGF5bWVudFN1bW1hcnlJdGVtc107Ci0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5
LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5n
TWV0aG9kcyA9IFtwYXltZW50UmVxdWVzdCBzaGlwcGluZ01ldGhvZHNdOwotICAgICAgICBwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
ID0gdmlld0NvbnRyb2xsZXI7Ci0gICAgICAgIFtwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOnBheW1lbnRDb29y
ZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS5nZXQoKV07Ci0gICAgICAgIFtwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTpwYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUu
Z2V0KCldOworICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9hdXRob3JpemF0aW9u
UHJlc2VudGVyID0gc3RkOjptYWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyPigqcGF5bWVudENvb3JkaW5hdG9yUHJveHksIHZpZXdDb250cm9sbGVyKTsKIAogICAg
ICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2luZG93KTsKICAg
ICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBbTlNXaW5kb3cg
d2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07CkBAIC05MCwy
NiArODUsMjAgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRV
SSgpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcpIHsKICAgICAgICAgKytt
X3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKIAotICAgICAgICBBU1NFUlQoIW1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgICAgIEFTU0VSVCghbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAgICAgICBBU1NFUlQoIW1fYXV0
aG9yaXphdGlvblByZXNlbnRlcik7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldFdpbmRvdyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUpOworICAgIEFTU0VSVChtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIp
OwogICAgIEFTU0VSVChtX3NoZWV0V2luZG93KTsKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50
ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zaGVldFdpbmRvd1dpbGxDbG9zZU9i
c2VydmVyLmdldCgpXTsKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2ZXIgPSBudWxs
cHRyOwogCiAgICAgW1ttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBlbmRTaGVldDptX3NoZWV0
V2luZG93LmdldCgpXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
IHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRp
b25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBu
dWxscHRyOwogCiAgICAgbV9zaGVldFdpbmRvdyA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggYjczMWViMjlhNzgzNGJkMGJhNDk5MDYzNTA5OTZlYjU0NGY1ZjlhZi4uYTcz
MGE1NWQxM2FhNzEzNGY2N2JjNTNiZDlkMTkwYTVhNWFlMjAwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY1LDggKzY1LDExIEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxhdGZvcm0vY2xh
c3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNvY29hLmNwcAog
UGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5jcHAK
IAorUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KK1BsYXRm
b3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KIFBsYXRmb3Jt
L2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0vY29jb2EvV0tDcmFzaFJlcG9y
dGVyLm1tCitQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0K
IFBsYXRmb3JtL2NvY29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8tdW5pZnkKIAogUGxhdGZvcm0v
Zm91bmRhdGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCAyMTU1ZDE0MmU0NGZiYTU0NDU4YmM3MWY1MzkxYmU2ZTA5YjRlODAz
Li40NDgzYjNiMjk2NTNkZmRlMTQ1ZTQ4YjE0MWI5Mjg3MzcyZTUxZDU1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk4Niw2ICsxOTg2LDcgQEAgcHJpdmF0ZToK
ICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFVJVmll
d0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNvbnN0IFN0cmlu
ZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0
aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVz
dCAqKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKE1B
QykKICAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dpbmRvdyhjb25z
dCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNmQxODVmZGYwOTczZDhiZTJh
M2I0YjZkNTM3ZjUwZDg0ZTU4NjhkOC4uMDk1YWJlNzcyYjYwOTA5ZmM5MzZkOTNkMzIzMjZjZjU3
Y2IwM2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5
SU9TLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50
LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlBhZ2VDbGllbnQuaCIK
KyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKICNpbXBvcnQg
IlByaW50SW5mby5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5o
IgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3NhZ2VzLmgiCkBA
IC0xMTg3LDYgKzExODgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVlc3RQYXNzd29y
ZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAogI2lmIEVOQUJM
RShBUFBMRV9QQVkpCiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2Vu
dGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0b3JQcm94eSwg
UEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCit7CisgICAgcmV0dXJuIHN0ZDo6bWFr
ZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5bWVudENvb3Jk
aW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlWaWV3Q29udHJvbGxlciAqV2Vi
UGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoY29u
c3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIHJldHVybiB1aUNsaWVudCgp
LnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTliMDc1Njg1MGQ3ODBkNDU1YjVlMjcyMTNm
NDE0ZjQ0OTQ3NzAxZi4uNzc5NWRkYTE0NzVjYTIwZGJjNDM1ZmJjOTMyNzFiY2ZhNDNkZTNkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yOTMsNyArMjkzLDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAwMjkwRDYyIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJUcmVlRHJh
d2luZ0FyZWEuaCAqLzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxh
eWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRy
ZWVEcmF3aW5nQXJlYVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVBMTY0QjNBODgwMDI5MEQ2MiAv
KiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBENjIgLyogUmVtb3RlTGF5ZXJU
cmVlQ29udGV4dC5oICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3OEMxRDFCMzM1NTAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3OTYxRDFCMzYxMzAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MjFEMUIzNjEzMDA3QzlC
RDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJ
MUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5
MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMuaCAqLzsg
fTsKQEAgLTEyODQsNiArMTI4MywxMCBAQAogCQlBMTNEQzY4MjIwN0FBNkIyMDA2NkVGNzIgLyog
V0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2NkVGNzIgLyogV0tBcHBs
aWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUExNUVFREU2MUUzMDFDRUUwMDAw
NjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3
LmggKi87IH07CiAJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0Nv
Y29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc1
QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICovOyB9OworCQlB
MTc5OEIzRTIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNzk4QjNE
MjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oICovOyB9
OworCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaCAqLzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJQTE4MUE3OTgyMUFDQzc0QjAw
NTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRp
dGlvbnMubW0gKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmls
aXR5SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICovOyB9OwogCQlB
MTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVySW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExOURE
M0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRlcm5hbC5o
ICovOyB9OwpAQCAtMjIyOCw3ICsyMjMxLDYgQEAKIAkJMUFCMUY3NzExRDFCMkY3RTAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGlu
YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MzFEMUIyRjdFMDA3
QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQUIxRjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFBQjFGNzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkxQUIxRjc3RDFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM4
NTMsNiArMzg1NSwxMyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29y
ZFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYXNzd29yZFZpZXcu
aDsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVyc0NvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFBQTMzMUIwMDAwMzdEMCAvKiBB
cmd1bWVudENvZGVyc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXJndW1lbnRDb2Rl
cnNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCM0QyMjJEOTdB
MjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNDAyMjJE
OThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0NzIyMkU1MzBBMDAwNzY0QkQg
LyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlBMTc5OEI0ODIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0QTIyMkYxMzNBMDAw
NzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgxQTc5NzIxQUNB
QzYxMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViS2l0QWRkaXRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgyRDVC
MjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmls
aXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
T1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNzIsNyArNTI4MSw3IEBACiAJ
CTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJCQlBMTc5OEI0QjIyMkYxQkQ0
MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovLAogCQkJCTFB
QjFGNzc5MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29h
Lm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYzODksMTAgKzYzOTgsMTYgQEAK
IAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIyMkQ5N0EyMDAwNzY0QkQgLyog
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJCQlBMTc5OEI0QTIyMkYxMzNB
MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8sCisJCQkJQTE3
OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIuaCAqLywKKwkJCQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVCRjFEQzNGQUU1MDA5OTQzRjIg
LyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovLAogCQkJCUExODFBNzk3MjFBQ0FDNjEwMDU5QTMx
NiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4MjIxRjZFNTE4MjAwQzQzRjlG
IC8qIFdLQ3Jhc2hSZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIzMUY2RTUxODIwMEM0M0Y5RiAv
KiBXS0NyYXNoUmVwb3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8q
IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAorCQkJCUExNzk4QjQ4MjIyRTUz
MEEwMDA3NjRCRCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0gKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkyNTYs
NiArOTI3MSw4IEBACiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJDQjE1IC8qIFBhZ2VMb2FkU3Rh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDNDODYwMDgyREY3NyAvKiBQYWdl
TG9hZFN0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzRBNTgxMTJFNjY2ODEw
MDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCUExNzk4QjNF
MjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxRTEyM0JBMjBBMTE1
NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE5NTgy
RDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5oIGluIEhlYWRl
cnMgKi8sCkBAIC05NTYwLDcgKzk1NzcsNyBAQAogCQkJCTdDNDY5NENBMUE0QjRFQTEwMEFENTg0
NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFC
MUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjFGNzdFMUQxQjMwQTkw
MDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAq
LywKKwkJCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYxMzAwN0M5QkQx
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2NTkwMDdCRDUzOSAvKiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg3NCw2ICs5ODkxLDcgQEAK
IAkJCQkxQUI4QTFGMjE4NDAwQjYyMDBFOUFFNjkgLyogV0tQYWdlVUlDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5
VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBX
S1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDkyMjJFNTMxRDAwMDc2
NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlckluZGljYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8qIFdLUERGVmll
dy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUyIC8qIFdLUGx1
Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NjgsNiArMTA4ODYsNyBAQAog
CQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0b3JVSU1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2NjdCMDA5QjY2
NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNsaWVudEZldGNo
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxREU3QzZDMjIyNzhGMUUw
MDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFnbmlmaWNhdGlv
bkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUEzMzRE
RUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2VpdmVyLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTEwNTIsNyArMTEwNzEsNiBAQAogCQkJCTJEODUwOEM2MjEyRTMz
RUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4
NTA4RDgyMTJFMzNFRDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkyRDg1MDhDNTIxMkUzM0VEMDAwRUY0NkMgLyogVW5pZmllZFNvdXJjZTk5LmNwcCBp
biBTb3VyY2VzICovLAotCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29y
a2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODUwOEQyMjEyRTMzRUQwMDBF
RjQ2QyAvKiBVbmlmaWVkU291cmNlMTAwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDkxQjBE
MUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ5MUIxNzFFNzM1MjU1MDAwMDkwNjYgLyogVXNl
ck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363805</attachid>
            <date>2019-03-06 16:02:28 -0800</date>
            <delta_ts>2019-03-06 16:16:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190306160228.patch</filename>
            <type>text/plain</type>
            <size>117767</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi41OGM2YTMxNTBjYjVkODZjZjY3MDgx
MzAzZTcyM2E0YTA2N2NmNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2
MjU1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZWQgc29mdC1saW5raW5nIG9mIFBLUGF5bWVudEVycm9yRG9tYWluIGZyb20gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgdG8gaGVyZSBhbmQgdXNlZAorICAgICAgICBhIG1vcmUgZGVzY3Jp
cHRpdmUgcGxhdGZvcm0gbWFjcm8uCisKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLmg6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbToKKwogMjAxOS0w
My0wMSAgQ29ucmFkIFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IEltcHJvcGVyIHVzZSBvZiBQTEFURk9STShUVk9TKSBpbiBQQUwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZkYjU2
MGUxMzE4NDU2YmQ3OWQxZTdjNGY4ZmZmYzc1ODI1ZWQ3YS4uYWU2MWY2MWE2MDkwNDFmZmViNjAz
YjIxNDdkZWIwOTYwNDAwNjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMTktMDMt
MDUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXld
IFVudGFuZ2xlIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBmcm9tIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTUzNDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI1NTEwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgYW5kIFdLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZSB0byBlbmNhcHN1bGF0ZQorICAgICAgICBQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgYW5kIGl0cyBkZWxlZ2F0ZS4gVGF1Z2h0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5IHRvCisgICAgICAgIGludGVyYWN0IHdpdGggUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIgcmF0aGVyIHRoYW4gUEtQQVZDIGRpcmVjdGx5LgorCisgICAgICAgIFRoZXNlIGNo
YW5nZXMgd2lsbCBhbGxvdyB1cyB0byBzd2FwIG91dCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgd2l0aCBQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciBpbiBhIGZv
bGxvdy1vbiBwYXRjaC4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmg6IEFkZGVkLiBEZWZpbmVkIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2Ug
Zm9yCisgICAgICAgIHBheW1lbnQgYXV0aG9yaXphdGlvbiBwcmVzZW50ZXJzIHRoYXQgdXNlIFBL
UEEoVilDLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKTogTW92ZWQgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
LgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0Ojp0b05TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9OU0Vycm9y
cyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2RzKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbik6IEFkZGVkLiBJbXBsZW1lbnRzIHRoZQorICAgICAgICBsb2dp
YyBwcmV2aW91c2x5IGluIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKTogRGl0dG8gZm9y
CisgICAgICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24pOiBEaXR0byBmb3IgCisgICAgICAg
IChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbik6IERpdHRvIGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uLgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbik6IERpdHRvIGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uLgorICAgICAgICAqIFBsYXRm
b3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDogQWRkZWQuIERl
ZmluZWQgYSBzdWJjbGFzcyBvZiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciBmb3IgUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLgorICAgICAgICAqIFBsYXRmb3JtL2Nv
Y29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbml0V2l0
aFByZXNlbnRlcjpdKTogQWRkZWQgYSBQS1BBVkMKKyAgICAgICAgZGVsZWdhdGUgdGhhdCdzIGEg
c3ViY2xhc3Mgb2YgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOgorICAgICAgICBDYWxsZWQgLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEZpbmlzaF0uCisgICAgICAgICgtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVyOl0pOiBDYWxsZWQK
KyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEF1dGhvcml6ZVBh
eW1lbnQ6Y29tcGxldGlvbjpdLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmhhbmRsZXI6XSk6IENhbGxlZAorICAgICAgICAtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6Y29tcGxl
dGlvbjpdLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdDpoYW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0uCisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpo
YW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUgX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOndpbGxGaW5pc2hXaXRoRXJyb3I6XSk6CisgICAgICAgIENhbGxl
ZCAtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfd2lsbEZpbmlzaFdpdGhFcnJvcjpd
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNl
c3Npb246XSk6IENhbGxlZAorICAgICAgICAtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29h
L1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgc3VtbWFyeUl0ZW1zXSk6IEFk
ZGVkIGEgc3VtbWFyeUl0ZW1zIGdldHRlci4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIHNoaXBwaW5nTWV0aG9kc10pOiBEaXR0byBmb3Igc2hpcHBpbmdNZXRob2Rz
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb246ZXJyb3I6XSk6IENhbGxlZAorICAgICAgICBfZGlkUmVxdWVzdE1lcmNo
YW50U2Vzc2lvbkNvbXBsZXRpb24gdGhlbiBzZXQgaXQgdG8gbmlsLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
Ol0pOiBEaXR0byBmb3IKKyAgICAgICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9u
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRlOl0pOiBEaXR0bworICAgICAgICBm
b3IgX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246c3Vt
bWFyeUl0ZW1zOnNoaXBwaW5nTWV0aG9kczplcnJvcnM6XSk6CisgICAgICAgIERpdHRvIGZvciBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbi4KKyAgICAgICAgKC1bV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246XSk6
IERpdHRvIGZvcgorICAgICAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgaW52YWxpZGF0ZV0pOiBJ
ZiB0aGVyZSdzIGFuIG91dHN0YW5kaW5nIGF1dGhvcml6YXRpb24KKyAgICAgICAgY2FsbGJhY2ss
IGNhbGxlZCAtY29tcGxldGVQYXltZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRl
OiB3aXRoIGEgc3RhdGUgb2YKKyAgICAgICAgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0Zh
aWx1cmUuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfaW5pdFdp
dGhQcmVzZW50ZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkQXV0aG9yaXplUGF5bWVudDpjb21wbGV0aW9uOl0pOiBBZGRlZC4gSW1wbGVtZW50cyB0
aGUKKyAgICAgICAgbG9naWMgcHJldmlvdXNseSBpbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRGaW5pc2hdKTogRGl0dG8uCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0UGF5bWVudE1l
dGhvZDpjb21wbGV0aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKTogRGl0
dG8uCisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKTogTW92ZWQgZnJvbSBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRpb246XSk6IEFkZGVkLiBJ
bXBsZW1lbnRzCisgICAgICAgIHRoZSBsb2dpYyBwcmV2aW91c2x5IGluIFdLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgX3dpbGxGaW5pc2hXaXRoRXJyb3I6XSk6IERpdHRvLgorICAgICAg
ICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJXaWxsVmFs
aWRhdGVNZXJjaGFudCk6IFRvIGNvbmZvcm0gdG8KKyAgICAgICAgUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OkNsaWVudCwgcmVuYW1lZCBmcm9tIHZhbGlkYXRlTWVyY2hhbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRBdXRo
b3JpemVQYXltZW50KTogUmVuYW1lZCBmcm9tCisgICAgICAgIGRpZEF1dGhvcml6ZVBheW1lbnQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJE
aWRGaW5pc2gpOiBNb3ZlZCBsb2dpYyBoZXJlIHRoYXQgcHJldmlvdXNseQorICAgICAgICBleGlz
dGVkIGluIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZGlkU2VsZWN0U2hpcHBp
bmdNZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
cmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QpOiBSZW5hbWVkIGZyb20KKyAgICAgICAg
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZCk6IFJlbmFtZWQg
ZnJvbQorICAgICAgICBkaWRTZWxlY3RQYXltZW50TWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6IFJlbmFtZWQgdG8K
KyAgICAgICAgcHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRBdXRob3JpemVQYXltZW50KTogUmVuYW1l
ZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50LgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qp
OiBSZW5hbWVkIHRvCisgICAgICAgIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KTogUmVuYW1lZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKTogUmVuYW1lZCB0bworICAgICAgICBkaWRTZWxlY3RQ
YXltZW50TWV0aG9kLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oOiBDaGFuZ2VkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IHRvCisgICAg
ICAgIHN1YmNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQuCisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaDogUmVtb3ZlZCBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBpbnRlcmZhY2UgYW5kIGRlY2xhcmVkIHNvbWUgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBu
ZWVkZWQgYnkgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuCisgICAgICAgICogU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKTogUmVtb3ZlZCBzdGF0aWMg
a2V5d29yZC4KKyAgICAgICAgKFdlYktpdDo6dG9EZWNpbWFsTnVtYmVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
dG9QS1NoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KTogQ2hhbmdlZCB0byBjYWxs
CisgICAgICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbml0V2l0aFBheW1lbnRD
b29yZGluYXRvclByb3h5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6d2lsbEZpbmlzaFdpdGhFcnJvcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOl0pOiBEZWxldGVkLgorICAgICAgICAodG9TaGlwcGluZ01ldGhvZCk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVu
dDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29t
cGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRp
ZEZpbmlzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKTogTW92ZWQgdG8gUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0u
CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50RXJyb3JDb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OnRvTlNFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b05TRXJyb3Jz
KTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IENoYW5nZWQgdG8gcHJlc2VudCBhCisgICAg
ICAgIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyIHJhdGhlciB0aGFuIGEgUEtQQVZDLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRV
SSk6IENoYW5nZWQgdG8gZGlzbWlzcyBhCisgICAgICAgIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyIHJhdGhlciB0aGFuIGEgUEtQQVZDLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXltZW50
VUkpOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKTogQWRkZWQuIFJldHVybnMgYSBuZXcKKyAgICAgICAg
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMy0wNSAgRGF2aWQgUXVlc2FkYSAgPGRh
dmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEl0IHNob3VsZCBiZSBwb3Nz
aWJsZSB0byBmb2xsb3cgbGlua3Mgd2l0aCAnZG93bmxvYWQnIGF0dHJpYnV0ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0ODk1
NTY1MWQ5Y2MzYjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRkY2Vm
MTI1Zjc3YTE0MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFu
ZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQ
S0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21h
aW4sIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNz
S2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwg
UEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29u
dGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
IFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9u
ZU51bWJlciwgUEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQ
YXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NL
aXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2Vy
SW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVy
RG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBs
ZXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0
U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGlu
ay5tbQppbmRleCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44NzI5
NzNlNGE5NGFmNGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBAQCBT
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hp
cHBpbmdNZXRob2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1l
bnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAq
bGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxh
bmd1YWdlQ29kZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFTU0tJ
VF9HUkFOVUxBUl9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBAQCBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtDb250
YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtDb250
YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9L
ZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwg
TlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlcklu
Zm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRz
V2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAo
TlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlv
biBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4NjY5
ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xs
ZXI7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0OworY2xh
c3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xpZW50
IHsKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYs
IGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVz
ZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGNvbnN0IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9u
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
TWV0aG9kVXBkYXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNsaWVu
dCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgPSAw
OworCitwcml2YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUyNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5UKENv
bnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19D
T05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7
CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlD
b2RlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQo
Q29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAq
KTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5p
c3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0
cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNl
IGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hv
dWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIg
cGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0
YXR1cykKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQYXlt
ZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6
Q29kZSBjb2RlKQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5rbm93
bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0Nv
bnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0SW52
YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5n
Q29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFjdElu
dmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVz
c1Vuc2VydmljZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJlc3NV
bnNlcnZpY2VhYmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vycm9y
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2VySW5m
byA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKKworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNTdHJp
bmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRkcmVz
c0tleSA9IG5pbDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1i
ZXI6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRQaG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxB
ZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpO
YW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1l
OgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxB
ZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
QWRkcmVzc0xpbmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAg
ICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlL
ZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxB
ZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRy
ZXNzUG9zdGFsQ29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5p
c3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAg
ICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFs
QWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRk
cmVzc1N0YXRlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgorICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
UG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9z
dGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50
cnlDb2RlOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0
RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRV
c2VySW5mb0tleSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bh
c3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAgfQor
CisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0X1BL
UGF5bWVudEVycm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2Rl
KSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05TRXJy
b3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7CisgICAg
TlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTplcnJvcnMuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7
CisgICAgICAgIGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAgICAg
ICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKworI2lm
ICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
U3VjY2VzczsKKworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAg
ICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25v
d246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5z
ZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6
QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Cisg
ICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9
PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRT
aGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAgICBp
ZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUtPmVy
cm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3Jz
WzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bv
c3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6
OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZp
ZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRh
Y3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAg
ICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5n
Q29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JBTlVM
QVJfRVJST1JTKQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kPiYgc2hpcHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBwaW5n
TWV0aG9kcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01ldGhv
ZHMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdNZXRo
b2RzKQorICAgICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01l
dGhvZChzaGlwcGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsKK30K
Kwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hhbnRT
ZXNzaW9uKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0Zm9y
bURlbGVnYXRlKCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9uLnBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAg
IEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9
IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5l
SXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1E
ZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNdOwor
fQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
PiYgcmVzdWx0KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhBVkUo
UEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0b1BL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0ID8g
dG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0YXR1
cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJyYXkg
KmVycm9ycyA9IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRl
UGF5bWVudFNlc3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOldl
YkNvcmU6OmlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQorewor
ICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5nTWV0
aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGluZ01l
dGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0FycmF5
ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUt
Pm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7
CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJvcnMg
PSB1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0byBz
dGF0dXMgPSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisgICAg
TlNBcnJheSAqZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdhdGUo
KSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1zOnN1
bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJvcnNd
OworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9k
VXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAg
IE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1z
KHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1h
cnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzFkMzMzZTVlNTk3YzIxOTQwODQwODI5ODA4ZjhjMjE4ZWZkMWNiZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQS1Bh
eW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGU7
CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwgOiBw
dWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiwgUEtQYXltZW50UmVxdWVzdCAq
KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQmLCBQS1Bh
eW1lbnRSZXF1ZXN0ICosIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIC8vIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
CisgICAgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkg
ZmluYWw7CisgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNlbmRpZgorCisgICAgUmV0YWluUHRyPFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJvbGxlcjsKKyAgICBSZXRh
aW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fZGVs
ZWdhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNT
S0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMmRl
NjQ2ZmIxYTUyYzQyMTY2Mjk2YzEzOGNlNTZiMzI2MzQzMzMKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIubW0KQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKKworI2lm
IFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUu
aCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworQGludGVyZmFjZSBX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA6IFdLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxl
Z2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVzdDooUEtQYXltZW50UmVxdWVz
dCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJilwcmVzZW50ZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFJlcXVlc3Q6KFBLUGF5bWVudFJlcXVlc3QgKilyZXF1ZXN0IHByZXNlbnRlcjooV2ViS2l0OjpQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVyCit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBfaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgcHJlc2VudGVyOnByZXNlbnRlcl0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKyNwcmFnbWEg
bWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorCistICh2
b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBbc2VsZiBf
ZGlkRmluaXNoXTsKK30KKworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisKKy0g
KHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50OihQ
S1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRBdXRob3JpemVQ
YXltZW50OnBheW1lbnQgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBw
aW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVx
dWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KK3sKKyAgICBbc2Vs
ZiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjpjb21w
bGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBoYW5kbGVyOih2b2lkIChe
KShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUpKWNvbXBsZXRp
b24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbnRhY3QgY29tcGxl
dGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRo
b2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUg
KnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50TWV0aG9k
OnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2Vsc2UKKworLSAo
dm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBL
UGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZEF1dGhvcml6ZVBheW1lbnQ6
cGF5bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRo
b2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlv
bgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpzaGlwcGluZ01ldGhvZCBj
b21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNv
bXBsZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheTxQ
S1NoaXBwaW5nTWV0aG9kICo+ICosIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikp
Y29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29udGFj
dCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5
bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0
ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50TWV0aG9k
OnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2VuZGlmCisKKyNw
cmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZVBy
aXZhdGUKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHdpbGxGaW5pc2hX
aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtzZWxmIF93aWxsRmluaXNoV2l0aEVy
cm9yOmVycm9yXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRp
ZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9u
ICosIE5TRXJyb3IgKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOmNvbXBsZXRpb25dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0
KQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xpZW50KQorICAgICwgbV92
aWV3Q29udHJvbGxlcihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnJlcXVlc3RdKSkK
KyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFByZXNlbnRlcjoqdGhpc10pKQoreworICAg
IFttX3ZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFtt
X3ZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30K
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oTUFDKQorUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjo6UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiBjbGllbnQsIFBLUGF5bWVudFJlcXVlc3QgKnJlcXVl
c3QsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIp
CisgICAgOiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihjbGllbnQpCisgICAgLCBtX3Zp
ZXdDb250cm9sbGVyKHZpZXdDb250cm9sbGVyKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtb
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoUmVxdWVzdDpyZXF1ZXN0IHByZXNlbnRlcjoqdGhpc10pKQoreworICAgIFttX3ZpZXdDb250
cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFttX3ZpZXdDb250cm9s
bGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30KKyNlbmRpZgorCitX
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgKlBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6OnBsYXRmb3JtRGVsZWdhdGUoKQoreworICAgIHJldHVybiBtX2RlbGVnYXRlLmdl
dCgpOworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OmRpc21p
c3MoKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgW1ttX3ZpZXdDb250cm9sbGVy
IHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5pbWF0ZWQ6
WUVTIGNvbXBsZXRpb246bnVsbHB0cl07CisjZW5kaWYKKyAgICBbbV92aWV3Q29udHJvbGxlciBz
ZXREZWxlZ2F0ZTpuaWxdOworICAgIFttX3ZpZXdDb250cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0
ZTpuaWxdOworICAgIG1fdmlld0NvbnRyb2xsZXIgPSBuaWw7CisgICAgW21fZGVsZWdhdGUgaW52
YWxpZGF0ZV07CisgICAgbV9kZWxlZ2F0ZSA9IG5pbDsKK30KKworI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCisKK3ZvaWQgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6cHJlc2Vu
dChVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXIgfHwgIW1fdmlld0NvbnRyb2xsZXIpCisgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7CisKKyAgICBbcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyIHByZXNlbnRWaWV3Q29udHJvbGxlcjptX3ZpZXdDb250cm9sbGVyLmdldCgpIGFuaW1hdGVk
OllFUyBjb21wbGV0aW9uOm51bGxwdHJdOworICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOwor
fQorCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoUEFT
U0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dL
UGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllMTZiYWFmOGEyZDc0
NzFkMWEyYThiYjE0ZTg5NTU2NWFkYjU3ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oCkBAIC0w
LDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9y
dCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4K
KworT0JKQ19DTEFTUyBOU0FycmF5OworT0JKQ19DTEFTUyBOU0Vycm9yOworT0JKQ19DTEFTUyBV
SVZpZXdDb250cm9sbGVyOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI7CisKK3VzaW5nIERpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25D
b21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKiwgTlNF
cnJvciAqKT47CisKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQordXNpbmcgRGlk
QXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhv
cml6YXRpb25SZXN1bHQgKik+OwordXNpbmcgRGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24gPSBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICop
PjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBCbG9ja1B0cjx2
b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUgKik+OwordXNpbmcgRGlk
U2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKik+OworI2Vsc2UKK3VzaW5nIERpZEF1dGhvcml6
ZVBheW1lbnRDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKT47Cit1c2luZyBEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiA9IEJsb2Nr
UHRyPHZvaWQoTlNBcnJheSAqKT47Cit1c2luZyBEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21w
bGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0Fy
cmF5ICosIE5TQXJyYXkgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0FycmF5
ICopPjsKKyNlbmRpZgorCit9CisKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIDogTlNPYmplY3QKKworLSAoaW5zdGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBkaWRSZWFjaEZpbmFsU3Rh
dGU7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8UEtQYXltZW50U3Vt
bWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICpzaGlwcGluZ01ldGhvZHM7CisKKy0gKHZv
aWQpY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246KFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAq
KXNlc3Npb24gZXJyb3I6KE5TRXJyb3IgKillcnJvcjsKKy0gKHZvaWQpY29tcGxldGVQYXltZW50
TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFy
eUl0ZW1zOworLSAodm9pZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKXN0YXR1cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBk
aWRSZWFjaEZpbmFsU3RhdGU6KEJPT0wpZGlkUmVhY2hGaW5hbFN0YXRlOworLSAodm9pZCljb21w
bGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cylzdGF0dXMgc3VtbWFyeUl0ZW1zOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICop
c3VtbWFyeUl0ZW1zIHNoaXBwaW5nTWV0aG9kczooTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+
ICopc2hpcHBpbmdNZXRob2RzIGVycm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJyb3JzOwor
LSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVu
dFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zOworLSAodm9pZClpbnZhbGlkYXRlOworCitA
ZW5kCisKKy8vIEhlbHBlciBtZXRob2RzIGNhbGxlZCBieSBXS1BheW1lbnRBdXRob3JpemF0aW9u
U2Vzc2lvbidzIHN1YmNsYXNzZXMKK0BpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIChQcm90ZWN0ZWQpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhSZXF1ZXN0OihQ
S1BheW1lbnRSZXF1ZXN0ICopcmVxdWVzdCBwcmVzZW50ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXImKXByZXNlbnRlcjsKKworLSAodm9pZClfZGlkQXV0aG9yaXplUGF5
bWVudDooUEtQYXltZW50ICopcGF5bWVudCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZEF1dGhvcml6
ZVBheW1lbnRDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZEZp
bmlzaDsKKy0gKHZvaWQpX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KFdlYktpdDo6RGlkUmVx
dWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uOworLSAo
dm9pZClfZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5bWVudE1l
dGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9u
OjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFj
dDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uOworLSAodm9pZClfZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBj
b21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbjo6Qmxv
Y2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV93aWxsRmluaXNoV2l0aEVycm9yOihOU0Vycm9y
ICopZXJyb3I7CisKK0BlbmQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUubW0gYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZDRjNTU0YWM1Nzg4YjFkMjI3MDI2ZmJhMjA2YmI1
ZWU2NjMxMWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KQEAgLTAsMCArMSwyMjUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLmgiCisKKyNpZiBVU0UoUEFTU0tJVCkKKworI2ltcG9ydCA8V2Vi
Q29yZS9QYXltZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRNZXRob2QuaD4KKworQGlt
cGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSB7CisgICAgUmV0YWlu
UHRyPE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4+IF9zdW1tYXJ5SXRlbXM7CisgICAg
UmV0YWluUHRyPE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPj4gX3NoaXBwaW5nTWV0aG9kczsK
KyAgICBXZWFrUHRyPFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IF9wcmVz
ZW50ZXI7CisgICAgV2ViS2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiBfZGlkQXV0
aG9yaXplUGF5bWVudENvbXBsZXRpb247CisgICAgV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRT
ZXNzaW9uQ29tcGxldGlvbiBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb247Cisg
ICAgV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb247CisgICAgV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3RDb21wbGV0aW9uIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOworICAgIFdl
YktpdDo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uIF9kaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZENvbXBsZXRpb247Cit9CisKKy0gKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0g
Kj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAgICByZXR1cm4gX3N1bW1hcnlJdGVtcy5nZXQoKTsKK30K
KworLSAoTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzCit7Cisg
ICAgcmV0dXJuIF9zaGlwcGluZ01ldGhvZHMuZ2V0KCk7Cit9CisKKy0gKHZvaWQpY29tcGxldGVN
ZXJjaGFudFZhbGlkYXRpb246KFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqKXNlc3Npb24gZXJy
b3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFJlcXVlc3RNZXJj
aGFudFNlc3Npb25Db21wbGV0aW9uLCBuaWwpKHNlc3Npb24sIGVycm9yKTsKK30KKworLSAodm9p
ZCljb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50U3VtbWFy
eUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAgICBfc3VtbWFyeUl0ZW1zID0gc3VtbWFyeUl0
ZW1zOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byB1cGRhdGUg
PSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGVJ
bnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpfc3VtbWFyeUl0ZW1zLmdldCgp
XSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24s
IG5pbCkodXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0
UGF5bWVudE1ldGhvZENvbXBsZXRpb24sIG5pbCkoX3N1bW1hcnlJdGVtcyk7CisjZW5kaWYKK30K
KworLSAodm9pZCljb21wbGV0ZVBheW1lbnRTZXNzaW9uOihQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzKXN0YXR1cyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycyBkaWRSZWFj
aEZpbmFsU3RhdGU6KEJPT0wpZGlkUmVhY2hGaW5hbFN0YXRlCit7CisgICAgX2RpZFJlYWNoRmlu
YWxTdGF0ZSA9IGRpZFJlYWNoRmluYWxTdGF0ZTsKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJf
RVJST1JTKQorICAgIGF1dG8gcmVzdWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1
dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnN0YXR1cyBlcnJvcnM6
ZXJyb3JzXSk7CisgICAgc3RkOjpleGNoYW5nZShfZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRp
b24sIG5pbCkocmVzdWx0LmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKCFlcnJvcnMuY291bnQp
OworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLCBuaWwp
KHN0YXR1cyk7CisjZW5kaWYKK30KKworLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNl
bGVjdGlvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMgc3VtbWFyeUl0ZW1z
OihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zIHNoaXBwaW5n
TWV0aG9kczooTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICopc2hpcHBpbmdNZXRob2RzIGVy
cm9yczooTlNBcnJheTxOU0Vycm9yICo+ICopZXJyb3JzCit7CisgICAgX3N1bW1hcnlJdGVtcyA9
IHN1bW1hcnlJdGVtczsKKyAgICBfc2hpcHBpbmdNZXRob2RzID0gc2hpcHBpbmdNZXRob2RzOwor
I2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgQVNTRVJUKHN0YXR1cyA9PSBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2Vzcyk7CisgICAgYXV0byB1cGRhdGUgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6ZXJyb3JzIHBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1h
cnlJdGVtcy5nZXQoKSBzaGlwcGluZ01ldGhvZHM6X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pOwor
ICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24sIG5p
bCkodXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAgQVNTRVJUKCFlcnJvcnMuY291bnQpOworICAg
IHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24sIG5pbCko
c3RhdHVzLCBfc2hpcHBpbmdNZXRob2RzLCBfc3VtbWFyeUl0ZW1zKTsKKyNlbmRpZgorfQorCist
ICh2b2lkKWNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246KE5TQXJyYXk8UEtQYXltZW50
U3VtbWFyeUl0ZW0gKj4gKilzdW1tYXJ5SXRlbXMKK3sKKyAgICBfc3VtbWFyeUl0ZW1zID0gc3Vt
bWFyeUl0ZW1zOworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byB1
cGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9k
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVt
cy5nZXQoKV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29t
cGxldGlvbiwgbmlsKSh1cGRhdGUuZ2V0KCkpOworI2Vsc2UKKyAgICBzdGQ6OmV4Y2hhbmdlKF9k
aWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24sIG5pbCkoUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1N1Y2Nlc3MsIF9zdW1tYXJ5SXRlbXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQp
aW52YWxpZGF0ZQoreworICAgIGlmIChfZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24pCisg
ICAgICAgIFtzZWxmIGNvbXBsZXRlUGF5bWVudFNlc3Npb246UEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbXSBkaWRSZWFjaEZpbmFsU3RhdGU6WUVTXTsKK30KKwor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIChQ
cm90ZWN0ZWQpCisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhSZXF1ZXN0OihQS1BheW1lbnRS
ZXF1ZXN0ICopcmVxdWVzdCBwcmVzZW50ZXI6KFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXImKXByZXNlbnRlcgoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgX3N1bW1hcnlJdGVtcyA9IHJlcXVlc3QucGF5bWVu
dFN1bW1hcnlJdGVtczsKKyAgICBfc2hpcHBpbmdNZXRob2RzID0gcmVxdWVzdC5zaGlwcGluZ01l
dGhvZHM7CisgICAgX3ByZXNlbnRlciA9IG1ha2VXZWFrUHRyKHByZXNlbnRlcik7CisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpX2RpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAq
KXBheW1lbnQgY29tcGxldGlvbjooV2ViS2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlv
bjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRBdXRob3JpemVQYXlt
ZW50Q29tcGxldGlvbik7CisgICAgX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uID0gY29t
cGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKKyAgICBp
ZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlUGF5bWVudFNlc3Np
b246UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgZXJyb3JzOkBbIF0gZGlkUmVh
Y2hGaW5hbFN0YXRlOllFU107CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRp
ZEF1dGhvcml6ZVBheW1lbnQoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudChwYXltZW50KSk7
Cit9CisKKy0gKHZvaWQpX2RpZEZpbmlzaAoreworICAgIGlmIChhdXRvIHByZXNlbnRlciA9IF9w
cmVzZW50ZXIuZ2V0KCkpCisgICAgICAgIHByZXNlbnRlci0+Y2xpZW50KCkucHJlc2VudGVyRGlk
RmluaXNoKCpwcmVzZW50ZXIsIF9kaWRSZWFjaEZpbmFsU3RhdGUpOworfQorCistICh2b2lkKV9k
aWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJLaXQ6OkRpZFJlcXVlc3RNZXJjaGFudFNlc3Np
b25Db21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbgoreworICAgIEFTU0VSVCghX2RpZFJl
cXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uKTsKKyAgICBfZGlkUmVxdWVzdE1lcmNoYW50
U2Vzc2lvbkNvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgW1BBTDo6Z2V0UEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXltZW50U2VydmljZXNNZXJjaGFu
dFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgaWYg
KGVycm9yKQorICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJj
aGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJvcik7CisKKyAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgICAgIEFT
U0VSVChfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24pOworCisgICAgICAgICAg
ICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgICAgICAgICBpZiAoIXBy
ZXNlbnRlcikgeworICAgICAgICAgICAgICAgIF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29t
cGxldGlvbihuaWwsIG5pbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlcldpbGxWYWxpZGF0
ZU1lcmNoYW50KCpwcmVzZW50ZXIsIG1lcmNoYW50VVJMKTsKKyAgICAgICAgfSk7CisgICAgfV07
Cit9CisKKy0gKHZvaWQpX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAq
KXBheW1lbnRNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9k
Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRTZWxl
Y3RQYXltZW50TWV0aG9kQ29tcGxldGlvbik7CisgICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RD
b21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRl
ci5nZXQoKTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKworICAgIHByZXNlbnRlci0+Y2xpZW50
KCkucHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQ
YXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKK30KKworLSAodm9pZClfZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KFdlYktpdDo6RGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sK
KyAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsKKyAgICBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBh
dXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIpCisg
ICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBzdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGlu
Z01ldGhvZHM6QFsgXSBlcnJvcnM6QFsgXV07CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnBy
ZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdCgqcHJlc2VudGVyLCBXZWJDb3JlOjpQYXlt
ZW50Q29udGFjdChjb250YWN0KSk7Cit9CisKK3N0YXRpYyBXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QgdG9TaGlwcGluZ01ldGhvZChQS1NoaXBw
aW5nTWV0aG9kICpzaGlwcGluZ01ldGhvZCkKK3sKKyAgICBBU1NFUlQoc2hpcHBpbmdNZXRob2Qp
OworCisgICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kIHJlc3VsdDsKKyAgICByZXN1bHQuYW1vdW50ID0gc2hpcHBpbmdNZXRob2QuYW1vdW50
LnN0cmluZ1ZhbHVlOworICAgIHJlc3VsdC5kZXRhaWwgPSBzaGlwcGluZ01ldGhvZC5kZXRhaWw7
CisgICAgcmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGluZ01ldGhvZC5pZGVudGlmaWVyOworICAg
IHJlc3VsdC5sYWJlbCA9IHNoaXBwaW5nTWV0aG9kLmxhYmVsOworCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworLSAodm9pZClfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRo
b2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9k
aWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIgPSBf
cHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4gW3Nl
bGYgY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjpAWyBdXTsKKworICAgIHByZXNlbnRl
ci0+Y2xpZW50KCkucHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoKnByZXNlbnRlciwg
dG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOworfQorCistICh2b2lkKV93aWxsRmlu
aXNoV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKK30KKworQGVuZAorCisjZW5kaWYgLy8g
VVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXggYjQ3NDVlMmViMDhjNmNl
NDMyNTExZTg1MzJiNzIxYmI4OGIyOTVlZi4uYTY5NWM2NzQ0ZWNiOWMyMzY3MzA3YTJmNWI0ZmNj
YmI3YjhhN2ZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcApAQCAtMjMwLDcgKzIzMCw3IEBA
IHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZENhbmNlbFBheW1lbnRTZXNzaW9u
KCkKICAgICBkaWRSZWFjaEZpbmFsU3RhdGUoKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKK3ZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KFBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgQVNTRVJU
KG1fbWVyY2hhbnRWYWxpZGF0aW9uU3RhdGUgPT0gTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6Oklk
bGUpOwogCkBAIC0yMzgsMTMgKzIzOCwyMCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Ojp2YWxpZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYgdXJsKQogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBheW1lbnRDb29yZGluYXRvcjo6VmFsaWRhdGVNZXJjaGFudCh1cmwuc3RyaW5nKCkpKTsK
IH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0aG9yaXplUGF5bWVu
dChjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQordm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6cHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudChQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmIHBheW1lbnQpCiB7CiAgICAg
bV9zdGF0ZSA9IFN0YXRlOjpBdXRob3JpemVkOwogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1l
bnRDb29yZGluYXRvcjo6RGlkQXV0aG9yaXplUGF5bWVudChwYXltZW50KSk7CiB9CiAKLXZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYg
c2hpcHBpbmdNZXRob2QpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50
ZXJEaWRGaW5pc2goUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBib29sIGRpZFJlYWNo
RmluYWxTdGF0ZSkKK3sKKyAgICBpZiAoIWRpZFJlYWNoRmluYWxTdGF0ZSkKKyAgICAgICAgZGlk
Q2FuY2VsUGF5bWVudFNlc3Npb24oKTsKKyAgICBoaWRlUGF5bWVudFVJKCk7Cit9CisKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6QXBwbGVQ
YXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApAQCAtMjUyLDcgKzI1
OSw3IEBAIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGF5
bWVudENvb3JkaW5hdG9yOjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkp
OwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGlu
Z0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmIHNoaXBwaW5nQ29udGFjdCkK
K3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUg
PT0gU3RhdGU6OkFjdGl2ZSk7CiAKQEAgLTI2MCw3ICsyNjcsNyBAQCB2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6
UGF5bWVudAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0KHNoaXBwaW5nQ29udGFjdCkpOwogfQogCi12b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKGNvbnN0IFdlYkNvcmU6
OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYgcGF5bWVudE1ldGhv
ZCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5LmgKaW5kZXggYzE5YjEyYmEzZTgwNGJhZmEyNjAyYzgxY2QwZTkwNDdkMzQ5M2U1Ny4u
Y2FhNWY5NWVjYWNlNmI4MTgyYjc4ZjZhMzk1NzJkNWY5NmVlOWVkYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS5oCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJNZXNzYWdlU2VuZGVyLmgiCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1BheW1lbnRIZWFkZXJzLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkBAIC01Niwx
MyArNTcsMTYgQEAgT0JKQ19DTEFTUyBOU1dpbmRvdzsKIE9CSkNfQ0xBU1MgUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOwogT0JKQ19DTEFTUyBQS1BheW1lbnRSZXF1ZXN0Owog
T0JKQ19DTEFTUyBVSVZpZXdDb250cm9sbGVyOwotT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNs
YXNzIFdlYlBhZ2VQcm94eTsKIAotY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgOiBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyLCBwcml2YXRlIElQQzo6TWVzc2FnZVNlbmRlciwg
cHVibGljIENhbk1ha2VXZWFrUHRyPFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5PiB7CitjbGFz
cyBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eQorICAgIDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlcgorICAgICwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIKKyAgICAsIHB1YmxpYyBD
YW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4KKyAgICAsIHB1YmxpYyBQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50IHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgQ2xpZW50IHsKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OwpAQCAtNzUs
NiArNzksNyBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgdmly
dHVhbCBVSVZpZXdDb250cm9sbGVyICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0Nv
bnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgY29uc3QgU3RyaW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9u
U2VydmljZVR5cGUoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
PiBwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5JiwgUEtQYXltZW50UmVxdWVzdCAqKSA9IDA7CiAjZW5kaWYKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgICAgIHZpcnR1YWwgTlNXaW5kb3cgKnBheW1lbnRDb29yZGluYXRvclBy
ZXNlbnRpbmdXaW5kb3coY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSA9IDA7CkBA
IC04NSwxMiArOTAsNiBAQCBwdWJsaWM6CiAgICAgfldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
KCk7CiAKICAgICB2b2lkIGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7Ci0gICAgdm9pZCB2YWxp
ZGF0ZU1lcmNoYW50KGNvbnN0IFVSTCYpOwotICAgIHZvaWQgZGlkQXV0aG9yaXplUGF5bWVudChj
b25zdCBXZWJDb3JlOjpQYXltZW50Jik7Ci0gICAgdm9pZCBkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2QmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChjb25zdCBXZWJDb3Jl
OjpQYXltZW50Q29udGFjdCYpOwotICAgIHZvaWQgZGlkU2VsZWN0UGF5bWVudE1ldGhvZChjb25z
dCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJik7Ci0KICAgICB2b2lkIGhpZGVQYXltZW50VUkoKTsK
IAogcHJpdmF0ZToKQEAgLTEwMSw2ICsxMDAsMTQgQEAgcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1l
c3NhZ2VTZW5kZXIKICAgICBJUEM6OkNvbm5lY3Rpb24qIG1lc3NhZ2VTZW5kZXJDb25uZWN0aW9u
KCkgY29uc3QgZmluYWw7CiAgICAgdWludDY0X3QgbWVzc2FnZVNlbmRlckRlc3RpbmF0aW9uSUQo
KSBjb25zdCBmaW5hbDsKKyAgICAKKyAgICAvLyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
cjo6Q2xpZW50CisgICAgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpIGZpbmFsOwor
ICAgIHZvaWQgcHJlc2VudGVyRGlkRmluaXNoKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgYm9vbCBkaWRSZWFjaEZpbmFsU3RhdGUpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyRGlk
U2VsZWN0UGF5bWVudE1ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnRlckRpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJEaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYp
IGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBVUkwmKSBmaW5hbDsKIAogICAgIC8vIE1lc3Nh
Z2UgaGFuZGxlcnMKICAgICB2b2lkIGF2YWlsYWJsZVBheW1lbnROZXR3b3JrcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmKTsKQEAgLTE3Myw4ICsxODAsNyBAQCBw
cml2YXRlOgogICAgICAgICBWYWxpZGF0aW9uQ29tcGxldGUKICAgICB9IG1fbWVyY2hhbnRWYWxp
ZGF0aW9uU3RhdGUgeyBNZXJjaGFudFZhbGlkYXRpb25TdGF0ZTo6SWRsZSB9OwogCi0gICAgUmV0
YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOwotICAgIFJldGFpblB0cjxXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyPiBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXI7CiAKICNpZiBQTEFURk9STShN
QUMpCiAgICAgdWludDY0X3QgbV9zaG93UGF5bWVudFVJUmVxdWVzdFNlZWQgeyAwIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKaW5kZXggZmJiZWVhZDM3MjYzZDI3
YzdkMzNhMDViYjc2OTU4M2YyNWRmNjE1MS4uNGU5NDJiOTY4YTQzOWU2MzRiZjhhZTdiOTI2M2Nh
NjI0YjM4NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaApA
QCAtMjcsMzcgKzI3LDE4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQogCi0jaW1wb3J0ICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgotI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50SGVh
ZGVycy5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9QYXNzS2l0U1BJLmg+Ci0jaW1wb3J0IDx3
dGYvQmxvY2tQdHIuaD4KIAotQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSwgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyUHJp
dmF0ZURlbGVnYXRlPiB7Ci1AcGFja2FnZQotICAgIFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkqIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLSAgICBSZXRhaW5QdHI8TlNB
cnJheT4gX3BheW1lbnRTdW1tYXJ5SXRlbXM7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IF9zaGlw
cGluZ01ldGhvZHM7CituYW1lc3BhY2UgV2ViS2l0IHsKIAotICAgIEJsb2NrUHRyPHZvaWQoUEtQ
YXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKik+IF9zZXNzaW9uQmxvY2s7CisvLyBG
SVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNlIGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBh
Ym91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hvdWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0
IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIgcGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgor
TlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJik7CitOU0RlY2ltYWxOdW1i
ZXIgKnRvRGVjaW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCk7CitQS1BheW1lbnRTdW1t
YXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mKTsKK1BLUGF5bWVudFN1bW1hcnlJdGVtVHlw
ZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUpOworUEtTaGlwcGluZ01ldGhvZCAqdG9QS1NoaXBw
aW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpT
aGlwcGluZ01ldGhvZCYpOwogCi0gICAgQk9PTCBfZGlkUmVhY2hGaW5hbFN0YXRlOwotI2lmIEhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRB
dXRob3JpemF0aW9uUmVzdWx0ICopPiBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uOwotICAg
IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKik+IF9k
aWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RTaGlwcGlu
Z0NvbnRhY3RVcGRhdGUgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOwot
I2Vsc2UKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpPiBf
cGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQoTlNBcnJheSAq
KT4gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOwotICAgIEJsb2NrUHRyPHZvaWQo
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqKT4gX2RpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMsIE5TQXJyYXkgKiwgTlNBcnJheSAqKT4gX2RpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdENvbXBsZXRpb247Ci0jZW5kaWYKLX0KK30gLy8gbmFtZXNwYWNlIFdlYktpdAogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eTooV2ViS2l0OjpXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eSYpd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0KLS0g
KHZvaWQpaW52YWxpZGF0ZTsKLQotQGVuZAotCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoQVBQ
TEVfUEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2Ev
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KaW5kZXgg
YWNlZjk4NGRjMDk5ZDRhMTRiOTEwNzM5OWFiMjNhOGNlNTlhOWY3Yi4uODUwMDk1MGU2MTRhYTE2
YzkxYjk4ZTg2Yjc2YWNhNDRlMGNiMmQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZ
KQogCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCIKICNpbXBvcnQg
IldlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgiCi0jaW1wb3J0ICJXZWJQcm9jZXNzUG9vbC5o
IgogI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50QXV0aG9yaXphdGlvblN0YXR1cy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2ltcG9ydCA8cGFsL2NvY29hL1Bhc3NLaXRT
b2Z0TGluay5oPgpAQCAtMzcsMjAyICszNyw2IEBACiAjaW1wb3J0IDx3dGYvUnVuTG9vcC5oPgog
I2ltcG9ydCA8d3RmL1VSTC5oPgogCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
LVNPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpCi1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFj
dHMsIENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N1YkxvY2FsaXR5S2V5LCBOU1N0cmluZyAq
KTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ2l0eUtleSwg
TlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVz
c1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RB
TlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKLVNPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNT
dHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0Nv
dW50cnlLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBv
c3RhbEFkZHJlc3NJU09Db3VudHJ5Q29kZUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09O
U1RBTlQoUEFMOjpQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwgTlNTdHJpbmcgKik7Ci0j
ZW5kaWYKLQotQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlCi0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheW1lbnRDb29yZGluYXRv
clByb3h5OihXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Jil3ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eQotewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSA9ICZ3
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTsKLQotICAgIHJldHVybiBzZWxmOwotfQotCi0tICh2
b2lkKWludmFsaWRhdGUKLXsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSBudWxs
cHRyOwotICAgIGlmIChfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKSB7Ci0jaWYgSEFWRShQ
QVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxl
dGlvbihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdEluc3Rh
bmNlKCkgaW5pdFdpdGhTdGF0dXM6UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUg
ZXJyb3JzOkBbIF1dKS5nZXQoKSk7Ci0jZWxzZQotICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRD
b21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKLSNlbmRpZgot
ICAgICAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsKLSAgICB9Ci19
Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciB3aWxsRmluaXNoV2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKLXsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKilj
b250cm9sbGVyIGRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVy
Y2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKikpc2Vzc2lvbkJsb2NrCi17Ci0gICAgQVNTRVJUKCFf
c2Vzc2lvbkJsb2NrKTsKLSAgICBfc2Vzc2lvbkJsb2NrID0gc2Vzc2lvbkJsb2NrOwotCi0gICAg
W1BBTDo6Z2V0UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyQ2xhc3MoKSBwYXlt
ZW50U2VydmljZXNNZXJjaGFudFVSTDpeKE5TVVJMICptZXJjaGFudFVSTCwgTlNFcnJvciAqZXJy
b3IpIHsKLSAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgTE9HX0VSUk9SKCJQS0Nhbk1h
a2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50aWZpZXJBbmREb21haW4gZXJyb3IgJUAiLCBlcnJv
cik7Ci0KLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
XnsKLSAgICAgICAgICAgIEFTU0VSVChfc2Vzc2lvbkJsb2NrKTsKLQotICAgICAgICAgICAgaWYg
KCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgICAgICAgICBfc2Vzc2lv
bkJsb2NrKG51bGxwdHIsIG51bGxwdHIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT52YWxp
ZGF0ZU1lcmNoYW50KG1lcmNoYW50VVJMKTsKLSAgICAgICAgfSk7Ci0gICAgfV07Ci19Ci0KLXN0
YXRpYyBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRo
b2QgdG9TaGlwcGluZ01ldGhvZChQS1NoaXBwaW5nTWV0aG9kICpzaGlwcGluZ01ldGhvZCkKLXsK
LSAgICBBU1NFUlQoc2hpcHBpbmdNZXRob2QpOwotCi0gICAgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHJlc3VsdDsKLSAgICByZXN1bHQubGFi
ZWwgPSBzaGlwcGluZ01ldGhvZC5sYWJlbDsKLSAgICByZXN1bHQuZGV0YWlsID0gc2hpcHBpbmdN
ZXRob2QuZGV0YWlsOwotICAgIHJlc3VsdC5hbW91bnQgPSBzaGlwcGluZ01ldGhvZC5hbW91bnQu
c3RyaW5nVmFsdWU7Ci0gICAgcmVzdWx0LmlkZW50aWZpZXIgPSBzaGlwcGluZ01ldGhvZC5pZGVu
dGlmaWVyOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFO
VUxBUl9FUlJPUlMpCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRB
dXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgotewotICAgIGlm
ICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGlu
aXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpA
WyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfcGF5
bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKTsKLSAgICBfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0
aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlk
QXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXltZW50KHBheW1lbnQpKTsKLX0KLQotLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBL
UGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50
UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgotewotICAgIGlm
ICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXV0pLmdldCgpKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBjb21wbGV0
aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0UGF5bWVudE1l
dGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKLX0KLQotLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQ
S1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXlt
ZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24gewotICAg
IGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUlu
c3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24gPSBj
b21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2QodG9TaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCkpOwotfQotCi0tICh2
b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
OihQS0NvbnRhY3QgKiljb250YWN0IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RT
aGlwcGluZ0NvbnRhY3RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgotewotICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgp
IGluaXRXaXRoRXJyb3JzOkBbIF0gcGF5bWVudFN1bW1hcnlJdGVtczpAWyBdIHNoaXBwaW5nTWV0
aG9kczpAWyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
KCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFdlYkNvcmU6OlBheW1lbnRD
b250YWN0KGNvbnRhY3QpKTsKLX0KLQotI2VuZGlmCi0KLSNpZiAhSEFWRShQQVNTS0lUX0dSQU5V
TEFSX0VSUk9SUykKLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1
dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCAoXiko
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cykpY29tcGxldGlvbgotewotICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgQVNTRVJUKCFfcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKTsKLSAgICBfcGF5bWVudEF1
dGhvcml6ZWRDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+ZGlkQXV0aG9yaXplUGF5bWVudChXZWJDb3JlOjpQYXltZW50KHBheW1lbnQp
KTsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxldGlv
bjoodm9pZCAoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0dXMsIE5TQXJyYXk8
UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxldGlvbgotewotICAg
IGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24o
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsIEBbIF0pOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uKTsKLSAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlv
bjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKLX0KLQotLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVu
dE1ldGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlvbjoodm9pZCAoXikoTlNBcnJheTxQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSAqPiAqc3VtbWFyeUl0ZW1zKSljb21wbGV0aW9uCi17Ci0gICAgaWYg
KCFfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihAWyBd
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24gPSBjb21wbGV0aW9uOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRT
ZWxlY3RQYXltZW50TWV0aG9kKFdlYkNvcmU6OlBheW1lbnRNZXRob2QocGF5bWVudE1ldGhvZCkp
OwotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBOU0FycmF5PFBLU2hpcHBpbmdNZXRo
b2QgKj4gKnNoaXBwaW5nTWV0aG9kcywgTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAq
c3VtbWFyeUl0ZW1zKSljb21wbGV0aW9uCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkpIHsKLSAgICAgICAgY29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZSwgQFsgXSwgQFsgXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBB
U1NFUlQoIV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoV2ViQ29yZTo6UGF5
bWVudENvbnRhY3QoY29udGFjdCkpOwotfQotCi0jZW5kaWYKLQotLSAodm9pZClwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOihQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyCi17Ci0gICAgaWYgKCFfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghX2RpZFJlYWNoRmluYWxT
dGF0ZSkKLSAgICAgICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRDYW5jZWxQYXlt
ZW50U2Vzc2lvbigpOwotCi0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5oaWRlUGF5
bWVudFVJKCk7Ci19Ci0KLUBlbmQKLQogLy8gRklYTUU6IE9uY2UgcmRhcjovL3Byb2JsZW0vMjQ0
MjAwMjQgaGFzIGJlZW4gZml4ZWQsIGltcG9ydCBQS1BheW1lbnRSZXF1ZXN0X1ByaXZhdGUuaCBp
bnN0ZWFkLgogQGludGVyZmFjZSBQS1BheW1lbnRSZXF1ZXN0ICgpCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmV0YWluKSBOU1VSTCAqb3JpZ2luYXRpbmdVUkw7CkBAIC0zMjIsNyArMTI2LDcgQEAg
c3RhdGljIFBLQWRkcmVzc0ZpZWxkIHRvUEtBZGRyZXNzRmllbGQoY29uc3QgV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXUKIH0KICNlbmRpZgogCi1zdGF0aWMgUEtQYXltZW50U3Vt
bWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQorUEtQYXltZW50U3Vt
bWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRj
aCAodHlwZSkgewogICAgIGNhc2UgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OkxpbmVJdGVtOjpUeXBlOjpGaW5hbDoKQEAgLTMzMywyOCArMTM3LDI4IEBAIHN0YXRpYyBQ
S1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzCiAgICAgfQogfQogCi1zdGF0aWMgTlNEZWNpbWFsTnVtYmVyICp0b0Rl
Y2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCitOU0RlY2ltYWxOdW1iZXIgKnRvRGVj
aW1hbE51bWJlcihjb25zdCBTdHJpbmcmIGFtb3VudCkKIHsKICAgICBpZiAoIWFtb3VudCkKICAg
ICAgICAgcmV0dXJuIFtOU0RlY2ltYWxOdW1iZXIgemVyb107CiAgICAgcmV0dXJuIFtOU0RlY2lt
YWxOdW1iZXIgZGVjaW1hbE51bWJlcldpdGhTdHJpbmc6YW1vdW50IGxvY2FsZTpAeyBOU0xvY2Fs
ZURlY2ltYWxTZXBhcmF0b3IgOiBAIi4iIH1dOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPFBLUGF5
bWVudFN1bW1hcnlJdGVtPiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGNvbnN0IFdlYkNvcmU6OkFw
cGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbSYgbGluZUl0ZW0pCitQS1BheW1l
bnRTdW1tYXJ5SXRlbSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQogewogICAgIHJl
dHVybiBbUEFMOjpnZXRQS1BheW1lbnRTdW1tYXJ5SXRlbUNsYXNzKCkgc3VtbWFyeUl0ZW1XaXRo
TGFiZWw6bGluZUl0ZW0ubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihsaW5lSXRlbS5hbW91
bnQpIHR5cGU6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUobGluZUl0ZW0udHlwZSldOwogfQog
Ci1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVt
cyYgdG90YWxBbmRMaW5lSXRlbXMpCitOU0FycmF5ICp0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5l
SXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQogewotICAgIGF1dG8gcGF5bWVudFN1bW1hcnlJdGVt
cyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIE5TTXV0YWJs
ZUFycmF5ICpwYXltZW50U3VtbWFyeUl0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENh
cGFjaXR5OnRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcy5zaXplKCkgKyAxXTsKICAgICBmb3Ig
KGF1dG8mIGxpbmVJdGVtIDogdG90YWxBbmRMaW5lSXRlbXMubGluZUl0ZW1zKSB7Ci0gICAgICAg
IGlmIChhdXRvIHN1bW1hcnlJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkp
Ci0gICAgICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW0u
Z2V0KCldOworICAgICAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnN1bW1hcnlJdGVtID0g
dG9QS1BheW1lbnRTdW1tYXJ5SXRlbShsaW5lSXRlbSkpCisgICAgICAgICAgICBbcGF5bWVudFN1
bW1hcnlJdGVtcyBhZGRPYmplY3Q6c3VtbWFyeUl0ZW1dOwogICAgIH0KIAotICAgIGlmIChhdXRv
IHRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0odG90YWxBbmRMaW5lSXRlbXMudG90
YWwpKQotICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtLmdl
dCgpXTsKKyAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvdGFsSXRlbSA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0odG90YWxBbmRMaW5lSXRlbXMudG90YWwpKQorICAgICAgICBbcGF5bWVu
dFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKIAogICAgIHJldHVybiBwYXltZW50
U3VtbWFyeUl0ZW1zOwogfQpAQCAtMzk5LDkgKzIwMyw5IEBAIHN0YXRpYyBQS1NoaXBwaW5nVHlw
ZSB0b1BLU2hpcHBpbmdUeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0
OjpTCiAgICAgfQogfQogCi1zdGF0aWMgUmV0YWluUHRyPFBLU2hpcHBpbmdNZXRob2Q+IHRvUEtT
aGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVz
dDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQorUEtTaGlwcGluZ01ldGhvZCAqdG9Q
S1NoaXBwaW5nTWV0aG9kKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCiB7Ci0gICAgUmV0YWluUHRyPFBL
U2hpcHBpbmdNZXRob2Q+IHJlc3VsdCA9IFtQQUw6OmdldFBLU2hpcHBpbmdNZXRob2RDbGFzcygp
IHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2lt
YWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CisgICAgUEtTaGlwcGluZ01ldGhvZCAq
cmVzdWx0ID0gW1BBTDo6Z2V0UEtTaGlwcGluZ01ldGhvZENsYXNzKCkgc3VtbWFyeUl0ZW1XaXRo
TGFiZWw6c2hpcHBpbmdNZXRob2QubGFiZWwgYW1vdW50OnRvRGVjaW1hbE51bWJlcihzaGlwcGlu
Z01ldGhvZC5hbW91bnQpXTsKICAgICBbcmVzdWx0IHNldElkZW50aWZpZXI6c2hpcHBpbmdNZXRo
b2QuaWRlbnRpZmllcl07CiAgICAgW3Jlc3VsdCBzZXREZXRhaWw6c2hpcHBpbmdNZXRob2QuZGV0
YWlsXTsKIApAQCAtNDcwLDE3ICsyNzQsMTcgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJlcXVlc3Q+
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KGMKIAog
ICAgIGF1dG8gc2hpcHBpbmdNZXRob2RzID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9j
XSBpbml0XSk7CiAgICAgZm9yIChhdXRvJiBzaGlwcGluZ01ldGhvZCA6IHBheW1lbnRSZXF1ZXN0
LnNoaXBwaW5nTWV0aG9kcygpKQotICAgICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0
b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpLmdldCgpXTsKKyAgICAgICAgW3NoaXBw
aW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKV07
CiAgICAgW3Jlc3VsdCBzZXRTaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzLmdldCgpXTsK
IAogICAgIGF1dG8gcGF5bWVudFN1bW1hcnlJdGVtcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoYXV0byYgbGluZUl0ZW0gOiBwYXltZW50UmVxdWVz
dC5saW5lSXRlbXMoKSkgewotICAgICAgICBpZiAoYXV0byBzdW1tYXJ5SXRlbSA9IHRvUEtQYXlt
ZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRl
bXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtLmdldCgpXTsKKyAgICAgICAgaWYgKFBLUGF5bWVudFN1
bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0p
KQorICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVt
XTsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCkpKQotICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVt
cyBhZGRPYmplY3Q6dG90YWxJdGVtLmdldCgpXTsKKyAgICBpZiAoUEtQYXltZW50U3VtbWFyeUl0
ZW0gKnRvdGFsSXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0ocGF5bWVudFJlcXVlc3QudG90
YWwoKSkpCisgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDp0b3RhbEl0ZW1d
OwogCiAgICAgW3Jlc3VsdCBzZXRQYXltZW50U3VtbWFyeUl0ZW1zOnBheW1lbnRTdW1tYXJ5SXRl
bXMuZ2V0KCldOwogCkBAIC01MTMsMjc4ICszMTcsMjkgQEAgUmV0YWluUHRyPFBLUGF5bWVudFJl
cXVlc3Q+IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0
KGMKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKLXN0YXRpYyBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyBzdGF0
dXMpCi17Ci0gICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6RmFpbHVyZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNGYWlsdXJlOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXM6OlBJTlJlcXVpcmVkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c1BJTlJlcXVpcmVkOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OwotICAgIH0KLX0KLQotc3RhdGljIFBLUGF5bWVu
dEVycm9yQ29kZSB0b1BLUGF5bWVudEVycm9yQ29kZShXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGUgY29kZSkKLXsKLSAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRFcnJvcjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFVua25vd25F
cnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250
YWN0SW52YWxpZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNoaXBwaW5nQ29udGFjdEludmFs
aWRFcnJvcjsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0Nv
bnRhY3RJbnZhbGlkOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QmlsbGluZ0NvbnRhY3RJbnZh
bGlkRXJyb3I7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkFkZHJlc3NV
bnNlcnZpY2VhYmxlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdBZGRyZXNzVW5z
ZXJ2aWNlYWJsZUVycm9yOwotICAgIH0KLX0KLQotc3RhdGljIFJldGFpblB0cjxOU0Vycm9yPiB0
b05TRXJyb3IoY29uc3QgV2ViQ29yZTo6UGF5bWVudEVycm9yJiBlcnJvcikKLXsKLSAgICBhdXRv
IHVzZXJJbmZvID0gYWRvcHROUyhbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRdKTsK
LSAgICBbdXNlckluZm8gc2V0T2JqZWN0OmVycm9yLm1lc3NhZ2UgZm9yS2V5Ok5TTG9jYWxpemVk
RGVzY3JpcHRpb25LZXldOwotCi0gICAgaWYgKGVycm9yLmNvbnRhY3RGaWVsZCkgewotICAgICAg
ICBOU1N0cmluZyAqcGtDb250YWN0RmllbGQgPSBuaWw7Ci0gICAgICAgIE5TU3RyaW5nICpwb3N0
YWxBZGRyZXNzS2V5ID0gbmlsOwotCi0gICAgICAgIHN3aXRjaCAoKmVycm9yLmNvbnRhY3RGaWVs
ZCkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQ
aG9uZU51bWJlcjoKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFzc0tp
dF9QS0NvbnRhY3RGaWVsZFBob25lTnVtYmVyKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpFbWFpbEFkZHJl
c3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRFbWFpbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNh
c2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6Ok5hbWU6Ci0gICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGROYW1lKCk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29udGFjdEZpZWxkOjpQaG9uZXRpY05hbWU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVs
ZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZXRpY05hbWUoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250
YWN0RmllbGQ6OlBvc3RhbEFkZHJlc3M6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpBZGRyZXNzTGluZXM6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0
X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0
YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5KCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpTdWJMb2NhbGl0eToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRf
UGFzc0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3Rh
bEFkZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NTdWJMb2NhbGl0eUtleSgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRh
Y3RGaWVsZDo6TG9jYWxpdHk6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0
X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0
YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzQ2l0eUtleSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6UG9zdGFsQ29kZToKLSAgICAgICAgICAgIHBrQ29udGFjdEZpZWxkID0gUEFMOjpnZXRfUGFz
c0tpdF9QS0NvbnRhY3RGaWVsZFBvc3RhbEFkZHJlc3MoKTsKLSAgICAgICAgICAgIHBvc3RhbEFk
ZHJlc3NLZXkgPSBnZXRDTlBvc3RhbEFkZHJlc3NQb3N0YWxDb2RlS2V5KCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpTdWJBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAg
ICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5pc3RyYXRp
dmVBcmVhS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpBZG1pbmlzdHJhdGl2ZUFyZWE6Ci0gICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxB
ZGRyZXNzU3RhdGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnk6Ci0gICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNz
Q291bnRyeUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6Q291bnRyeUNvZGU6Ci0gICAgICAgICAgICBw
a0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRy
ZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNz
SVNPQ291bnRyeUNvZGVLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgW3VzZXJJbmZvIHNldE9iamVjdDpwa0NvbnRhY3RGaWVsZCBmb3JLZXk6UEFMOjpnZXRf
UGFzc0tpdF9QS1BheW1lbnRFcnJvckNvbnRhY3RGaWVsZFVzZXJJbmZvS2V5KCldOwotICAgICAg
ICBpZiAocG9zdGFsQWRkcmVzc0tleSkKLSAgICAgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6
cG9zdGFsQWRkcmVzc0tleSBmb3JLZXk6UEFMOjpnZXRfUGFzc0tpdF9QS1BheW1lbnRFcnJvclBv
c3RhbEFkZHJlc3NVc2VySW5mb0tleSgpXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gYWRvcHROUyhb
W05TRXJyb3IgYWxsb2NdIGluaXRXaXRoRG9tYWluOmdldFBLUGF5bWVudEVycm9yRG9tYWluKCkg
Y29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2RlKSB1c2VySW5mbzp1c2VySW5mby5n
ZXQoKV0pOwotfQotCi1zdGF0aWMgUmV0YWluUHRyPE5TQXJyYXk+IHRvTlNFcnJvcnMoY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlBheW1lbnRFcnJvcj4mIGVycm9ycykKLXsKLSAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotCi0gICAgZm9yIChj
b25zdCBhdXRvJiBlcnJvciA6IGVycm9ycykgewotICAgICAgICBpZiAoYXV0byBuc0Vycm9yID0g
dG9OU0Vycm9yKGVycm9yKSkKLSAgICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3Iu
Z2V0KCldOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZWxzZQotc3RhdGljIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0PiYgcmVz
dWx0KQotewotICAgIGlmICghcmVzdWx0KQotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1N1Y2Nlc3M7Ci0KLSAgICBpZiAocmVzdWx0LT5lcnJvcnMuc2l6ZSgpID09
IDEpIHsKLSAgICAgICAgYXV0byYgZXJyb3IgPSByZXN1bHQtPmVycm9yc1swXTsKLSAgICAgICAg
c3dpdGNoIChlcnJvci5jb2RlKSB7Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpVbmtub3duOgotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QWRkcmVzc1Vuc2VydmljZWFibGU6Ci0gICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZEJpbGxpbmdQb3N0YWxBZGRyZXNzOwot
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0NvbnRh
Y3RJbnZhbGlkOgotICAgICAgICAgICAgaWYgKGVycm9yLmNvbnRhY3RGaWVsZCAmJiBlcnJvci5j
b250YWN0RmllbGQgPT0gV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3Rh
bEFkZHJlc3MpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNJbnZhbGlkU2hpcHBpbmdQb3N0YWxBZGRyZXNzOwotCi0gICAgICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ0NvbnRhY3Q7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKHJlc3VsdC0+c3RhdHVzKSB7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczoKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwotICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLSAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5SZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5SZXF1aXJlZDsKLSAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5JbmNvcnJlY3Q6Ci0gICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOSW5jb3JyZWN0OwotICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6Ci0gICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOTG9ja291dDsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci19Ci0jZW5kaWYK
LQogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1l
bnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiYgcmVzdWx0KQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSk7Ci0KLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFJlYWNoRmluYWxTdGF0ZSA9IFdlYkNvcmU6OmlzRmluYWxTdGF0ZVJlc3Vs
dChyZXN1bHQpOwotCi0jaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBhdXRv
IHN0YXR1cyA9IHJlc3VsdCA/IHJlc3VsdC0+c3RhdHVzIDogV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M7Ci0gICAgYXV0byBwa1BheW1lbnRBdXRob3JpemF0aW9u
UmVzdWx0ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJ
bnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOnRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhz
dGF0dXMpIGVycm9yczpyZXN1bHQgPyB0b05TRXJyb3JzKHJlc3VsdC0+ZXJyb3JzKS5nZXQoKSA6
IEBbIF1dKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZS0+X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihwa1BheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0LmdldCgpKTsKLSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24odG9QS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzKHJlc3VsdCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24g
PSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50
U2Vzc2lvbihyZXN1bHQpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
bGF0Zm9ybUNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRN
ZXJjaGFudFNlc3Npb24mIHBheW1lbnRNZXJjaGFudFNlc3Npb24pCiB7Ci0gICAgQVNTRVJUKG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2Vzc2lvbkJsb2NrKHBheW1lbnRN
ZXJjaGFudFNlc3Npb24ucGtQYXltZW50TWVyY2hhbnRTZXNzaW9uKCksIG51bGxwdHIpOwotICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2Vzc2lvbkJs
b2NrID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uKHBheW1lbnRNZXJjaGFudFNlc3Npb24pOwogfQogCiB2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxl
Y3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+JiB1cGRh
dGUpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7
Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
KTsKLQotICAgIGlmICh1cGRhdGUpCi0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3Vt
bWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpOwotCi0jaWYgSEFWRShQQVNT
S0lUX0dSQU5VTEFSX0VSUk9SUykKLSAgICBhdXRvIHBrU2hpcHBpbmdNZXRob2RVcGRhdGUgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxl
Y3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24ocGtTaGlwcGluZ01ldGhvZFVwZGF0ZS5nZXQoKSk7
Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
LT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNTdWNjZXNzLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMuZ2V0KCkpOwotI2VuZGlmCi0gICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb24gPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+
Y29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQogCi0jaWYgIUhBVkUo
UEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1zdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9uYWw8V2ViQ29y
ZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQotewotICAgIGlmICghdXBkYXRlIHx8
IHVwZGF0ZS0+ZXJyb3JzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNTdWNjZXNzOwotCi0gICAgaWYgKHVwZGF0ZS0+ZXJyb3JzLnNpemUoKSA9
PSAxKSB7Ci0gICAgICAgIGF1dG8mIGVycm9yID0gdXBkYXRlLT5lcnJvcnNbMF07Ci0gICAgICAg
IHN3aXRjaCAoZXJyb3IuY29kZSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OkFkZHJlc3NVbnNlcnZpY2VhYmxlOgotICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzczsK
LQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250
YWN0SW52YWxpZDoKLSAgICAgICAgICAgIGlmIChlcnJvci5jb250YWN0RmllbGQgJiYgZXJyb3Iu
Y29udGFjdEZpZWxkID09IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzSW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczsKLQotICAgICAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdDb250YWN0OwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNG
YWlsdXJlOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBs
YXRmb3JtQ29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFTU0VSVChtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAodXBkYXRlKSB7
Ci0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
cGF5bWVudFN1bW1hcnlJdGVtcyA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3
VG90YWxBbmRMaW5lSXRlbXMpOwotCi0gICAgICAgIGF1dG8gc2hpcHBpbmdNZXRob2RzID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0gICAgICAgIGZvciAoYXV0byYg
c2hpcHBpbmdNZXRob2QgOiB1cGRhdGUtPm5ld1NoaXBwaW5nTWV0aG9kcykKLSAgICAgICAgICAg
IFtzaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlwcGluZ01l
dGhvZCkuZ2V0KCldOwotCi0gICAgICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzID0gV1RGTW92ZShzaGlwcGluZ01ldGhvZHMp
OwotICAgIH0KLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBw
a1NoaXBwaW5nQ29udGFjdFVwZGF0ZSA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczp1cGRhdGUg
PyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKS5nZXQoKSA6IEBbIF0gcGF5bWVudFN1bW1hcnlJ
dGVtczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzLmdldCgpXSk7Ci0gICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHBrU2hpcHBpbmdDb250YWN0VXBkYXRlLmdldCgpKTsK
LSNlbHNlCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyh1cGRhdGUpLCBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKSwgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKLSNlbmRp
ZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IG51bGxwdHI7CisgICAgbV9hdXRob3Jp
emF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbih1cGRhdGUp
OwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRl
UGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0
aG9kVXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAodXBkYXRlKQotICAgICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMg
PSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsK
LQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBwa1BheW1lbnRN
ZXRob2RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFBheW1lbnRN
ZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczptX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRl
bXMuZ2V0KCldKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKHBrUGF5bWVudE1ldGhvZFVw
ZGF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24obV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
LmdldCgpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlLT5fZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBudWxscHRyOwor
ICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0
aW9uKHVwZGF0ZSk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5OjpwbGF0Zm9ybUF2YWlsYWJsZVBheW1lbnROZXR3b3JrcygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KaW5kZXggNDMyMzUyNzAyOTk4MDNhMWRmYTBhZGQ4MGFjZTAzMTEw
ZDk4M2QxYS4uNTBjMDEyMTJiYTdhOGZiOGQwZjkxZjlmMWZhNmFkNjhiZjM1ZmRlYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQpAQCAtMjksOCArMjksOCBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIEVOQUJMRShBUFBMRV9QQVkpCiAKICNpbXBvcnQgIkFQSVVJ
Q2xpZW50LmgiCisjaW1wb3J0ICJQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oIgogI2lt
cG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLmgiCiAjaW1wb3J0IDxQYXNzS2l0L1Bhc3NLaXQuaD4KICNpbXBvcnQgPFVJS2l0L1VJ
Vmlld0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMuaD4KQEAgLTQwLDQ3ICs0MCwxNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKGNvbnN0IFVS
TCYgb3JpZ2luYXRpbmdVUkwsIGNvbnN0IFZlY3RvcjxVUkw+JiBsaW5rSWNvblVSTFN0cmluZ3Ms
IGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0JiByZXF1ZXN0LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IFVJVmlld0NvbnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlciA9IG1fY2xpZW50LnBh
eW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyk7Ci0KLSAgICBp
ZiAoIXByZXNlbnRpbmdWaWV3Q29udHJvbGxlcikgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIW1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0KICAgICBhdXRvIHBheW1lbnRSZXF1ZXN0
ID0gcGxhdGZvcm1QYXltZW50UmVxdWVzdChvcmlnaW5hdGluZ1VSTCwgbGlua0ljb25VUkxTdHJp
bmdzLCByZXF1ZXN0KTsKIAotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ciA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cGF5bWVudFJlcXVlc3QuZ2V0KCld
KTsKLSAgICBpZiAoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcikgewotICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0
TlMoW1tXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eToqdGhpc10pOwotICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9
IFtwYXltZW50UmVxdWVzdCBwYXltZW50U3VtbWFyeUl0ZW1zXTsKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcyA9IFtwYXlt
ZW50UmVxdWVzdCBzaGlwcGluZ01ldGhvZHNdOwotCi0gICAgW21fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotCi0gICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxl
ciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyLmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwotCi0gICAgY29tcGxl
dGlvbkhhbmRsZXIodHJ1ZSk7CisgICAgQVNTRVJUKCFtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIp
OworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IG1fY2xpZW50LnBheW1lbnRDb29yZGlu
YXRvckF1dGhvcml6YXRpb25QcmVzZW50ZXIoKnRoaXMsIHBheW1lbnRSZXF1ZXN0LmdldCgpKTsK
KyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPnByZXNlbnQobV9jbGllbnQucGF5bWVudENv
b3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCp0aGlzKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRl
UGF5bWVudFVJKCkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUpOwotCi0gICAgW1ttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
cHJlc2VudGluZ1ZpZXdDb250cm9sbGVyXSBkaXNtaXNzVmlld0NvbnRyb2xsZXJBbmltYXRlZDpZ
RVMgY29tcGxldGlvbjpudWxscHRyXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2F1
dGhvcml6YXRpb25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBudWxscHRyOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMu
bW0KaW5kZXggYmQyNTY0YzQzY2M4MjY3NWIzZjkwZjdhZjM1MjhjMDI2YmJhZTVmNC4uNmNjZjlj
M2IxOTZlZTRjYzdlMTY5ODVmNDUwYzRjNDhkNjY3NDFkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKSAm
JiBFTkFCTEUoQVBQTEVfUEFZKQogCisjaW1wb3J0ICJQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKLSNpbXBvcnQgIldlYlBheW1l
bnRDb29yZGluYXRvclByb3h5Q29jb2EuaCIKICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCkBAIC02NCwxMiArNjQsNyBAQCB2
b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkoY29u
c3QgVVJMJiBvcmlnaW5hdGluZ1VSTAogCiAgICAgICAgIEFTU0VSVCh2aWV3Q29udHJvbGxlcik7
CiAKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFBheW1lbnRDb29yZGluYXRv
clByb3h5OipwYXltZW50Q29vcmRpbmF0b3JQcm94eV0pOwotICAgICAgICBwYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9wYXltZW50U3VtbWFyeUl0ZW1zID0gW3BheW1lbnRSZXF1ZXN0IHBheW1lbnRTdW1tYXJ5SXRl
bXNdOwotICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBbcGF5bWVudFJl
cXVlc3Qgc2hpcHBpbmdNZXRob2RzXTsKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciA9IHZpZXdDb250cm9sbGVyOwot
ICAgICAgICBbcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotICAgICAgICBb
cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciBzZXRQcml2YXRlRGVsZWdhdGU6cGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgcGF5
bWVudENvb3JkaW5hdG9yUHJveHktPm1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9IHN0ZDo6bWFr
ZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4oKnBheW1lbnRDb29y
ZGluYXRvclByb3h5LCBwYXltZW50UmVxdWVzdC5nZXQoKSwgdmlld0NvbnRyb2xsZXIpOwogCiAg
ICAgICAgIEFTU0VSVCghcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cpOwog
ICAgICAgICBwYXltZW50Q29vcmRpbmF0b3JQcm94eS0+bV9zaGVldFdpbmRvdyA9IFtOU1dpbmRv
dyB3aW5kb3dXaXRoQ29udGVudFZpZXdDb250cm9sbGVyOnZpZXdDb250cm9sbGVyXTsKQEAgLTkw
LDI2ICs4NSwyMCBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRlUGF5bWVu
dFVJKCkKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZykgewogICAgICAgICAr
K21fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkOwogCi0gICAgICAgIEFTU0VSVCghbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICAgICAgQVNTRVJUKCFtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7CisgICAgICAgIEFTU0VSVCghbV9h
dXRob3JpemF0aW9uUHJlc2VudGVyKTsKICAgICAgICAgQVNTRVJUKCFtX3NoZWV0V2luZG93KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSk7CisgICAgQVNTRVJUKG1fYXV0aG9yaXphdGlvblByZXNlbnRl
cik7CiAgICAgQVNTRVJUKG1fc2hlZXRXaW5kb3cpOwogCiAgICAgW1tOU05vdGlmaWNhdGlvbkNl
bnRlciBkZWZhdWx0Q2VudGVyXSByZW1vdmVPYnNlcnZlcjptX3NoZWV0V2luZG93V2lsbENsb3Nl
T2JzZXJ2ZXIuZ2V0KCldOwogICAgIG1fc2hlZXRXaW5kb3dXaWxsQ2xvc2VPYnNlcnZlciA9IG51
bGxwdHI7CiAKICAgICBbW21fc2hlZXRXaW5kb3cgc2hlZXRQYXJlbnRdIGVuZFNoZWV0Om1fc2hl
ZXRXaW5kb3cuZ2V0KCldOwotICAgIFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIgc2V0RGVsZWdhdGU6bmlsXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTpuaWxdOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciA9IG51bGxwdHI7Ci0KLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV07Ci0gICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBudWxscHRyOworICAgIG1fYXV0aG9yaXph
dGlvblByZXNlbnRlci0+ZGlzbWlzcygpOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlciA9
IG51bGxwdHI7CiAKICAgICBtX3NoZWV0V2luZG93ID0gbnVsbHB0cjsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0Nv
Y29hLnR4dAppbmRleCBiNzMxZWIyOWE3ODM0YmQwYmE0OTkwNjM1MDk5NmViNTQ0ZjVmOWFmLi5h
NzMwYTU1ZDEzYWE3MTM0ZjY3YmM1M2JkOWQxOTBhNWE1YWUyMDBlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CkBAIC0xLDQgKzEsNCBAQAotLy8gQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vCiAvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKIC8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjUsOCArNjUsMTEgQEAgUGxhdGZvcm0vY2cvQ0dVdGlsaXRpZXMuY3BwCiBQbGF0Zm9ybS9j
bGFzc2lmaWVyL2NvY29hL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyQ29jb2EuY3Bw
CiBQbGF0Zm9ybS9jbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmNw
cAogCitQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbQorUGxh
dGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbQogUGxhdGZv
cm0vY29jb2EvU2hhcmVkTWVtb3J5Q29jb2EuY3BwCiBQbGF0Zm9ybS9jb2NvYS9XS0NyYXNoUmVw
b3J0ZXIubW0KK1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5t
bQogUGxhdGZvcm0vY29jb2EvV2ViS2l0QWRkaXRpb25zLm1tIEBuby11bmlmeQogCiBQbGF0Zm9y
bS9mb3VuZGF0aW9uL0xvZ2dpbmdGb3VuZGF0aW9uLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCmluZGV4IDIxNTVkMTQyZTQ0ZmJhNTQ0NThiYzcxZjUzOTFiZTZlMDliNGU4
MDMuLjQ0ODNiM2IyOTY1M2RmZGUxNDVlNDhiMTQxYjkyODczNzJlNTFkNTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xOTg2LDYgKzE5ODYsNyBAQCBwcml2YXRl
OgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgVUlW
aWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVy
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CiAgICAgY29uc3QgU3Ry
aW5nJiBwYXltZW50Q29vcmRpbmF0b3JDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3Qg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKSBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI+IHBheW1lbnRDb29yZGluYXRvckF1dGhvcml6
YXRpb25QcmVzZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmLCBQS1BheW1lbnRSZXF1
ZXN0ICopIGZpbmFsOwogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkgJiYgUExBVEZPUk0o
TUFDKQogICAgIE5TV2luZG93ICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93KGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2ZDE4NWZkZjA5NzNkOGJl
MmEzYjRiNmQ1MzdmNTBkODRlNTg2OGQ4Li4wOTVhYmU3NzJiNjA5MDlmYzkzNmQ5M2QzMjMyNmNm
NTdjYjAzZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTM4LDYgKzM4LDcgQEAKICNpbXBvcnQgIk5hdGl2ZVdlYktleWJvYXJkRXZl
bnQuaCIKICNpbXBvcnQgIk5hdmlnYXRpb25TdGF0ZS5oIgogI2ltcG9ydCAiUGFnZUNsaWVudC5o
IgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIgogI2ltcG9y
dCAiUHJpbnRJbmZvLmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5
LmgiCiAjaW1wb3J0ICJSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5TWVzc2FnZXMuaCIK
QEAgLTExODcsNiArMTE4OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVxdWVzdFBhc3N3
b3JkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVNoYXJlZChSZWY8VwogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKIAorc3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyPiBXZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvckF1dGhvcml6YXRpb25QcmVz
ZW50ZXIoV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmIHBheW1lbnRDb29yZGluYXRvclByb3h5
LCBQS1BheW1lbnRSZXF1ZXN0ICpwYXltZW50UmVxdWVzdCkKK3sKKyAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyPihwYXltZW50Q29v
cmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QpOworfQorCiBVSVZpZXdDb250cm9sbGVyICpX
ZWJQYWdlUHJveHk6OnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcihj
b25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpCiB7CiAgICAgcmV0dXJuIHVpQ2xpZW50
KCkucHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlOWIwNzU2ODUwZDc4MGQ0NTViNWUyNzIx
M2Y0MTRmNDQ5NDc3MDFmLi43Nzk1ZGRhMTQ3NWNhMjBkYmM0MzVmYmM5MzI3MWJjZmE0M2RlM2Q5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTI5Myw3ICsyOTMsNiBAQAogCQkxQUIxNkFERTE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBQjE2QURDMTY0ODU5ODQwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVE
cmF3aW5nQXJlYS5oICovOyB9OwogCQkxQUIxNkFFMjE2NDg2NTZEMDAyOTBENjIgLyogUmVtb3Rl
TGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMUFCMTZBRTAxNjQ4NjU2RDAwMjkwRDYyIC8qIFJlbW90ZUxheWVy
VHJlZURyYXdpbmdBcmVhUHJveHkuaCAqLzsgfTsKIAkJMUFCMTZBRUExNjRCM0E4ODAwMjkwRDYy
IC8qIFJlbW90ZUxheWVyVHJlZUNvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjE2QUU4MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXll
clRyZWVDb250ZXh0LmggKi87IH07Ci0JCTFBQjFGNzdFMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc3ODFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovOyB9OwogCQkxQUIxRjc4QzFEMUIzMzU1MDA3QzlC
RDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzg5MUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oICovOyB9OwogCQkxQUIxRjc5NjFEMUIzNjEzMDA3QzlC
RDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFGNzkyMUQxQjM2MTMwMDdD
OUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQkxQUIxRjc5NzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjFG
NzkzMUQxQjM2MTMwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JNZXNzYWdlcy5oICov
OyB9OwpAQCAtMTI4NCw2ICsxMjgzLDEwIEBACiAJCUExM0RDNjgyMjA3QUE2QjIwMDY2RUY3MiAv
KiBXS0FwcGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExM0RDNjgwMjA3QUE2QjIwMDY2RUY3MiAvKiBXS0Fw
cGxpY2F0aW9uU3RhdGVUcmFja2luZ1ZpZXcuaCAqLzsgfTsKIAkJQTE1RUVERTYxRTMwMUNFRTAw
MDA2OUIwIC8qIFdLUGFzc3dvcmRWaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyogV0tQYXNzd29yZFZp
ZXcuaCAqLzsgfTsKIAkJQTE3NUM0NEEyMUFBMzE3MTAwMDAzN0QwIC8qIEFyZ3VtZW50Q29kZXJz
Q29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
NzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmggKi87IH07CisJ
CUExNzk4QjNFMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThC
M0QyMjJEOTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi87
IH07CisJCUExNzk4QjQzMjIyRDk4REYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTc5OEIzRjIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlci5oICovOyB9OworCQlBMTc5OEI0OTIyMkU1MzFEMDAwNzY0QkQgLyogV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI0NzIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLmggKi87IH07CisJCUExNzk4QjRDMjIyRjFCRDQwMDA3NjRCRCAv
KiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTc5OEI0QjIyMkYxQkQ0MDAwNzY0QkQgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovOyB9OwogCQlBMTgxQTc5ODIxQUNDNzRC
MDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE4MUE3OTcyMUFDQUM2MTAwNTlBMzE2IC8qIFdlYktpdEFk
ZGl0aW9ucy5tbSAqLzsgfTsKIAkJQTE4MkQ1QjUxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2li
aWxpdHlJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi87IH07CiAJ
CUExOUREM0MwMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJbnRl
cm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE5
REQzQkYxRDA3RDE2ODAwQUM4MjNCIC8qIF9XS1dlYlZpZXdQcmludEZvcm1hdHRlckludGVybmFs
LmggKi87IH07CkBAIC0yMjI4LDcgKzIyMzEsNiBAQAogCQkxQUIxRjc3MTFEMUIyRjdFMDA3QzlC
RDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFBQjFGNzcyMUQxQjJGN0UwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRp
bmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3Jk
aW5hdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjFGNzczMUQxQjJGN0Uw
MDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3IubWVzc2FnZXMuaW4gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQkxQUIxRjc3ODFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFBQjFGNzc5MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFCMUY3N0IxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFBQjFGNzdEMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Mzg1Myw2ICszODU1LDEzIEBACiAJCUExNUVFREU0MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3
b3JkVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1Bhc3N3b3JkVmll
dy5oOyBwYXRoID0gaW9zL1dLUGFzc3dvcmRWaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUExNzVDNDQ5MjFBQTMxNzAwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFyZ3VtZW50Q29kZXJzQ29jb2EuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE3NUM0NEIyMUFBMzMxQjAwMDAzN0QwIC8q
IEFyZ3VtZW50Q29kZXJzQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBcmd1bWVudENv
ZGVyc0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEIzRDIyMkQ5
N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0MDIy
MkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzk4QjQ3MjIyRTUzMEEwMDA3NjRC
RCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUExNzk4QjQ4MjIyRTUzMEEwMDA3NjRCRCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzk4QjRBMjIyRjEzM0Ew
MDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBMTc5OEI0QjIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODFBNzk3MjFB
Q0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJLaXRBZGRpdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJE
NUIyMUJFNkJEMjUwMDg3QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaWJpbGl0eUlPUy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTE4MkQ1QjMxQkU2QkQyNTAwODdBN0NDIC8qIEFjY2Vzc2li
aWxpdHlJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWNjZXNzaWJpbGl0
eUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTI3Miw3ICs1MjgxLDcgQEAK
IAkJMUFCMUY3NzcxRDFCMzBBOTAwN0M5QkQxIC8qIGNvY29hICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQkxQUIxRjc3ODFEMUIzMEE5MDA3QzlCRDEgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICovLAorCQkJCUExNzk4QjRCMjIyRjFC
RDQwMDA3NjRCRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggKi8sCiAJCQkJ
MUFCMUY3NzkxRDFCMzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwpAQCAtNjM4OSwxMCArNjM5OCwxNiBA
QAogCQk0NDUwQUVCRTFEQzNGQUFDMDA5OTQzRjIgLyogY29jb2EgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAv
KiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oICovLAorCQkJCUExNzk4QjRBMjIyRjEz
M0EwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSAqLywKKwkJCQlB
MTc5OEIzRjIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlci5oICovLAorCQkJCUExNzk4QjQwMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyLm1tICovLAogCQkJCTQ0NTBBRUJGMURDM0ZBRTUwMDk5NDNG
MiAvKiBTaGFyZWRNZW1vcnlDb2NvYS5jcHAgKi8sCiAJCQkJQTE4MUE3OTcyMUFDQUM2MTAwNTlB
MzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSAqLywKIAkJCQlBMUZCNjgyMjFGNkU1MTgyMDBDNDNG
OUYgLyogV0tDcmFzaFJlcG9ydGVyLmggKi8sCiAJCQkJQTFGQjY4MjMxRjZFNTE4MjAwQzQzRjlG
IC8qIFdLQ3Jhc2hSZXBvcnRlci5tbSAqLywKKwkJCQlBMTc5OEI0NzIyMkU1MzBBMDAwNzY0QkQg
LyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8sCisJCQkJQTE3OThCNDgyMjJF
NTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5tbSAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTI1
Niw2ICs5MjcxLDggQEAKIAkJCQkxQUM3NTM3QzE4M0E5RkRCMDA3MkNCMTUgLyogUGFnZUxvYWRT
dGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUE4QjY2QjAxQkM0M0M4NjAwODJERjc3IC8qIFBh
Z2VMb2FkU3RhdGVPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU3NEE1ODExMkU2NjY4
MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThC
M0UyMjJEOTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzFFMTIzQkEyMEEx
MTU3MzAwMjY0NkY0IC8qIFBERkNvbnRleHRNZW51LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTk1
ODJEMzE1M0NCRkQ3MDBCNjA4NzUgLyogUERGS2l0SW1wb3J0cy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ2QkYxMjQyMUFGNTZFMTAwMUU3OUM5IC8qIFBlbmNpbEtpdFNvZnRMaW5rLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk1NjAsNyArOTU3Nyw3IEBACiAJCQkJN0M0Njk0Q0ExQTRCNEVBMTAwQUQ1
ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eU1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUIxRjc5NzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQjFGNzhDMUQxQjMzNTUwMDdDOUJEMSAvKiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMUFCMUY3N0UxRDFCMzBB
OTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExNzk4QjRDMjIyRjFCRDQwMDA3NjRCRCAvKiBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc5OTFEMUIzNjEzMDA3QzlC
RDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY4NTBGRTcxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0Ns
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEzRTczNjExMUNDMjY1OTAwN0JENTM5IC8qIFdl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oIGluIEhlYWRlcnMgKi8sCkBAIC05ODc0LDYgKzk4OTEsNyBA
QAogCQkJCTFBQjhBMUYyMTg0MDBCNjIwMEU5QUU2OSAvKiBXS1BhZ2VVSUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFnZVZpc2liaWxp
dHlUeXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTE1RUVERTYxRTMwMUNFRTAwMDA2OUIwIC8q
IFdLUGFzc3dvcmRWaWV3LmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTc5OEI0OTIyMkU1MzFEMDAw
NzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDZBQjU0MTE5MkIxQzRBMDAzQTlGRDEgLyogV0tQREZQYWdlTnVtYmVySW5kaWNhdG9y
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBMTA0NkVBMTIwNzkyNjMxMDBGMEM1RDggLyogV0tQREZW
aWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzEzNUFBOTE3M0IwQkNBMDA1ODZBRTIgLyogV0tQ
bHVnaW5JbmZvcm1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg2OCw2ICsxMDg4Niw3IEBA
CiAJCQkJMUJCQkU0QTAxOUI2NkM1MzAwNkI3RDgxIC8qIFJlbW90ZVdlYkluc3BlY3RvclVJTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxOEU2OTE3MTY5QjY2N0IwMDlC
NjY3MCAvKiBTZWNJdGVtU2hpbVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTYxN0E1MkQ4MUY0M0E5REEwMERDREMwQSAvKiBTZXJ2aWNlV29ya2VyQ2xpZW50RmV0
Y2hNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDFERTdDNkMyMjI3OEYx
RTAwNTMyQjY1IC8qIFNlcnZpY2VXb3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMkQ5MkE3ODcyMTJCNkFCMTAwRjQ5M0ZEIC8qIFNoYXJlYWJsZUJpdG1hcC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyREU2OTQzRDE4QkQyQTY4MDA1QzE1RTUgLyogU21hcnRNYWduaWZpY2F0
aW9uQ29udHJvbGxlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTMz
NERFRDE2REU4Rjg4MDA2QThFMzggLyogU3RvcmFnZUFyZWFNYXBNZXNzYWdlUmVjZWl2ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCkBAIC0xMTA1Miw3ICsxMTA3MSw2IEBACiAJCQkJMkQ4NTA4QzYyMTJF
MzNFRDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5Ny5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDg1MDhEODIxMkUzM0VEMDAwRUY0NkMgLyogVW5pZmllZFNvdXJjZTk4LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEODUwOEM1MjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlOTkuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJNDFERTdDNkMyMjI3OEYxRTAwNTMyQjY1IC8qIFNlcnZpY2VX
b3JrZXJGZXRjaFRhc2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkQ4NTA4RDIyMTJFMzNFRDAw
MEVGNDZDIC8qIFVuaWZpZWRTb3VyY2UxMDAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q0OTFC
MEQxRTczMkU0RDAwMDA5MDY2IC8qIFVzZXJNZWRpYUNhcHR1cmVNYW5hZ2VyTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNENDkxQjE3MUU3MzUyNTUwMDAwOTA2NiAvKiBV
c2VyTWVkaWFDYXB0dXJlTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363808</attachid>
            <date>2019-03-06 16:16:55 -0800</date>
            <delta_ts>2019-03-07 11:32:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190306161654.patch</filename>
            <type>text/plain</type>
            <size>117783</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi41OGM2YTMxNTBjYjVkODZjZjY3MDgx
MzAzZTcyM2E0YTA2N2NmNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2
MjU1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TW92ZWQgc29mdC1saW5raW5nIG9mIFBLUGF5bWVudEVycm9yRG9tYWluIGZyb20gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkgdG8gaGVyZSBhbmQgdXNlZAorICAgICAgICBhIG1vcmUgZGVzY3Jp
cHRpdmUgcGxhdGZvcm0gbWFjcm8uCisKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRM
aW5rLmg6CisgICAgICAgICogcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbToKKwogMjAxOS0w
My0wMSAgQ29ucmFkIFNodWx0eiAgPGNvbnJhZF9zaHVsdHpAYXBwbGUuY29tPgogCiAgICAgICAg
IEltcHJvcGVyIHVzZSBvZiBQTEFURk9STShUVk9TKSBpbiBQQUwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTZkYjU2
MGUxMzE4NDU2YmQ3OWQxZTdjNGY4ZmZmYzc1ODI1ZWQ3YS4uYWU2MWY2MWE2MDkwNDFmZmViNjAz
YjIxNDdkZWIwOTYwNDAwNjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTMgQEAKKzIwMTktMDMt
MDUgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtBcHBsZSBQYXld
IFVudGFuZ2xlIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBmcm9tIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTUzNDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ4NjI1NTEwPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEludHJvZHVj
ZWQgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgYW5kIFdLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZSB0byBlbmNhcHN1bGF0ZQorICAgICAgICBQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgYW5kIGl0cyBkZWxlZ2F0ZS4gVGF1Z2h0IFdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5IHRvCisgICAgICAgIGludGVyYWN0IHdpdGggUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIgcmF0aGVyIHRoYW4gUEtQQVZDIGRpcmVjdGx5LgorCisgICAgICAgIFRoZXNlIGNo
YW5nZXMgd2lsbCBhbGxvdyB1cyB0byBzd2FwIG91dCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgd2l0aCBQS1BheW1lbnRBdXRob3JpemF0aW9uQ29udHJvbGxlciBpbiBhIGZv
bGxvdy1vbiBwYXRjaC4KKworICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyLmg6IEFkZGVkLiBEZWZpbmVkIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2Ug
Zm9yCisgICAgICAgIHBheW1lbnQgYXV0aG9yaXphdGlvbiBwcmVzZW50ZXJzIHRoYXQgdXNlIFBL
UEEoVilDLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKTogTW92ZWQgZnJvbSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1t
LgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0Ojp0b05TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9OU0Vycm9y
cyk6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b1BLU2hpcHBpbmdNZXRob2RzKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbik6IEFkZGVkLiBJbXBsZW1lbnRzIHRoZQorICAgICAgICBsb2dp
YyBwcmV2aW91c2x5IGluIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBs
ZXRlTWVyY2hhbnRWYWxpZGF0aW9uLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcjo6Y29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uKTogRGl0dG8gZm9y
CisgICAgICAgIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudFNlc3Npb24pOiBEaXR0byBmb3IgCisgICAgICAg
IChXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBwaW5n
Q29udGFjdFNlbGVjdGlvbik6IERpdHRvIGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRTZXNzaW9uLgorICAgICAgICAoV2ViS2l0
OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ01ldGhvZFNl
bGVjdGlvbik6IERpdHRvIGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uLgorICAgICAgICAqIFBsYXRm
b3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDogQWRkZWQuIERl
ZmluZWQgYSBzdWJjbGFzcyBvZiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciBmb3IgUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLgorICAgICAgICAqIFBsYXRmb3JtL2Nv
Y29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW06IEFkZGVkLgorICAgICAg
ICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbml0V2l0
aFByZXNlbnRlcjpdKTogQWRkZWQgYSBQS1BBVkMKKyAgICAgICAgZGVsZWdhdGUgdGhhdCdzIGEg
c3ViY2xhc3Mgb2YgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGlkRmluaXNoOl0pOgorICAgICAgICBDYWxsZWQgLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEZpbmlzaF0uCisgICAgICAgICgtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVudDpoYW5kbGVyOl0pOiBDYWxsZWQK
KyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZEF1dGhvcml6ZVBh
eW1lbnQ6Y29tcGxldGlvbjpdLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmhhbmRsZXI6XSk6IENhbGxlZAorICAgICAgICAtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6Y29tcGxl
dGlvbjpdLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdDpoYW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDpjb21wbGV0aW9uOl0uCisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZDpo
YW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUgX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOndpbGxGaW5pc2hXaXRoRXJyb3I6XSk6CisgICAgICAgIENhbGxl
ZCAtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfd2lsbEZpbmlzaFdpdGhFcnJvcjpd
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFJlcXVlc3RNZXJjaGFudFNl
c3Npb246XSk6IENhbGxlZAorICAgICAgICAtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdLgorICAgICAgICAqIFBsYXRmb3JtL2NvY29h
L1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBQbGF0
Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW06IEFkZGVkLgorICAg
ICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgc3VtbWFyeUl0ZW1zXSk6IEFk
ZGVkIGEgc3VtbWFyeUl0ZW1zIGdldHRlci4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIHNoaXBwaW5nTWV0aG9kc10pOiBEaXR0byBmb3Igc2hpcHBpbmdNZXRob2Rz
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVNZXJj
aGFudFZhbGlkYXRpb246ZXJyb3I6XSk6IENhbGxlZAorICAgICAgICBfZGlkUmVxdWVzdE1lcmNo
YW50U2Vzc2lvbkNvbXBsZXRpb24gdGhlbiBzZXQgaXQgdG8gbmlsLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9u
Ol0pOiBEaXR0byBmb3IKKyAgICAgICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9u
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVQYXlt
ZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRlOl0pOiBEaXR0bworICAgICAgICBm
b3IgX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uRGVsZWdhdGUgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246c3Vt
bWFyeUl0ZW1zOnNoaXBwaW5nTWV0aG9kczplcnJvcnM6XSk6CisgICAgICAgIERpdHRvIGZvciBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbi4KKyAgICAgICAgKC1bV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246XSk6
IERpdHRvIGZvcgorICAgICAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgaW52YWxpZGF0ZV0pOiBJ
ZiB0aGVyZSdzIGFuIG91dHN0YW5kaW5nIGF1dGhvcml6YXRpb24KKyAgICAgICAgY2FsbGJhY2ss
IGNhbGxlZCAtY29tcGxldGVQYXltZW50U2Vzc2lvbjplcnJvcnM6ZGlkUmVhY2hGaW5hbFN0YXRl
OiB3aXRoIGEgc3RhdGUgb2YKKyAgICAgICAgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0Zh
aWx1cmUuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfaW5pdFdp
dGhQcmVzZW50ZXI6XSk6CisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSBfZGlkQXV0aG9yaXplUGF5bWVudDpjb21wbGV0aW9uOl0pOiBBZGRlZC4gSW1wbGVtZW50cyB0
aGUKKyAgICAgICAgbG9naWMgcHJldmlvdXNseSBpbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRGaW5pc2hdKTogRGl0dG8uCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjpdKTogRGl0dG8uCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0UGF5bWVudE1l
dGhvZDpjb21wbGV0aW9uOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpdKTogRGl0
dG8uCisgICAgICAgICh0b1NoaXBwaW5nTWV0aG9kKTogTW92ZWQgZnJvbSBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNvbXBsZXRpb246XSk6IEFkZGVkLiBJ
bXBsZW1lbnRzCisgICAgICAgIHRoZSBsb2dpYyBwcmV2aW91c2x5IGluIFdLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgX3dpbGxGaW5pc2hXaXRoRXJyb3I6XSk6IERpdHRvLgorICAgICAg
ICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJXaWxsVmFs
aWRhdGVNZXJjaGFudCk6IFRvIGNvbmZvcm0gdG8KKyAgICAgICAgUGF5bWVudEF1dGhvcml6YXRp
b25QcmVzZW50ZXI6OkNsaWVudCwgcmVuYW1lZCBmcm9tIHZhbGlkYXRlTWVyY2hhbnQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRBdXRo
b3JpemVQYXltZW50KTogUmVuYW1lZCBmcm9tCisgICAgICAgIGRpZEF1dGhvcml6ZVBheW1lbnQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJE
aWRGaW5pc2gpOiBNb3ZlZCBsb2dpYyBoZXJlIHRoYXQgcHJldmlvdXNseQorICAgICAgICBleGlz
dGVkIGluIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QpOiBSZW5hbWVkIGZyb20KKyAgICAgICAgZGlkU2VsZWN0U2hpcHBp
bmdNZXRob2QuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpw
cmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QpOiBSZW5hbWVkIGZyb20KKyAgICAgICAg
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZCk6IFJlbmFtZWQg
ZnJvbQorICAgICAgICBkaWRTZWxlY3RQYXltZW50TWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudCk6IFJlbmFtZWQgdG8K
KyAgICAgICAgcHJlc2VudGVyV2lsbFZhbGlkYXRlTWVyY2hhbnQuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRBdXRob3JpemVQYXltZW50KTogUmVuYW1l
ZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50LgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qp
OiBSZW5hbWVkIHRvCisgICAgICAgIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0KTogUmVuYW1lZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3QuCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
OjpkaWRTZWxlY3RQYXltZW50TWV0aG9kKTogUmVuYW1lZCB0bworICAgICAgICBkaWRTZWxlY3RQ
YXltZW50TWV0aG9kLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS5oOiBDaGFuZ2VkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IHRvCisgICAg
ICAgIHN1YmNsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQuCisgICAg
ICAgICogU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaDogUmVtb3ZlZCBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBpbnRlcmZhY2UgYW5kIGRlY2xhcmVkIHNvbWUgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBu
ZWVkZWQgYnkgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuCisgICAgICAgICogU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW06CisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKTogUmVtb3ZlZCBzdGF0aWMg
a2V5d29yZC4KKyAgICAgICAgKFdlYktpdDo6dG9EZWNpbWFsTnVtYmVyKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW0pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6dG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
dG9QS1NoaXBwaW5nTWV0aG9kKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVBheW1lbnRSZXF1ZXN0KTogQ2hhbmdlZCB0byBjYWxs
CisgICAgICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0
aG9kU2VsZWN0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoLVtXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbml0V2l0aFBheW1lbnRD
b29yZGluYXRvclByb3h5Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXSk6IERlbGV0ZWQuCisgICAg
ICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6d2lsbEZpbmlzaFdpdGhFcnJvcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOl0pOiBEZWxldGVkLgorICAgICAgICAodG9TaGlwcGluZ01ldGhvZCk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkQXV0aG9yaXplUGF5bWVu
dDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0p
OiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdDpoYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4K
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUg
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpjb21wbGV0aW9uOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOmRpZFNlbGVjdFBheW1lbnRNZXRob2Q6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAg
ICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29t
cGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRp
ZEZpbmlzaDpdKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKTogTW92ZWQgdG8gUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0u
CisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50RXJyb3JDb2RlKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OnRvTlNFcnJvcik6IERpdHRvLgorICAgICAgICAoV2ViS2l0Ojp0b05TRXJyb3Jz
KTogRGl0dG8uCisgICAgICAgICogU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSSk6IENoYW5nZWQgdG8gcHJlc2VudCBhCisgICAg
ICAgIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyIHJhdGhlciB0aGFuIGEgUEtQQVZDLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlkZVBheW1lbnRV
SSk6IENoYW5nZWQgdG8gZGlzbWlzcyBhCisgICAgICAgIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyIHJhdGhlciB0aGFuIGEgUEtQQVZDLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXltZW50
VUkpOiBEaXR0by4KKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0
b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKTogQWRkZWQuIFJldHVybnMgYSBuZXcKKyAgICAgICAg
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0wMy0wNSAgRGF2aWQgUXVlc2FkYSAgPGRh
dmlkX3F1ZXNhZGFAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEl0IHNob3VsZCBiZSBwb3Nz
aWJsZSB0byBmb2xsb3cgbGlua3Mgd2l0aCAnZG93bmxvYWQnIGF0dHJpYnV0ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0ODk1
NTY1MWQ5Y2MzYjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRkY2Vm
MTI1Zjc3YTE0MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29j
b2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9Q
YXNzS2l0U29mdExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hF
QURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hFQURF
UihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckFu
ZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWluLCBQ
S0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBkb21h
aW4sIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQYXNz
S2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
R1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlwZSwg
UEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAoY29u
dGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAotI2lm
IFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykK
IFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBLUGF5
bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQaG9u
ZU51bWJlciwgUEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRf
TElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVS
KFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwgUEtQ
YXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBhc3NL
aXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NVc2Vy
SW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVy
RG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwg
TlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRl
bnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNvbXBs
ZXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNzS2l0
U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGlu
ay5tbQppbmRleCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44NzI5
NzNlNGE5NGFmNGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBAQCBT
T0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLU2hp
cHBpbmdNZXRob2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElkZW50
aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcgKmRv
bWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRpZmll
ciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElPTl9G
T1JfU09VUkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChDR0Nv
bnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1BheW1l
bnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmluZyAq
bGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUsIGxh
bmd1YWdlQ29kZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYmIF9f
TUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFTU0tJ
VF9HUkFOVUxBUl9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9S
VChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBPUlQp
CiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
UGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9MSU5L
X0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRSZXF1
ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBAQCBT
T0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
Q29udGFjdEZpZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0VfV0lU
SF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtDb250
YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtDb250
YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRI
X0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlckluZm9L
ZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5UX0ZP
Ul9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFpbiwg
TlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNFX1dJ
VEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlcklu
Zm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVOQ1RJ
T05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRz
V2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lkLCAo
TlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3VyY2VB
cHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxldGlv
biBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25TZWNv
bmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
aCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4NjY5
ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXlt
ZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9j
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xs
ZXI7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0OworY2xh
c3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciA6
IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gewor
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xpZW50
IHsKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYs
IGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVz
ZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXlt
ZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGNvbnN0IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgpIHsg
cmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9u
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNvbXBs
ZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
TWV0aG9kVXBkYXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBP
cHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2b2lk
IGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRhdGU+
Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3RlZDoK
KyAgICBleHBsaWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNsaWVu
dCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZpcnR1
YWwgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkgPSAw
OworCitwcml2YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUyNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29j
b2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KKyNp
bXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFsL2Nv
Y29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5UKENv
bnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19D
T05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcgKik7
CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlD
b2RlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0
YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RBTlQo
Q29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmluZyAq
KTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRtaW5p
c3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0
cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRoZXNl
IGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMgc2hv
dWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhlaXIg
cGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0
YXR1cykKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQYXlt
ZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6
Q29kZSBjb2RlKQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5rbm93
bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGluZ0Nv
bnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0SW52
YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5n
Q29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFjdElu
dmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRkcmVz
c1Vuc2VydmljZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJlc3NV
bnNlcnZpY2VhYmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vycm9y
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2VySW5m
byA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAgW3Vz
ZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0
aW9uS2V5XTsKKworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNTdHJp
bmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRkcmVz
c0tleSA9IG5pbDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1i
ZXI6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRQaG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxB
ZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpO
YW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1l
OgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAor
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxB
ZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
QWRkcmVzc0xpbmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBB
TDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAgICAg
ICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlL
ZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAgICAg
ICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxB
ZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRy
ZXNzUG9zdGFsQ29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5p
c3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAg
ICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFs
QWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRk
cmVzc1N0YXRlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAg
ICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgorICAg
ICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxk
UG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9z
dGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50
cnlDb2RlOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0
RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRV
c2VySW5mb0tleSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAgICAg
ICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bh
c3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAgfQor
CisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0X1BL
UGF5bWVudEVycm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5jb2Rl
KSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05TRXJy
b3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7CisgICAg
TlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTplcnJvcnMuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3JzKSB7
CisgICAgICAgIGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAgICAg
ICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKworI2lm
ICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0aW9u
YWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
U3VjY2VzczsKKworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAg
ICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25v
d246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5z
ZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6
QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Cisg
ICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9
PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRT
aGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0K
KworICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAgICBp
ZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUtPmVy
cm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3Jz
WzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAg
ICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bv
c3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6
OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZp
ZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRh
Y3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAg
ICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5n
Q29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JBTlVM
QVJfRVJST1JTKQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kPiYgc2hpcHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBwaW5n
TWV0aG9kcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01ldGhv
ZHMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdNZXRo
b2RzKQorICAgICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01l
dGhvZChzaGlwcGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsKK30K
Kwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFudFZh
bGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hhbnRT
ZXNzaW9uKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0Zm9y
bURlbGVnYXRlKCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9uLnBr
UGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAg
IEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9
IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5l
SXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1E
ZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNdOwor
fQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRT
ZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
PiYgcmVzdWx0KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhBVkUo
UEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0b1BL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0ID8g
dG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0YXR1
cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJyYXkg
KmVycm9ycyA9IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRl
UGF5bWVudFNlc3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOldl
YkNvcmU6OmlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24oY29u
c3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQorewor
ICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5nTWV0
aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGluZ01l
dGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0FycmF5
ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUt
Pm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRlbXM7
CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJvcnMg
PSB1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0byBz
dGF0dXMgPSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisgICAg
TlNBcnJheSAqZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdhdGUo
KSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1zOnN1
bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJvcnNd
OworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNoaXBw
aW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9k
VXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAg
IE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1z
KHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1h
cnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RT
ZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
Y29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzFkMzMzZTVlNTk3YzIxOTQwODQwODI5ODA4ZjhjMjE4ZWZkMWNiZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNfQ0xB
U1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQS1Bh
eW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGU7
CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRl
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwgOiBw
dWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcihQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiwgUEtQYXltZW50UmVxdWVzdCAq
KTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICBQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpDbGllbnQmLCBQS1Bh
eW1lbnRSZXF1ZXN0ICosIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKTsK
KyNlbmRpZgorCitwcml2YXRlOgorICAgIC8vIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
CisgICAgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkg
ZmluYWw7CisgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKKyAgICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNlbmRpZgorCisgICAgUmV0YWluUHRyPFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29udHJvbGxlcjsKKyAgICBSZXRh
aW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fZGVs
ZWdhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNT
S0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2Nv
YS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMTBk
MmI3MzhiZDBjNTY3YzBmYTFiMDNkODVhN2MzZjA4ZjI0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIubW0KQEAgLTAsMCArMSwxNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIKKworI2lm
IFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUu
aCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KKworQGludGVyZmFjZSBX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA6IFdLUGF5bWVudEF1
dGhvcml6YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxl
Z2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVzdDooUEtQYXltZW50UmVxdWVz
dCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJilwcmVzZW50ZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFJlcXVlc3Q6KFBLUGF5bWVudFJlcXVlc3QgKilyZXF1ZXN0IHByZXNlbnRlcjooV2ViS2l0OjpQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVyCit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBfaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgcHJlc2VudGVyOnByZXNlbnRlcl0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKyNwcmFnbWEg
bWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQorCistICh2
b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEaWRGaW5pc2g6KFBLUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIKK3sKKyAgICBbc2VsZiBf
ZGlkRmluaXNoXTsKK30KKworI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisKKy0g
KHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50OihQ
S1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRp
b25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRBdXRob3JpemVQ
YXltZW50OnBheW1lbnQgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBw
aW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVx
dWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KK3sKKyAgICBbc2Vs
ZiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjpjb21w
bGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBoYW5kbGVyOih2b2lkIChe
KShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUpKWNvbXBsZXRp
b24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbnRhY3QgY29tcGxl
dGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRo
b2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFBheW1lbnRNZXRob2RVcGRhdGUg
KnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50TWV0aG9k
OnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2Vsc2UKKworLSAo
dm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1dGhvcml6ZVBheW1lbnQ6KFBL
UGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCheKShQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2RpZEF1dGhvcml6ZVBheW1lbnQ6
cGF5bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6KFBLU2hpcHBpbmdNZXRo
b2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlv
bgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpzaGlwcGluZ01ldGhvZCBj
b21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNv
bnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0NvbnRhY3QgKiljb250YWN0IGNv
bXBsZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheTxQ
S1NoaXBwaW5nTWV0aG9kICo+ICosIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikp
Y29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29udGFj
dCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQYXltZW50TWV0aG9kICopcGF5
bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0
ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RQYXltZW50TWV0aG9k
OnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworI2VuZGlmCisKKyNw
cmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZVBy
aXZhdGUKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIHdpbGxGaW5pc2hX
aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtzZWxmIF93aWxsRmluaXNoV2l0aEVy
cm9yOmVycm9yXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRp
ZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9u
ICosIE5TRXJyb3IgKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOmNvbXBsZXRpb25dOworfQorCitAZW5kCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1lbnRSZXF1ZXN0ICpyZXF1ZXN0
KQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xpZW50KQorICAgICwgbV92
aWV3Q29udHJvbGxlcihhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnJlcXVlc3RdKSkK
KyAgICAsIG1fZGVsZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBwcmVzZW50ZXI6
KnRoaXNdKSkKK3sKKyAgICBbbV92aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX2RlbGVnYXRl
LmdldCgpXTsKKyAgICBbbV92aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bV9kZWxl
Z2F0ZS5nZXQoKV07Cit9CisjZW5kaWYKKworI2lmIFBMQVRGT1JNKE1BQykKK1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCYgY2xpZW50LCBQS1BheW1l
bnRSZXF1ZXN0ICpyZXF1ZXN0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
KnZpZXdDb250cm9sbGVyKQorICAgIDogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIoY2xp
ZW50KQorICAgICwgbV92aWV3Q29udHJvbGxlcih2aWV3Q29udHJvbGxlcikKKyAgICAsIG1fZGVs
ZWdhdGUoYWRvcHROUyhbW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFJlcXVlc3Q6cmVxdWVzdCBwcmVzZW50ZXI6KnRoaXNdKSkKK3sK
KyAgICBbbV92aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKKyAg
ICBbbV92aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bV9kZWxlZ2F0ZS5nZXQoKV07
Cit9CisjZW5kaWYKKworV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpwbGF0Zm9ybURlbGVnYXRlKCkKK3sKKyAgICByZXR1
cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOjpkaXNtaXNzKCkKK3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtb
bV92aWV3Q29udHJvbGxlciBwcmVzZW50aW5nVmlld0NvbnRyb2xsZXJdIGRpc21pc3NWaWV3Q29u
dHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOworI2VuZGlmCisgICAgW21f
dmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bmlsXTsKKyAgICBbbV92aWV3Q29udHJvbGxlciBz
ZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKKyAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOworICAg
IFttX2RlbGVnYXRlIGludmFsaWRhdGVdOworICAgIG1fZGVsZWdhdGUgPSBuaWw7Cit9CisKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXI6OnByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyIHx8ICFtX3ZpZXdDb250cm9sbGVy
KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgW3ByZXNl
bnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmlld0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxl
ci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRyXTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcih0cnVlKTsKK30KKworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisj
ZW5kaWYgLy8gVVNFKFBBU1NLSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3Jt
L2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZTE2YmFhZjhhMmQ3NDcxZDFhMmE4YmIxNGU4OTU1NjVhZGI1N2ZjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9u
RGVsZWdhdGUuaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgVVNFKFBB
U1NLSVQpCisKKyNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgorI2ltcG9ydCA8
d3RmL0Jsb2NrUHRyLmg+CisKK09CSkNfQ0xBU1MgTlNBcnJheTsKK09CSkNfQ0xBU1MgTlNFcnJv
cjsKK09CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOworCit1c2luZyBEaWRSZXF1ZXN0
TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50TWVyY2hh
bnRTZXNzaW9uICosIE5TRXJyb3IgKik+OworCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKK3VzaW5nIERpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9p
ZChQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ICopPjsKK3VzaW5nIERpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0UGF5bWVu
dE1ldGhvZFVwZGF0ZSAqKT47Cit1c2luZyBEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0
aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
ICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRy
PHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICopPjsKKyNlbHNlCit1
c2luZyBEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cyk+OwordXNpbmcgRGlkU2VsZWN0UGF5bWVudE1ldGhvZENv
bXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKE5TQXJyYXkgKik+OwordXNpbmcgRGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0Q29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cywgTlNBcnJheSAqLCBOU0FycmF5ICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cywgTlNBcnJheSAqKT47CisjZW5kaWYKKworfQorCitAaW50ZXJmYWNlIFdLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0
IE5TX1VOQVZBSUxBQkxFOworCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wg
ZGlkUmVhY2hGaW5hbFN0YXRlOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0Fy
cmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdN
ZXRob2RzOworCistICh2b2lkKWNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRN
ZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVycm9yOihOU0Vycm9yICopZXJyb3I7CistICh2b2lk
KWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5
SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsKKy0gKHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjoo
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMgZXJyb3JzOihOU0FycmF5PE5TRXJy
b3IgKj4gKillcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOihCT09MKWRpZFJlYWNoRmluYWxTdGF0
ZTsKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIHN1bW1hcnlJdGVtczooTlNBcnJheTxQS1BheW1lbnRT
dW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6KE5TQXJyYXk8UEtT
aGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kcyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJv
ciAqPiAqKWVycm9yczsKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjoo
TlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsKKy0gKHZvaWQp
aW52YWxpZGF0ZTsKKworQGVuZAorCisvLyBIZWxwZXIgbWV0aG9kcyBjYWxsZWQgYnkgV0tQYXlt
ZW50QXV0aG9yaXphdGlvblNlc3Npb24ncyBzdWJjbGFzc2VzCitAaW50ZXJmYWNlIFdLUGF5bWVu
dEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAoUHJvdGVjdGVkKQorCistIChpbnN0YW5jZXR5cGUpX2lu
aXRXaXRoUmVxdWVzdDooUEtQYXltZW50UmVxdWVzdCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJL
aXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJilwcmVzZW50ZXI7CisKKy0gKHZvaWQp
X2RpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjooV2Vi
S2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247
CistICh2b2lkKV9kaWRGaW5pc2g7CistICh2b2lkKV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9u
OihXZWJLaXQ6OkRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uOjpCbG9ja1R5cGUp
Y29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1l
dGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50
TWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjooV2ViS2l0
OjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlv
bjsKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICop
c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uOworLSAodm9pZClfd2lsbEZpbmlzaFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJ
VCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1Bh
eW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0YzU1NGFjNTc4OGIx
ZDIyNzAyNmZiYTIwNmJiNWVlNjYzMTFkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCkBAIC0w
LDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIldLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIgorCisjaWYgVVNFKFBBU1NLSVQp
CisKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50
TWV0aG9kLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGUgeworICAgIFJldGFpblB0cjxOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+PiBfc3Vt
bWFyeUl0ZW1zOworICAgIFJldGFpblB0cjxOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4+IF9z
aGlwcGluZ01ldGhvZHM7CisgICAgV2Vha1B0cjxXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9u
UHJlc2VudGVyPiBfcHJlc2VudGVyOworICAgIFdlYktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENv
bXBsZXRpb24gX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uOworICAgIFdlYktpdDo6RGlk
UmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24gX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Np
b25Db21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRp
b24gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29t
cGxldGlvbjsKKyAgICBXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiBf
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uOworfQorCistIChOU0FycmF5PFBLUGF5
bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zCit7CisgICAgcmV0dXJuIF9zdW1tYXJ5
SXRlbXMuZ2V0KCk7Cit9CisKKy0gKE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBw
aW5nTWV0aG9kcworeworICAgIHJldHVybiBfc2hpcHBpbmdNZXRob2RzLmdldCgpOworfQorCist
ICh2b2lkKWNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Np
b24gKilzZXNzaW9uIGVycm9yOihOU0Vycm9yICopZXJyb3IKK3sKKyAgICBzdGQ6OmV4Y2hhbmdl
KF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiwgbmlsKShzZXNzaW9uLCBlcnJv
cik7Cit9CisKKy0gKHZvaWQpY29tcGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5
PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zCit7CisgICAgX3N1bW1hcnlJ
dGVtcyA9IHN1bW1hcnlJdGVtczsKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQor
ICAgIGF1dG8gdXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXlt
ZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1
bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRN
ZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5nZXQoKSk7CisjZWxzZQorICAgIHN0ZDo6ZXhj
aGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uLCBuaWwpKF9zdW1tYXJ5SXRl
bXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4g
KillcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOihCT09MKWRpZFJlYWNoRmluYWxTdGF0ZQorewor
ICAgIF9kaWRSZWFjaEZpbmFsU3RhdGUgPSBkaWRSZWFjaEZpbmFsU3RhdGU7CisjaWYgSEFWRShQ
QVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1
czpzdGF0dXMgZXJyb3JzOmVycm9yc10pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZEF1dGhvcml6
ZVBheW1lbnRDb21wbGV0aW9uLCBuaWwpKHJlc3VsdC5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VS
VCghZXJyb3JzLmNvdW50KTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRBdXRob3JpemVQYXltZW50
Q29tcGxldGlvbiwgbmlsKShzdGF0dXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpY29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3Rh
dHVzIHN1bW1hcnlJdGVtczooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1h
cnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6KE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNo
aXBwaW5nTWV0aG9kcyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycworeworICAg
IF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IHNo
aXBwaW5nTWV0aG9kczsKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIEFT
U0VSVChzdGF0dXMgPT0gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MpOworICAg
IGF1dG8gdXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGlu
Z0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoRXJyb3JzOmVycm9ycyBwYXltZW50U3Vt
bWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOl9zaGlwcGluZ01l
dGhvZHMuZ2V0KCldKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVCghZXJy
b3JzLmNvdW50KTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RD
b21wbGV0aW9uLCBuaWwpKHN0YXR1cywgX3NoaXBwaW5nTWV0aG9kcywgX3N1bW1hcnlJdGVtcyk7
CisjZW5kaWYKK30KKworLSAodm9pZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihO
U0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zCit7CisgICAgX3N1
bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJS
T1JTKQorICAgIGF1dG8gdXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVl
c3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0
ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RT
aGlwcGluZ01ldGhvZENvbXBsZXRpb24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAg
c3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzLCBfc3VtbWFyeUl0ZW1zKTsKKyNlbmRp
ZgorfQorCistICh2b2lkKWludmFsaWRhdGUKK3sKKyAgICBpZiAoX2RpZEF1dGhvcml6ZVBheW1l
bnRDb21wbGV0aW9uKQorICAgICAgICBbc2VsZiBjb21wbGV0ZVBheW1lbnRTZXNzaW9uOlBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAW10gZGlkUmVhY2hGaW5hbFN0
YXRlOllFU107Cit9CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZSAoUHJvdGVjdGVkKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUmVx
dWVzdDooUEtQYXltZW50UmVxdWVzdCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1l
bnRBdXRob3JpemF0aW9uUHJlc2VudGVyJilwcmVzZW50ZXIKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9zdW1tYXJ5SXRlbXMg
PSByZXF1ZXN0LnBheW1lbnRTdW1tYXJ5SXRlbXM7CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IHJl
cXVlc3Quc2hpcHBpbmdNZXRob2RzOworICAgIF9wcmVzZW50ZXIgPSBtYWtlV2Vha1B0cihwcmVz
ZW50ZXIpOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKV9kaWRBdXRob3JpemVQYXlt
ZW50OihQS1BheW1lbnQgKilwYXltZW50IGNvbXBsZXRpb246KFdlYktpdDo6RGlkQXV0aG9yaXpl
UGF5bWVudENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFf
ZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24pOworICAgIF9kaWRBdXRob3JpemVQYXltZW50
Q29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50
ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIpCisgICAgICAgIHJldHVybiBbc2VsZiBjb21w
bGV0ZVBheW1lbnRTZXNzaW9uOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVy
cm9yczpAWyBdIGRpZFJlYWNoRmluYWxTdGF0ZTpZRVNdOworCisgICAgcHJlc2VudGVyLT5jbGll
bnQoKS5wcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KCpwcmVzZW50ZXIsIFdlYkNvcmU6OlBh
eW1lbnQocGF5bWVudCkpOworfQorCistICh2b2lkKV9kaWRGaW5pc2gKK3sKKyAgICBpZiAoYXV0
byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpKQorICAgICAgICBwcmVzZW50ZXItPmNsaWVu
dCgpLnByZXNlbnRlckRpZEZpbmlzaCgqcHJlc2VudGVyLCBfZGlkUmVhY2hGaW5hbFN0YXRlKTsK
K30KKworLSAodm9pZClfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbjooV2ViS2l0OjpEaWRSZXF1
ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAg
ICBBU1NFUlQoIV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbik7CisgICAgX2Rp
ZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIFtQ
QUw6OmdldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVu
dFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAqbWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtl
UGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3Ip
OworCisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgICAgICBBU1NFUlQoX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9u
KTsKKworICAgICAgICAgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAg
ICAgICAgICAgaWYgKCFwcmVzZW50ZXIpIHsKKyAgICAgICAgICAgICAgICBfZGlkUmVxdWVzdE1l
cmNoYW50U2Vzc2lvbkNvbXBsZXRpb24obmlsLCBuaWwpOworICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVz
ZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudCgqcHJlc2VudGVyLCBtZXJjaGFudFVSTCk7CisgICAg
ICAgIH0pOworICAgIH1dOworfQorCistICh2b2lkKV9kaWRTZWxlY3RQYXltZW50TWV0aG9kOihQ
S1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAg
QVNTRVJUKCFfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24pOworICAgIF9kaWRTZWxl
Y3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBhdXRvIHByZXNl
bnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIpCisgICAgICAgIHJl
dHVybiBbc2VsZiBjb21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb246QFsgXV07CisKKyAgICBw
cmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QoKnByZXNl
bnRlciwgV2ViQ29yZTo6UGF5bWVudE1ldGhvZChwYXltZW50TWV0aG9kKSk7Cit9CisKKy0gKHZv
aWQpX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0
aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb246OkJsb2NrVHlw
ZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29t
cGxldGlvbik7CisgICAgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21w
bGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAgIGlm
ICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4gW3NlbGYgY29tcGxldGVTaGlwcGluZ0NvbnRh
Y3RTZWxlY3Rpb246UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgc3VtbWFyeUl0
ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF0gZXJyb3JzOkBbIF1dOworCisgICAgcHJlc2Vu
dGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoKnByZXNlbnRl
ciwgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QoY29udGFjdCkpOworfQorCitzdGF0aWMgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBp
bmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hpcHBpbmdNZXRob2QpCit7CisgICAgQVNTRVJU
KHNoaXBwaW5nTWV0aG9kKTsKKworICAgIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7CisgICAgcmVzdWx0LmFtb3VudCA9IHNoaXBw
aW5nTWV0aG9kLmFtb3VudC5zdHJpbmdWYWx1ZTsKKyAgICByZXN1bHQuZGV0YWlsID0gc2hpcHBp
bmdNZXRob2QuZGV0YWlsOworICAgIHJlc3VsdC5pZGVudGlmaWVyID0gc2hpcHBpbmdNZXRob2Qu
aWRlbnRpZmllcjsKKyAgICByZXN1bHQubGFiZWwgPSBzaGlwcGluZ01ldGhvZC5sYWJlbDsKKwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9k
OihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpE
aWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7
CisgICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKTsKKyAgICBf
ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1
dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQoKTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAg
ICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246QFsgXV07
CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKCpwcmVzZW50ZXIsIHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKK30KKwor
LSAodm9pZClfd2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cit9CisKK0Bl
bmQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4
IGI0NzQ1ZTJlYjA4YzZjZTQzMjUxMWU4NTMyYjcyMWJiODhiMjk1ZWYuLmE2OTVjNjc0NGVjYjlj
MjM2NzMwN2EyZjViNGZjY2JiN2I4YTdmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAg
LTIzMCw3ICsyMzAsNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5j
ZWxQYXltZW50U2Vzc2lvbigpCiAgICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJiB1
cmwpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJXaWxsVmFsaWRh
dGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFVSTCYgdXJs
KQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFs
aWRhdGlvblN0YXRlOjpJZGxlKTsKIApAQCAtMjM4LDEzICsyMzgsMjAgQEAgdm9pZCBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OlZhbGlkYXRlTWVyY2hhbnQo
dXJsLnN0cmluZygpKSk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRp
ZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKK3ZvaWQg
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZEF1dGhvcml6ZVBheW1lbnQo
UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBw
YXltZW50KQogewogICAgIG1fc3RhdGUgPSBTdGF0ZTo6QXV0aG9yaXplZDsKICAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZEF1dGhvcml6ZVBheW1lbnQocGF5bWVu
dCkpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlw
cGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cHJlc2VudGVyRGlkRmluaXNoKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
JiwgYm9vbCBkaWRSZWFjaEZpbmFsU3RhdGUpCit7CisgICAgaWYgKCFkaWRSZWFjaEZpbmFsU3Rh
dGUpCisgICAgICAgIGRpZENhbmNlbFBheW1lbnRTZXNzaW9uKCk7CisgICAgaGlkZVBheW1lbnRV
SSgpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0
IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYg
c2hpcHBpbmdNZXRob2QpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7
CiAKQEAgLTI1Miw3ICsyNTksNyBAQCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Ojpk
aWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheQogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRvcjo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qo
c2hpcHBpbmdNZXRob2QpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBz
aGlwcGluZ0NvbnRhY3QpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50
ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIm
LCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYgc2hpcHBpbmdDb250YWN0KQogewogICAg
IEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3RpdmUpOwogCkBAIC0yNjAsNyArMjY3LDcgQEAg
dm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpKTsKIH0K
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZChjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQordm9pZCBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZChQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRo
b2QmIHBheW1lbnRNZXRob2QpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGMxOWIxMmJhM2U4MDRiYWZhMjYwMmM4MWNk
MGU5MDQ3ZDM0OTNlNTcuLmNhYTVmOTVlY2FjZTZiODE4MmI3OGY2YTM5NTcyZDVmOTZlZTllZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50
SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgpAQCAtNTYsMTMgKzU3LDE2IEBAIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CiBPQkpDX0NM
QVNTIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgUEtQ
YXltZW50UmVxdWVzdDsKIE9CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKLU9CSkNfQ0xBU1Mg
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6
Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eT4geworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICA6IHByaXZh
dGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVy
CisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+
CisgICAgLCBwdWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7CiBw
dWJsaWM6CiAgICAgc3RydWN0IENsaWVudCB7CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpID0g
ZGVmYXVsdDsKQEAgLTc1LDYgKzc5LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9y
UHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9y
Q1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5JikgPSAwOworICAgICAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlcj4gcGF5bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRl
cihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYsIFBLUGF5bWVudFJlcXVlc3QgKikgPSAwOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICAgICB2aXJ0dWFsIE5TV2luZG93ICpwYXlt
ZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5JikgPSAwOwpAQCAtODUsMTIgKzkwLDYgQEAgcHVibGljOgogICAgIH5XZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigp
OwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmKTsKLSAgICB2b2lkIGRpZEF1
dGhvcml6ZVBheW1lbnQoY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpOwotICAgIHZvaWQgZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OlNoaXBwaW5nTWV0aG9kJik7Ci0gICAgdm9pZCBkaWRTZWxlY3RTaGlwcGluZ0NvbnRh
Y3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFBh
eW1lbnRNZXRob2QoY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpOwotCiAgICAgdm9pZCBo
aWRlUGF5bWVudFVJKCk7CiAKIHByaXZhdGU6CkBAIC0xMDEsNiArMTAwLDE0IEBAIHByaXZhdGU6
CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdl
U2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5k
ZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7CisgICAgCisgICAgLy8gUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXI6OkNsaWVudAorICAgIHZvaWQgcHJlc2VudGVyRGlkQXV0aG9yaXpl
UGF5bWVudChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBh
eW1lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlciYsIGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSBmaW5hbDsKKyAgICB2
b2lkIHByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9kJikgZmluYWw7CisgICAgdm9p
ZCBwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFjdCYpIGZpbmFsOworICAgIHZv
aWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2QmKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnRlcldpbGxWYWxpZGF0ZU1l
cmNoYW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgY29uc3QgVVJMJikgZmluYWw7
CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBhdmFpbGFibGVQYXltZW50TmV0
d29ya3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CkBAIC0x
NzMsOCArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgVmFsaWRhdGlvbkNvbXBsZXRlCiAgICAg
fSBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlIHsgTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6Oklk
bGUgfTsKIAotICAgIFJldGFpblB0cjxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjsKLSAgICBSZXRhaW5QdHI8
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gbV9hdXRob3JpemF0aW9uUHJlc2VudGVyOwog
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHVpbnQ2NF90IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RT
ZWVkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29j
b2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4
IGZiYmVlYWQzNzI2M2QyN2M3ZDMzYTA1YmI3Njk1ODNmMjVkZjYxNTEuLjRlOTQyYjk2OGE0Mzll
NjM0YmY4YWU3YjkyNjNjYTYyNGIzODY4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eUNvY29hLmgKQEAgLTI3LDM3ICsyNywxOCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BB
WSkKIAotI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQ
SS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAKLUBpbnRlcmZhY2UgV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgOiBOU09iamVjdCA8UEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlclByaXZhdGVEZWxlZ2F0ZT4gewotQHBhY2thZ2UKLSAgICBXZWJLaXQ6Oldl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KiBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0g
ICAgUmV0YWluUHRyPE5TQXJyYXk+IF9wYXltZW50U3VtbWFyeUl0ZW1zOwotICAgIFJldGFpblB0
cjxOU0FycmF5PiBfc2hpcHBpbmdNZXRob2RzOworbmFtZXNwYWNlIFdlYktpdCB7CiAKLSAgICBC
bG9ja1B0cjx2b2lkKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqLCBOU0Vycm9yICopPiBfc2Vz
c2lvbkJsb2NrOworLy8gRklYTUU6IFJhdGhlciB0aGFuIGhhdmluZyB0aGVzZSBmcmVlIGZ1bmN0
aW9ucyBzY2F0dGVyZWQgYWJvdXQsIEFwcGxlIFBheSBkYXRhIHR5cGVzIHNob3VsZCBrbm93Cisv
LyBob3cgdG8gY29udmVydCB0aGVtc2VsdmVzIHRvIGFuZCBmcm9tIHRoZWlyIHBsYXRmb3JtIHJl
cHJlc2VudGF0aW9ucy4KK05TQXJyYXkgKnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdl
YkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYp
OworTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQp
OworUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2Vi
Q29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJik7CitQS1BheW1l
bnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2ViQ29yZTo6QXBw
bGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtOjpUeXBlKTsKK1BLU2hpcHBpbmdN
ZXRob2QgKnRvUEtTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKTsKIAotICAgIEJPT0wgX2RpZFJlYWNoRmlu
YWxTdGF0ZTsKLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIEJsb2NrUHRy
PHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCAqKT4gX3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0
aG9kVXBkYXRlICopPiBfZGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247Ci0gICAgQmxv
Y2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKik+IF9kaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1l
bnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICopPiBfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0Q29tcGxldGlvbjsKLSNlbHNlCi0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzKT4gX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0
cjx2b2lkKE5TQXJyYXkgKik+IF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKLSAg
ICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXkgKik+
IF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBOU0FycmF5ICosIE5TQXJyYXkgKik+IF9kaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uOwotI2VuZGlmCi19Cit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKXdlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OwotCi0tICh2b2lkKWludmFsaWRhdGU7Ci0KLUBlbmQKLQotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLm1tCmluZGV4IGFjZWY5ODRkYzA5OWQ0YTE0YjkxMDczOTlhYjIzYThjZTU5YTlmN2Iu
Ljg1MDA5NTBlNjE0YWExNmM5MWI5OGU4NmI3NmFjYTQ0ZTBjYjJkMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKIAorI2ltcG9ydCAiV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVn
YXRlLmgiCiAjaW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgotI2ltcG9ydCAi
V2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPHBh
bC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KQEAgLTM3LDIwMiArMzcsNiBAQAogI2ltcG9ydCA8
d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9VUkwuaD4KIAotI2lmIEhBVkUoUEFTU0tJVF9H
UkFOVUxBUl9FUlJPUlMpCi1TT0ZUX0xJTktfRlJBTUVXT1JLKENvbnRhY3RzKQotU09GVF9MSU5L
X0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdHJlZXRLZXksIE5TU3RyaW5nICop
OwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdWJMb2NhbGl0
eUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFs
QWRkcmVzc0NpdHlLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3Rz
LCBDTlBvc3RhbEFkZHJlc3NTdWJBZG1pbmlzdHJhdGl2ZUFyZWFLZXksIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNT
dHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bv
c3RhbENvZGVLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFO
VChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3RyaW5nICop
OwotU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFzc0tpdCwgUEtQYXltZW50RXJyb3JEb21haW4s
IE5TU3RyaW5nICopOwotI2VuZGlmCi0KLUBpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTooV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eSYpd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICBfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkgPSAmd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0KLSAgICByZXR1cm4g
c2VsZjsKLX0KLQotLSAodm9pZClpbnZhbGlkYXRlCi17Ci0gICAgX3dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5ID0gbnVsbHB0cjsKLSAgICBpZiAoX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlv
bikgewotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgICAgIF9wYXltZW50
QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6
YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSkuZ2V0KCkpOwotI2Vsc2UKLSAgICAgICAgX3Bh
eW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFp
bHVyZSk7Ci0jZW5kaWYKLSAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbiA9IG51
bGxwdHI7Ci0gICAgfQotfQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
d2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci19Ci0KLS0gKHZvaWQpcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOih2b2lk
KF4pKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAqLCBOU0Vycm9yICopKXNlc3Npb25CbG9jawot
ewotICAgIEFTU0VSVCghX3Nlc3Npb25CbG9jayk7Ci0gICAgX3Nlc3Npb25CbG9jayA9IHNlc3Np
b25CbG9jazsKLQotICAgIFtQQUw6OmdldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAqbWVyY2hhbnRV
UkwsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIExP
R19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWlu
IGVycm9yICVAIiwgZXJyb3IpOwotCi0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAgICBBU1NFUlQoX3Nlc3Npb25CbG9jayk7Ci0K
LSAgICAgICAgICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
ICAgICAgICAgX3Nlc3Npb25CbG9jayhudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIF93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+dmFsaWRhdGVNZXJjaGFudChtZXJjaGFudFVSTCk7Ci0gICAgICAgIH0pOwot
ICAgIH1dOwotfQotCi1zdGF0aWMgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hp
cHBpbmdNZXRob2QpCi17Ci0gICAgQVNTRVJUKHNoaXBwaW5nTWV0aG9kKTsKLQotICAgIFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7
Ci0gICAgcmVzdWx0LmxhYmVsID0gc2hpcHBpbmdNZXRob2QubGFiZWw7Ci0gICAgcmVzdWx0LmRl
dGFpbCA9IHNoaXBwaW5nTWV0aG9kLmRldGFpbDsKLSAgICByZXN1bHQuYW1vdW50ID0gc2hpcHBp
bmdNZXRob2QuYW1vdW50LnN0cmluZ1ZhbHVlOwotICAgIHJlc3VsdC5pZGVudGlmaWVyID0gc2hp
cHBpbmdNZXRob2QuaWRlbnRpZmllcjsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiBI
QVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAq
KWNvbnRyb2xsZXIgZGlkQXV0aG9yaXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBoYW5k
bGVyOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0ICpyZXN1bHQpKWNvbXBs
ZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAg
ICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
RmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVCghX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbik7Ci0gICAgX3BheW1lbnRB
dXRob3JpemVkQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0KLSAgICBfd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHktPmRpZEF1dGhvcml6ZVBheW1lbnQoV2ViQ29yZTo6UGF5bWVudChwYXltZW50
KSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQ
YXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGhhbmRsZXI6KHZv
aWQgKF4pKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBs
ZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAg
ICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1l
dGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5n
ZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uID0gY29tcGxldGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRp
ZFNlbGVjdFBheW1lbnRNZXRob2QoV2ViQ29yZTo6UGF5bWVudE1ldGhvZChwYXltZW50TWV0aG9k
KSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RT
aGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRsZXI6
KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlKSlj
b21wbGV0aW9uIHsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAg
ICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBd
XSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHktPmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRo
b2QpKTsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBoYW5kbGVyOih2b2lkICheKShQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24K
LXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21w
bGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9yczpAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6
QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24pOwot
ICAgIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAg
ICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChX
ZWJDb3JlOjpQYXltZW50Q29udGFjdChjb250YWN0KSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgIUhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGNvbXBs
ZXRpb246KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpKWNvbXBsZXRpb24K
LXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21w
bGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbik7
Ci0gICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0KLSAgICBf
d2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZEF1dGhvcml6ZVBheW1lbnQoV2ViQ29yZTo6
UGF5bWVudChwYXltZW50KSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJv
bGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5n
TWV0aG9kIGNvbXBsZXRpb246KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMg
c3RhdHVzLCBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNv
bXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAg
ICAgICBjb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlLCBAWyBd
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kQ29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxl
dGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRT
ZWxlY3RTaGlwcGluZ01ldGhvZCh0b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7Ci19
Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQYXltZW50
TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KHZvaWQg
KF4pKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxl
dGlvbgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAg
IGNvbXBsZXRpb24oQFsgXSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQo
IV9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eS0+ZGlkU2VsZWN0UGF5bWVudE1ldGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9k
KHBheW1lbnRNZXRob2QpKTsKLX0KLQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9s
bGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0
aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgTlNBcnJh
eTxQS1NoaXBwaW5nTWV0aG9kICo+ICpzaGlwcGluZ01ldGhvZHMsIE5TQXJyYXk8UEtQYXltZW50
U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxldGlvbgotewotICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsIEBbIF0sIEBbIF0pOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlv
bik7Ci0gICAgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9u
OwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0KFdlYkNvcmU6OlBheW1lbnRDb250YWN0KGNvbnRhY3QpKTsKLX0KLQotI2VuZGlmCi0KLS0g
KHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRpZEZpbmlzaDooUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlcgotewotICAgIGlmICgh
X3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAo
IV9kaWRSZWFjaEZpbmFsU3RhdGUpCi0gICAgICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS0+ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eS0+aGlkZVBheW1lbnRVSSgpOwotfQotCi1AZW5kCi0KIC8vIEZJWE1FOiBPbmNlIHJk
YXI6Ly9wcm9ibGVtLzI0NDIwMDI0IGhhcyBiZWVuIGZpeGVkLCBpbXBvcnQgUEtQYXltZW50UmVx
dWVzdF9Qcml2YXRlLmggaW5zdGVhZC4KIEBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQog
QHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikgTlNVUkwgKm9yaWdpbmF0aW5nVVJMOwpAQCAt
MzIyLDcgKzEyNiw3IEBAIHN0YXRpYyBQS0FkZHJlc3NGaWVsZCB0b1BLQWRkcmVzc0ZpZWxkKGNv
bnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1CiB9CiAjZW5kaWYKIAotc3Rh
dGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlw
ZSkKK1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShX
ZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6VHlwZTo6RmluYWw6CkBAIC0zMzMsMjggKzEz
NywyOCBAQCBzdGF0aWMgUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFy
eUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2VzcwogICAgIH0KIH0KIAotc3RhdGljIE5TRGVj
aW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQorTlNEZWNp
bWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCiB7CiAgICAg
aWYgKCFhbW91bnQpCiAgICAgICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIHplcm9dOwogICAg
IHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBs
b2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFsU2VwYXJhdG9yIDogQCIuIiB9XTsKIH0KIAotc3RhdGlj
IFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShj
b25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxp
bmVJdGVtKQorUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5l
SXRlbSkKIHsKICAgICByZXR1cm4gW1BBTDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygp
IHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1i
ZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJ
dGVtLnR5cGUpXTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGluZUl0ZW1zKQorTlNBcnJheSAqdG9QS1BheW1l
bnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFuZExpbmVJdGVtcykKIHsKLSAgICBhdXRvIHBh
eW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKKyAgICBOU011dGFibGVBcnJheSAqcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtOU011dGFibGVB
cnJheSBhcnJheVdpdGhDYXBhY2l0eTp0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMuc2l6ZSgp
ICsgMV07CiAgICAgZm9yIChhdXRvJiBsaW5lSXRlbSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJ
dGVtcykgewotICAgICAgICBpZiAoYXV0byBzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFy
eUl0ZW0obGluZUl0ZW0pKQotICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2Jq
ZWN0OnN1bW1hcnlJdGVtLmdldCgpXTsKKyAgICAgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVt
ICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQorICAgICAg
ICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtXTsKICAgICB9
CiAKLSAgICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHRvdGFs
QW5kTGluZUl0ZW1zLnRvdGFsKSkKLSAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2Jq
ZWN0OnRvdGFsSXRlbS5nZXQoKV07CisgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3Rh
bEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKSkK
KyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFsSXRlbV07CiAKICAg
ICByZXR1cm4gcGF5bWVudFN1bW1hcnlJdGVtczsKIH0KQEAgLTM5OSw5ICsyMDMsOSBAQCBzdGF0
aWMgUEtTaGlwcGluZ1R5cGUgdG9QS1NoaXBwaW5nVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6UwogICAgIH0KIH0KIAotc3RhdGljIFJldGFpblB0cjxQS1NoaXBw
aW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNz
aW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKK1BLU2hp
cHBpbmdNZXRob2QgKnRvUEtTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNl
c3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQogewot
ICAgIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiByZXN1bHQgPSBbUEFMOjpnZXRQS1NoaXBw
aW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5sYWJl
bCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOworICAgIFBL
U2hpcHBpbmdNZXRob2QgKnJlc3VsdCA9IFtQQUw6OmdldFBLU2hpcHBpbmdNZXRob2RDbGFzcygp
IHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2lt
YWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50KV07CiAgICAgW3Jlc3VsdCBzZXRJZGVudGlm
aWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJdOwogICAgIFtyZXN1bHQgc2V0RGV0YWlsOnNo
aXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTQ3MCwxNyArMjc0LDE3IEBAIFJldGFpblB0cjxQ
S1BheW1lbnRSZXF1ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXlt
ZW50UmVxdWVzdChjCiAKICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kcyA9IGFkb3B0TlMoW1tOU011
dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAgIGZvciAoYXV0byYgc2hpcHBpbmdNZXRob2Qg
OiBwYXltZW50UmVxdWVzdC5zaGlwcGluZ01ldGhvZHMoKSkKLSAgICAgICAgW3NoaXBwaW5nTWV0
aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKS5nZXQoKV07
CisgICAgICAgIFtzaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChz
aGlwcGluZ01ldGhvZCldOwogICAgIFtyZXN1bHQgc2V0U2hpcHBpbmdNZXRob2RzOnNoaXBwaW5n
TWV0aG9kcy5nZXQoKV07CiAKICAgICBhdXRvIHBheW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9wdE5T
KFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKICAgICBmb3IgKGF1dG8mIGxpbmVJdGVt
IDogcGF5bWVudFJlcXVlc3QubGluZUl0ZW1zKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3VtbWFy
eUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtw
YXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbS5nZXQoKV07CisgICAgICAg
IGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1h
cnlJdGVtKGxpbmVJdGVtKSkKKyAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9i
amVjdDpzdW1tYXJ5SXRlbV07CiAgICAgfQogCi0gICAgaWYgKGF1dG8gdG90YWxJdGVtID0gdG9Q
S1BheW1lbnRTdW1tYXJ5SXRlbShwYXltZW50UmVxdWVzdC50b3RhbCgpKSkKLSAgICAgICAgW3Bh
eW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFsSXRlbS5nZXQoKV07CisgICAgaWYgKFBL
UGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHBh
eW1lbnRSZXF1ZXN0LnRvdGFsKCkpKQorICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRP
YmplY3Q6dG90YWxJdGVtXTsKIAogICAgIFtyZXN1bHQgc2V0UGF5bWVudFN1bW1hcnlJdGVtczpw
YXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXTsKIApAQCAtNTEzLDI3OCArMzE3LDI5IEBAIFJldGFp
blB0cjxQS1BheW1lbnRSZXF1ZXN0PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1QYXltZW50UmVxdWVzdChjCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmIEhBVkUoUEFT
U0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1zdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMgc3RhdHVzKQotewotICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgY2FzZSBX
ZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6U3VjY2VzczoKLSAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwotICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLSAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5SZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5SZXF1aXJlZDsKLSAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5JbmNvcnJlY3Q6Ci0gICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOSW5jb3JyZWN0OwotICAgIGNhc2UgV2Vi
Q29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6Ci0gICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOTG9ja291dDsKLSAgICB9Ci19Ci0K
LXN0YXRpYyBQS1BheW1lbnRFcnJvckNvZGUgdG9QS1BheW1lbnRFcnJvckNvZGUoV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlIGNvZGUpCi17Ci0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRVbmtub3duRXJyb3I7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlw
cGluZ0NvbnRhY3RJbnZhbGlkRXJyb3I7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJp
bGxpbmdDb250YWN0SW52YWxpZEVycm9yOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNo
aXBwaW5nQWRkcmVzc1Vuc2VydmljZWFibGVFcnJvcjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBSZXRh
aW5QdHI8TlNFcnJvcj4gdG9OU0Vycm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJy
b3IpCi17Ci0gICAgYXV0byB1c2VySW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5
IGFsbG9jXSBpbml0XSk7Ci0gICAgW3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZv
cktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5XTsKLQotICAgIGlmIChlcnJvci5jb250YWN0
RmllbGQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOwotICAgICAg
ICBOU1N0cmluZyAqcG9zdGFsQWRkcmVzc0tleSA9IG5pbDsKLQotICAgICAgICBzd2l0Y2ggKCpl
cnJvci5jb250YWN0RmllbGQpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQaG9uZU51bWJlcigpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RG
aWVsZDo6RW1haWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6Omdl
dF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpO
YW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkTmFtZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1lOgotICAgICAgICAg
ICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0
aWNOYW1lKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzOgotICAgICAgICAgICAgcGtD
b250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRkcmVzc0xpbmVzOgotICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwot
ICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtl
eSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6Ci0gICAgICAgICAgICBwa0NvbnRhY3RG
aWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0g
ICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxp
dHlLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwot
ICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlLZXko
KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVy
cm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVs
ZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAg
ICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtl
eSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVz
c1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRp
dmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tl
eSA9IGdldENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5
OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdl
dENOUG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnlDb2Rl
OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFj
dEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdl
dENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotCi0gICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQg
Zm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5m
b0tleSgpXTsKLSAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCi0gICAgICAgICAgICBbdXNl
ckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRf
UEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07Ci0gICAgfQotCi0gICAg
cmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpnZXRQS1BheW1l
bnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1lbnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNl
ckluZm86dXNlckluZm8uZ2V0KCldKTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0
b05TRXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCi17
Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgZXJyb3IgOiBlcnJvcnMpIHsKLSAgICAgICAgaWYg
KGF1dG8gbnNFcnJvciA9IHRvTlNFcnJvcihlcnJvcikpCi0gICAgICAgICAgICBbcmVzdWx0IGFk
ZE9iamVjdDpuc0Vycm9yLmdldCgpXTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
I2Vsc2UKLXN0YXRpYyBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyhjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblJlc3VsdD4mIHJlc3VsdCkKLXsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJu
IFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNjZXNzOwotCi0gICAgaWYgKHJlc3VsdC0+
ZXJyb3JzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgIGF1dG8mIGVycm9yID0gcmVzdWx0LT5lcnJv
cnNbMF07Ci0gICAgICAgIHN3aXRjaCAoZXJyb3IuY29kZSkgewotICAgICAgICBjYXNlIFdlYkNv
cmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6VW5rbm93bjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQ
YXltZW50RXJyb3I6OkNvZGU6OkFkZHJlc3NVbnNlcnZpY2VhYmxlOgotICAgICAgICAgICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotCi0gICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAg
ICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5n
UG9zdGFsQWRkcmVzczsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6U2hpcHBpbmdDb250YWN0SW52YWxpZDoKLSAgICAgICAgICAgIGlmIChlcnJvci5jb250YWN0
RmllbGQgJiYgZXJyb3IuY29udGFjdEZpZWxkID09IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29u
dGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzKQotICAgICAgICAgICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczsKLQotICAg
ICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBp
bmdDb250YWN0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3dpdGNoIChyZXN1bHQtPnN0YXR1
cykgewotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nl
c3M6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsK
LSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgot
ICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0
OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVj
dDsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nr
b3V0OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tv
dXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWls
dXJlOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRm
b3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRSZWFjaEZpbmFsU3RhdGUgPSBXZWJDb3JlOjpp
c0ZpbmFsU3RhdGVSZXN1bHQocmVzdWx0KTsKLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9F
UlJPUlMpCi0gICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyByZXN1bHQtPnN0YXR1cyA6IFdlYkNv
cmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOwotICAgIGF1dG8gcGtQYXlt
ZW50QXV0aG9yaXphdGlvblJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRo
b3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMoc3RhdHVzKSBlcnJvcnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQt
PmVycm9ycykuZ2V0KCkgOiBAWyBdXSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24ocGtQYXltZW50
QXV0aG9yaXphdGlvblJlc3VsdC5nZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9u
KHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpKTsKLSNlbmRpZgotICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhv
cml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIt
PmNvbXBsZXRlUGF5bWVudFNlc3Npb24ocmVzdWx0KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBX
ZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQog
ewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAg
IEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0K
LSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Nlc3Np
b25CbG9jayhwYXltZW50TWVyY2hhbnRTZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigp
LCBudWxscHRyKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3Nlc3Npb25CbG9jayA9IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2Vu
dGVyLT5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihwYXltZW50TWVyY2hhbnRTZXNzaW9uKTsK
IH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAodXBkYXRlKQotICAgICAgICBtX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMg
PSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsK
LQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBwa1NoaXBwaW5n
TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGlu
Z01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJ
dGVtcy5nZXQoKV0pOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKHBrU2hpcHBpbmdNZXRo
b2RVcGRhdGUuZ2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzcywgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKLSNlbmRp
ZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlk
U2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6
YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsK
IH0KIAotI2lmICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotc3RhdGljIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKLXsKLSAg
ICBpZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLQotICAgIGlmICh1cGRhdGUt
PmVycm9ycy5zaXplKCkgPT0gMSkgewotICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJy
b3JzWzBdOwotICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKLSAgICAgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLQotICAgICAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgotICAg
ICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGlu
Z1Bvc3RhbEFkZHJlc3M7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICBpZiAoZXJyb3IuY29udGFj
dEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAg
ICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBw
aW5nQ29udGFjdDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKIHsK
LSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBB
U1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0g
ICAgaWYgKHVwZGF0ZSkgewotICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsKLQotICAgICAgICBhdXRvIHNoaXBw
aW5nTWV0aG9kcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAg
ICAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogdXBkYXRlLT5uZXdTaGlwcGluZ01ldGhv
ZHMpCi0gICAgICAgICAgICBbc2hpcHBpbmdNZXRob2RzIGFkZE9iamVjdDp0b1BLU2hpcHBpbmdN
ZXRob2Qoc2hpcHBpbmdNZXRob2QpLmdldCgpXTsKLQotICAgICAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcyA9IFdURk1vdmUo
c2hpcHBpbmdNZXRob2RzKTsKLSAgICB9Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJS
T1JTKQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFs
bG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhFcnJvcnM6dXBkYXRlID8gdG9OU0Vycm9ycyh1cGRhdGUtPmVycm9ycykuZ2V0KCkgOiBAWyBd
IHBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczptX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9k
cy5nZXQoKV0pOwotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbihwa1NoaXBwaW5nQ29udGFj
dFVwZGF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbih0b1BL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXModXBkYXRlKSwgbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCksIG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVt
cy5nZXQoKSk7Ci0jZW5kaWYKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBudWxscHRy
OworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRlci0+Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RT
ZWxlY3Rpb24odXBkYXRlKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT4mIHVwZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAgaWYgKHVwZGF0ZSkKLSAg
ICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXlt
ZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3Rh
bEFuZExpbmVJdGVtcyk7Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAg
IGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVu
dFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1t
YXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9w
YXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbihw
a1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5
bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7Ci0jZW5kaWYKLSAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0
aW9uID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5
bWVudE1ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1BdmFpbGFibGVQYXltZW50TmV0d29ya3MoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9z
L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tCmluZGV4IDQzMjM1MjcwMjk5ODAzYTFk
ZmEwYWRkODBhY2UwMzExMGQ5ODNkMWEuLjUwYzAxMjEyYmE3YThmYjhkMGY5MWY5ZjFmYTZhZDY4
YmYzNWZkZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9X
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTI5LDgg
KzI5LDggQEAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVBQTEVfUEFZKQog
CiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgogI2ltcG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CiAj
aW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CkBAIC00MCw0NyArNDAsMTcgQEAgbmFtZXNwYWNlIFdl
YktpdCB7CiAKIHZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1Bh
eW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlu
a0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVx
dWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKLSAgICBVSVZpZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIgPSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIo
KnRoaXMpOwotCi0gICAgaWYgKCFwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
QVNTRVJUKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotCiAgICAgYXV0
byBwYXltZW50UmVxdWVzdCA9IHBsYXRmb3JtUGF5bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkws
IGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnBheW1l
bnRSZXF1ZXN0LmdldCgpXSk7Ci0gICAgaWYgKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KnRoaXNdKTsK
LSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMgPSBbcGF5bWVudFJlcXVlc3QgcGF5bWVudFN1bW1hcnlJdGVtc107Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGlu
Z01ldGhvZHMgPSBbcGF5bWVudFJlcXVlc3Qgc2hpcHBpbmdNZXRob2RzXTsKLQotICAgIFttX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotICAgIFttX3BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKLQotICAgIFtwcmVzZW50
aW5nVmlld0NvbnRyb2xsZXIgcHJlc2VudFZpZXdDb250cm9sbGVyOm1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlvbjpudWxscHRy
XTsKLQotICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUpOworICAgIEFTU0VSVCghbV9hdXRob3Jp
emF0aW9uUHJlc2VudGVyKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBtX2NsaWVu
dC5wYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKCp0aGlzLCBwYXltZW50
UmVxdWVzdC5nZXQoKSk7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5wcmVzZW50KG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6aGlkZVBheW1lbnRVSSgpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIFtbbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250
cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07Ci0gICAgW21fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFttX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm5pbF07Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyID0gbnVsbHB0cjsKLQotICAg
IFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRl
XTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IG51
bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5kaXNtaXNzKCk7CisgICAgbV9h
dXRob3JpemF0aW9uUHJlc2VudGVyID0gbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGJkMjU2NGM0M2NjODI2NzViM2Y5MGY3YWYzNTI4YzAy
NmJiYWU1ZjQuLjZjY2Y5YzNiMTk2ZWU0Y2M3ZTE2OTg1ZjQ1MGM0YzQ4ZDY2NzQxZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lm
IFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2ltcG9ydCAiUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0j
aW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1wb3J0IDxwYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIApAQCAt
NjQsMTIgKzY0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1T
aG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NFUlQo
dmlld0NvbnRyb2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQ
YXltZW50Q29vcmRpbmF0b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHldKTsKLSAgICAg
ICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtwYXltZW50UmVxdWVzdCBw
YXltZW50U3VtbWFyeUl0ZW1zXTsKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRo
b2RzID0gW3BheW1lbnRSZXF1ZXN0IHNoaXBwaW5nTWV0aG9kc107Ci0gICAgICAgIHBheW1lbnRD
b29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSB2
aWV3Q29udHJvbGxlcjsKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6cGF5bWVudENvb3JkaW5h
dG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdl
dCgpXTsKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOnBheW1lbnRDb29yZGluYXRv
clByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQo
KV07CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdD
b250cm9sbGVyKTsKIAogICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5t
X3NoZWV0V2luZG93KTsKICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRX
aW5kb3cgPSBbTlNXaW5kb3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29u
dHJvbGxlcl07CkBAIC05MCwyNiArODUsMjAgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6aGlkZVBheW1lbnRVSSgpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRp
bmcpIHsKICAgICAgICAgKyttX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKIAotICAgICAgICBB
U1NFUlQoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgICAgIEFT
U0VSVCghbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAg
ICAgICBBU1NFUlQoIW1fYXV0aG9yaXphdGlvblByZXNlbnRlcik7CiAgICAgICAgIEFTU0VSVCgh
bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAgIEFTU0VSVChtX2F1dGhv
cml6YXRpb25QcmVzZW50ZXIpOwogICAgIEFTU0VSVChtX3NoZWV0V2luZG93KTsKIAogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zaGVl
dFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyLmdldCgpXTsKICAgICBtX3NoZWV0V2luZG93V2lsbENs
b3NlT2JzZXJ2ZXIgPSBudWxscHRyOwogCiAgICAgW1ttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50
XSBlbmRTaGVldDptX3NoZWV0V2luZG93LmdldCgpXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsK
KyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6
YXRpb25QcmVzZW50ZXIgPSBudWxscHRyOwogCiAgICAgbV9zaGVldFdpbmRvdyA9IG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjczMWViMjlhNzgzNGJkMGJhNDk5MDYzNTA5
OTZlYjU0NGY1ZjlhZi4uYTczMGE1NWQxM2FhNzEzNGY2N2JjNTNiZDlkMTkwYTVhNWFlMjAwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDggKzY1LDExIEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVz
LmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllci5jcHAKIAorUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIubW0KK1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0v
Y29jb2EvV0tDcmFzaFJlcG9ydGVyLm1tCitQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUubW0KIFBsYXRmb3JtL2NvY29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8t
dW5pZnkKIAogUGxhdGZvcm0vZm91bmRhdGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAyMTU1ZDE0MmU0NGZiYTU0NDU4YmM3
MWY1MzkxYmU2ZTA5YjRlODAzLi40NDgzYjNiMjk2NTNkZmRlMTQ1ZTQ4YjE0MWI5Mjg3MzcyZTUx
ZDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk4Niw2ICsx
OTg2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29v
cmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JiwgUEtQYXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpICYmIFBMQVRGT1JNKE1BQykKICAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJl
c2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
NmQxODVmZGYwOTczZDhiZTJhM2I0YjZkNTM3ZjUwZDg0ZTU4NjhkOC4uMDk1YWJlNzcyYjYwOTA5
ZmM5MzZkOTNkMzIzMjZjZjU3Y2IwM2U0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBv
cnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIlByaW50SW5mby5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0xMTg3LDYgKzExODgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQo
UmVmPFcKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JB
dXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50
Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlW
aWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAg
IHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTliMDc1Njg1
MGQ3ODBkNDU1YjVlMjcyMTNmNDE0ZjQ0OTQ3NzAxZi4uNzc5NWRkYTE0NzVjYTIwZGJjNDM1ZmJj
OTMyNzFiY2ZhNDNkZTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsNyArMjkzLDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAw
MjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCAqLzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAw
MjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2
MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVB
MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3
OEMxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3
OTYxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
Rjc5MjFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIxRjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTEyODQsNiArMTI4MywxMCBAQAogCQlBMTNEQzY4MjIw
N0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIy
MDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUEx
NUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIw
IC8qIFdLUGFzc3dvcmRWaWV3LmggKi87IH07CiAJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAv
KiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnND
b2NvYS5oICovOyB9OworCQlBMTc5OEIzRTIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5oICovOyB9OworCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAw
MDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJE
IC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIy
MkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJE
NDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJ
QTE4MUE3OTgyMUFDQzc0QjAwNTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5
QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3
QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0
eUlPUy5oICovOyB9OwogCQlBMTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExOUREM0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXJJbnRlcm5hbC5oICovOyB9OwpAQCAtMjIyOCw3ICsyMjMxLDYgQEAKIAkJMUFCMUY3
NzExRDFCMkY3RTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBheW1lbnRDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxRjc3MzFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjFGNzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3RDFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM4NTMsNiArMzg1NSwxMyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAw
MDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tQYXNzd29yZFZpZXcuaDsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1l
bnRDb2RlcnNDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVu
dENvZGVyc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFB
QTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE3OThCM0QyMjJEOTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTE3OThCNDAyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0
NzIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0ODIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJE
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTgxQTc5NzIxQUNBQzYxMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViS2l0QWRkaXRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3
QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUy
NzIsNyArNTI4MSw3IEBACiAJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFC
MzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJ
CQlBMTc5OEI0QjIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5oICovLAogCQkJCTFBQjFGNzc5MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYz
ODksMTAgKzYzOTgsMTYgQEAKIAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIy
MkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJ
CQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIubW0gKi8sCisJCQkJQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLywKKwkJCQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQg
LyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVC
RjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovLAogCQkJCUExODFB
Nzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4
MjIxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIz
MUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcy
MjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAor
CQkJCUExNzk4QjQ4MjIyRTUzMEEwMDA3NjRCRCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTkyNTYsNiArOTI3MSw4IEBACiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJD
QjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDND
ODYwMDgyREY3NyAvKiBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1NzRBNTgxMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExNzk4QjNFMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJE
IC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTYwLDcgKzk1NzcsNyBAQAogCQkJCTdDNDY5
NENBMUE0QjRFQTEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3
QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTFBQjFGNzdFMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3
OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2
NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTg3NCw2ICs5ODkxLDcgQEAKIAkJCQkxQUI4QTFGMjE4NDAwQjYyMDBFOUFFNjkgLyogV0tQYWdl
VUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAv
KiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNUVFREU2MUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3
OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFn
ZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwNDZFQTEyMDc5MjYzMTAw
RjBDNUQ4IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJD
QTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA4
NjgsNiArMTA4ODYsNyBAQAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThF
NjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVC
aXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTEwNTIsNyArMTEwNzEsNiBAQAog
CQkJCTJEODUwOEM2MjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ4NTA4RDgyMTJFMzNFRDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5
OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDg1MDhDNTIxMkUzM0VEMDAwRUY0NkMgLyogVW5p
ZmllZFNvdXJjZTk5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUz
MkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
ODUwOEQyMjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlMTAwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ5MUIxNzFFNzM1
MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363904</attachid>
            <date>2019-03-07 11:32:37 -0800</date>
            <delta_ts>2019-03-07 13:56:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190307113236.patch</filename>
            <type>text/plain</type>
            <size>117204</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi43OTIzYjAxZThiZmM4Y2M1ZjM0ZTg5
OTFhM2UzNDIxOWUwZTlhMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2
MjU1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBNb3ZlZCBzb2Z0LWxpbmtpbmcgb2YgUEtQYXltZW50RXJyb3JEb21haW4gZnJvbSBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSB0byBoZXJlIGFuZCB1c2VkCisgICAgICAgIGEgbW9yZSBkZXNj
cmlwdGl2ZSBwbGF0Zm9ybSBtYWNyby4KKworICAgICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOgorCiAyMDE5
LTAzLTAxICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wcm9wZXIgdXNlIG9mIFBMQVRGT1JNKFRWT1MpIGluIFBBTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwNzRi
ODc3MmYzNTAzOGFlZWRkMjljZTA0ZTNkM2MzNTVkMzkzNTYyLi4zMWFiN2Q2ZWE5YmJjNDhmY2E5
MDkzYTc0OGY0YWRjMmI2NzE1N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOS0w
My0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0FwcGxlIFBh
eV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZyb20gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2MjU1MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBJbnRy
b2R1Y2VkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyIGFuZCBXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUgdG8gZW5jYXBzdWxhdGUKKyAgICAgICAgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyIGFuZCBpdHMgZGVsZWdhdGUuIFRhdWdodCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSB0bworICAgICAgICBpbnRlcmFjdCB3aXRoIFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyIHJhdGhlciB0aGFuIFBLUEFWQyBkaXJlY3RseS4KKworICAgICAgICBUaGVz
ZSBjaGFuZ2VzIHdpbGwgYWxsb3cgdXMgdG8gc3dhcCBvdXQgUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyIHdpdGggUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgaW4g
YSBmb2xsb3ctb24gcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlci5oOiBBZGRlZC4gRGVmaW5lZCB0aGUgYWJzdHJhY3QgaW50ZXJm
YWNlIGZvcgorICAgICAgICBwYXltZW50IGF1dGhvcml6YXRpb24gcHJlc2VudGVycyB0aGF0IHVz
ZSBQS1BBKFYpQy4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cyk6IE1vdmVkIGZyb20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbS4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRFcnJvckNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6dG9OU0Vycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OnRvTlNF
cnJvcnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9QS1NoaXBwaW5nTWV0aG9kcyk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24pOiBBZGRlZC4gSW1wbGVtZW50cyB0aGUKKyAgICAgICAg
bG9naWMgcHJldmlvdXNseSBpbiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6IERpdHRv
IGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKTogRGl0dG8gZm9yIAorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24pOiBEaXR0byBmb3IKKyAgICAgICAgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbi4KKyAgICAgICAgKFdl
YktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24pOiBEaXR0byBmb3IKKyAgICAgICAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbi4KKyAgICAgICAgKiBQ
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmg6IEFkZGVk
LiBEZWZpbmVkIGEgc3ViY2xhc3Mgb2YgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgZm9y
IFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBQbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW5p
dFdpdGhQcmVzZW50ZXI6XSk6IEFkZGVkIGEgUEtQQVZDCisgICAgICAgIGRlbGVnYXRlIHRoYXQn
cyBhIHN1YmNsYXNzIG9mIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS4KKyAgICAgICAg
KC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRpZEZpbmlzaDpdKToKKyAgICAgICAgQ2FsbGVkIC1b
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRGaW5pc2hdLgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxlcjpdKTogQ2Fs
bGVkCisgICAgICAgIC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRBdXRob3Jp
emVQYXltZW50OmNvbXBsZXRpb246XS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNv
bXBsZXRpb246XS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKTogQ2FsbGVkCisgICAgICAgIC1bV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpd
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRo
b2Q6aGFuZGxlcjpdKTogQ2FsbGVkCisgICAgICAgIC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XS4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjp3aWxsRmluaXNoV2l0aEVycm9yOl0pOgorICAgICAgICBD
YWxsZWQgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX3dpbGxGaW5pc2hXaXRoRXJy
b3I6XS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XS4KKyAgICAgICAgKiBQbGF0Zm9ybS9j
b2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICog
UGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIHN1bW1hcnlJdGVtc10p
OiBBZGRlZCBhIHN1bW1hcnlJdGVtcyBnZXR0ZXIuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZSBzaGlwcGluZ01ldGhvZHNdKTogRGl0dG8gZm9yIHNoaXBwaW5nTWV0
aG9kcy4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uOmVycm9yOl0pOiBDYWxsZWQKKyAgICAgICAgX2RpZFJlcXVlc3RN
ZXJjaGFudFNlc3Npb25Db21wbGV0aW9uIHRoZW4gc2V0IGl0IHRvIG5pbC4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbjpdKTogRGl0dG8gZm9yCisgICAgICAgIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxl
dGlvbi4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
UGF5bWVudFNlc3Npb246ZXJyb3JzOmRpZFJlYWNoRmluYWxTdGF0ZTpdKTogRGl0dG8KKyAgICAg
ICAgZm9yIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbi4KKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
OnN1bW1hcnlJdGVtczpzaGlwcGluZ01ldGhvZHM6ZXJyb3JzOl0pOgorICAgICAgICBEaXR0byBm
b3IgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24uCisgICAgICAgICgtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
Ol0pOiBEaXR0byBmb3IKKyAgICAgICAgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlv
bi4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGludmFsaWRhdGVd
KTogSWYgdGhlcmUncyBhbiBvdXRzdGFuZGluZyBhdXRob3JpemF0aW9uCisgICAgICAgIGNhbGxi
YWNrLCBjYWxsZWQgLWNvbXBsZXRlUGF5bWVudFNlc3Npb246ZXJyb3JzOmRpZFJlYWNoRmluYWxT
dGF0ZTogd2l0aCBhIHN0YXRlIG9mCisgICAgICAgIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNGYWlsdXJlLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2lu
aXRXaXRoUHJlc2VudGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgX2RpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKTogQWRkZWQuIEltcGxlbWVu
dHMgdGhlCisgICAgICAgIGxvZ2ljIHByZXZpb3VzbHkgaW4gV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZSBfZGlkRmluaXNoXSk6IERpdHRvLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6IERpdHRvLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFBheW1l
bnRNZXRob2Q6Y29tcGxldGlvbjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbXBsZXRpb246XSk6
IERpdHRvLgorICAgICAgICAodG9TaGlwcGluZ01ldGhvZCk6IE1vdmVkIGZyb20gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpjb21wbGV0aW9uOl0pOiBBZGRl
ZC4gSW1wbGVtZW50cworICAgICAgICB0aGUgbG9naWMgcHJldmlvdXNseSBpbiBXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlIF93aWxsRmluaXNoV2l0aEVycm9yOl0pOiBEaXR0by4KKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyV2ls
bFZhbGlkYXRlTWVyY2hhbnQpOiBUbyBjb25mb3JtIHRvCisgICAgICAgIFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpDbGllbnQsIHJlbmFtZWQgZnJvbSB2YWxpZGF0ZU1lcmNoYW50Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlk
QXV0aG9yaXplUGF5bWVudCk6IFJlbmFtZWQgZnJvbQorICAgICAgICBkaWRBdXRob3JpemVQYXlt
ZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2Vu
dGVyRGlkRmluaXNoKTogTW92ZWQgbG9naWMgaGVyZSB0aGF0IHByZXZpb3VzbHkKKyAgICAgICAg
ZXhpc3RlZCBpbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogUmVuYW1lZCBmcm9tCisgICAgICAgIGRpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KTogUmVuYW1lZCBmcm9tCisgICAg
ICAgIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QpOiBSZW5h
bWVkIGZyb20KKyAgICAgICAgZGlkU2VsZWN0UGF5bWVudE1ldGhvZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBSZW5hbWVk
IHRvCisgICAgICAgIHByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50LgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0aG9yaXplUGF5bWVudCk6IFJl
bmFtZWQgdG8KKyAgICAgICAgcHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKTogUmVuYW1lZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdCk6IFJlbmFtZWQgdG8KKyAgICAgICAgcHJlc2VudGVyRGlkU2VsZWN0
U2hpcHBpbmdDb250YWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZCk6IFJlbmFtZWQgdG8KKyAgICAgICAgZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaDogQ2hhbmdlZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSB0bwor
ICAgICAgICBzdWJjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50Lgor
ICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLmg6IFJlbW92ZWQgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgaW50ZXJmYWNlIGFuZCBkZWNsYXJlZCBzb21lIGhlbHBlciBmdW5jdGlvbnMKKyAgICAg
ICAgbmVlZGVkIGJ5IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSk6IFJlbW92ZWQgc3Rh
dGljIGtleXdvcmQuCisgICAgICAgIChXZWJLaXQ6OnRvRGVjaW1hbE51bWJlcik6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OnRvUEtTaGlwcGluZ01ldGhvZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6IENoYW5nZWQgdG8g
Y2FsbAorICAgICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Np
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW5pdFdpdGhQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOndpbGxGaW5pc2hXaXRoRXJyb3I6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkUmVxdWVzdE1l
cmNoYW50U2Vzc2lvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKHRvU2hpcHBpbmdNZXRob2QpOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBh
eW1lbnQ6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6aGFuZGxl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2Q6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
OmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyk6IE1vdmVkIHRvIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
Lm1tLgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0Ojp0b05TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9OU0Vy
cm9ycyk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBDaGFuZ2VkIHRvIHByZXNlbnQgYQor
ICAgICAgICBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciByYXRoZXIgdGhhbiBhIFBLUEFW
Qy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXlt
ZW50VUkpOiBDaGFuZ2VkIHRvIGRpc21pc3MgYQorICAgICAgICBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlciByYXRoZXIgdGhhbiBhIFBLUEFWQy4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRlUGF5
bWVudFVJKTogRGl0dG8uCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6IEFkZGVkLiBSZXR1cm5zIGEgbmV3CisgICAg
ICAgIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuCisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDMtMDcgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBMb2cgZmlyc3QtcGFydHkgbmF2aWdhdGlvbnMgd2l0aCBsaW5rIGRlY29yYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0
ODk1NTY1MWQ5Y2MzYjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRk
Y2VmMTI1Zjc3YTE0MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckFuZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWlu
LCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBk
b21haW4sIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQ
YXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlw
ZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAo
Y29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAot
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVz
dFBheW1lbnRNZXRob2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
aG9uZU51bWJlciwgUEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwg
UEtQYXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NV
c2VySW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5tbQppbmRleCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44
NzI5NzNlNGE5NGFmNGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBA
QCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
U2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChD
R0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1Bh
eW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmlu
ZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUs
IGxhbmd1YWdlQ29kZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFT
U0tJVF9HUkFOVUxBUl9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtD
b250YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtD
b250YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlcklu
Zm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFp
biwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNl
ckluZm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lk
LCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxl
dGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4
NjY5ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Q
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRy
b2xsZXI7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0Owor
Y2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xp
ZW50IHsKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGNvbnN0IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgp
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kVXBkYXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2
b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRh
dGU+Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNs
aWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkg
PSAwOworCitwcml2YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUy
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5U
KENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcg
Kik7CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50
cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Q
b3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RB
TlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmlu
ZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRt
aW5pc3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRo
ZXNlIGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMg
c2hvdWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhl
aXIgcGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFS
X0VSUk9SUykKKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cykKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQ
YXltZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29kZSBjb2RlKQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5r
bm93bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0
SW52YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxs
aW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFj
dEludmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRk
cmVzc1Vuc2VydmljZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJl
c3NVbnNlcnZpY2VhYmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vy
cm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2Vy
SW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAg
W3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5XTsKKworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNT
dHJpbmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRk
cmVzc0tleSA9IG5pbDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVO
dW1iZXI6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQaG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1h
aWxBZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpOYW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNO
YW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6QWRkcmVzc0xpbmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAg
ICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXko
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtD
b250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0Np
dHlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxB
ZGRyZXNzUG9zdGFsQ29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRt
aW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAg
ICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9z
dGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFs
QWRkcmVzc1N0YXRlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5Ogor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNv
dW50cnlDb2RlOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVz
c0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250
YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0Rmll
bGRVc2VySW5mb0tleSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0
X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAg
fQorCisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0
X1BLUGF5bWVudEVycm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5j
b2RlKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05T
RXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7Cisg
ICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTplcnJvcnMuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3Jz
KSB7CisgICAgICAgIGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAg
ICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKwor
I2lmICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzU3VjY2VzczsKKworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAg
ICAgICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVy
cm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVu
a25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNz
VW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6
CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVs
ZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFs
aWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAg
ICBpZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUt
PmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJy
b3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAg
ICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGlu
Z1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFj
dEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAg
ICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBw
aW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JB
TlVMQVJfRVJST1JTKQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPiYgc2hpcHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBw
aW5nTWV0aG9kcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01l
dGhvZHMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdN
ZXRob2RzKQorICAgICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGlu
Z01ldGhvZChzaGlwcGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsK
K30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hh
bnRTZXNzaW9uKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0
Zm9ybURlbGVnYXRlKCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9u
LnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQorewor
ICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVt
cyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRM
aW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZv
cm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNd
OworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1l
bnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiYgcmVzdWx0KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0
b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0
ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0
YXR1cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJy
YXkgKmVycm9ycyA9IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBs
ZXRlUGF5bWVudFNlc3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRl
OldlYkNvcmU6OmlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQor
eworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5n
TWV0aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGlu
Z01ldGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0Fy
cmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRh
dGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRl
bXM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJv
cnMgPSB1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0
byBzdGF0dXMgPSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisg
ICAgTlNBcnJheSAqZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdh
dGUoKSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1z
OnN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJv
cnNdOworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwor
ICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0
ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1
bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTNkMzQ3OGFjOTJmYjdhNmZhZWYyNzJhYmY2ZmJmNzU2ZGQyYjQ3YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNf
Q0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQ
S1BheW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGU7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwg
OiBwdWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorICAgIFBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXI6OkNsaWVudCYsIFBLUGF5bWVudFJlcXVlc3QgKiwgUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyICogPSBuaWwpOworCitwcml2YXRlOgorICAgIC8vIFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyCisgICAgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpw
bGF0Zm9ybURlbGVnYXRlKCkgZmluYWw7CisgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAq
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNlbmRpZgorCisgICAg
UmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29u
dHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGU+IG1fZGVsZWdhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZlNjZmMDczYmIxYzY3M2I0OGJkNDVkMDRmN2Y5NDk3NzgxZDZhZGMKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsu
aD4KKworQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSA6IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlclByaXZhdGVEZWxlZ2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVz
dDooUEtQYXltZW50UmVxdWVzdCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyJilwcmVzZW50ZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFJlcXVlc3Q6KFBLUGF5bWVudFJlcXVlc3QgKilyZXF1ZXN0IHBy
ZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVy
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgcHJl
c2VudGVyOnByZXNlbnRlcl0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKyNwcmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
aWRGaW5pc2g6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXIKK3sKKyAgICBbc2VsZiBfZGlkRmluaXNoXTsKK30KKworI2lmIEhBVkUoUEFTU0tJVF9HUkFO
VUxBUl9FUlJPUlMpCisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRB
dXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgoreworICAgIFtz
ZWxmIF9kaWRBdXRob3JpemVQYXltZW50OnBheW1lbnQgY29tcGxldGlvbjpjb21wbGV0aW9uXTsK
K30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9p
ZCAoXikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBs
ZXRpb24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6c2hpcHBpbmdNZXRo
b2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFj
dCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
ICp1cGRhdGUpKWNvbXBsZXRpb24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0OmNvbnRhY3QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1l
dGhvZCAqKXBheW1lbnRNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRT
ZWxlY3RQYXltZW50TWV0aG9kOnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsK
K30KKworI2Vsc2UKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1
dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCheKShQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2Rp
ZEF1dGhvcml6ZVBheW1lbnQ6cGF5bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCist
ICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4p
KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0
ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0Nv
bnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cywgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICosIE5TQXJyYXk8UEtQYXltZW50
U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3Q6Y29udGFjdCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQ
YXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8
UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRT
ZWxlY3RQYXltZW50TWV0aG9kOnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsK
K30KKworI2VuZGlmCisKKyNwcmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZVByaXZhdGUKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIHdpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtzZWxm
IF93aWxsRmluaXNoV2l0aEVycm9yOmVycm9yXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyIGRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKikpY29tcGxldGlvbgoreworICAgIFtzZWxm
IF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOmNvbXBsZXRpb25dOworfQorCitAZW5kCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyOjpDbGllbnQmIGNsaWVudCwgUEtQYXltZW50UmVxdWVzdCAqcmVxdWVzdCwgUEtQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICp2aWV3Q29udHJvbGxlcikKKyAgICA6IFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKGNsaWVudCkKKyAgICAsIG1fdmlld0NvbnRyb2xs
ZXIodmlld0NvbnRyb2xsZXIgPyB2aWV3Q29udHJvbGxlciA6IGFkb3B0TlMoW1BBTDo6YWxsb2NQ
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5
bWVudFJlcXVlc3Q6cmVxdWVzdF0pKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtbV0tQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUmVx
dWVzdDpyZXF1ZXN0IHByZXNlbnRlcjoqdGhpc10pKQoreworICAgIFttX3ZpZXdDb250cm9sbGVy
IHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFttX3ZpZXdDb250cm9sbGVyIHNl
dFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30KKworV0tQYXltZW50QXV0aG9y
aXphdGlvbkRlbGVnYXRlICpQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpwbGF0
Zm9ybURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKwordm9p
ZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpkaXNtaXNzKCkKK3sKKyNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorICAgIFtbbV92aWV3Q29udHJvbGxlciBwcmVzZW50aW5nVmll
d0NvbnRyb2xsZXJdIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBjb21wbGV0aW9u
Om51bGxwdHJdOworI2VuZGlmCisgICAgW21fdmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bmls
XTsKKyAgICBbbV92aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKKyAgICBt
X3ZpZXdDb250cm9sbGVyID0gbmlsOworICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOworICAg
IG1fZGVsZWdhdGUgPSBuaWw7Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCit2b2lk
IFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OnByZXNlbnQoVUlWaWV3Q29udHJv
bGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghcHJlc2VudGluZ1ZpZXdDb250
cm9sbGVyIHx8ICFtX3ZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhh
bmRsZXIoZmFsc2UpOworCisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmll
d0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMgY29tcGxldGlv
bjpudWxscHRyXTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKworI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFBBU1NLSVQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhvcml6YXRpb25E
ZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTE2YmFhZjhhMmQ3NDcxZDFhMmE4YmIxNGU4
OTU1NjVhZGI1N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9j
b2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaApAQCAtMCwwICsxLDg3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWYgVVNFKFBBU1NLSVQpCisKKyNpbXBvcnQgPHBhbC9zcGkvY29j
b2EvUGFzc0tpdFNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK09CSkNfQ0xBU1Mg
TlNBcnJheTsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgVUlWaWV3Q29udHJvbGxl
cjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyOworCit1c2luZyBEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbiA9IEJs
b2NrUHRyPHZvaWQoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKik+OworCisj
aWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKK3VzaW5nIERpZEF1dGhvcml6ZVBheW1l
bnRDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0
ICopPjsKK3VzaW5nIERpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gQmxvY2tQdHI8
dm9pZChQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqKT47Cit1c2luZyBEaWRT
ZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5n
TWV0aG9kVXBkYXRlICopPjsKKyNlbHNlCit1c2luZyBEaWRBdXRob3JpemVQYXltZW50Q29tcGxl
dGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyk+OwordXNp
bmcgRGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2b2lkKE5TQXJy
YXkgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiA9IEJsb2Nr
UHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqLCBOU0FycmF5
ICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRy
PHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqKT47CisjZW5kaWYK
KworfQorCitAaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA6IE5TT2Jq
ZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZGlkUmVhY2hGaW5hbFN0YXRlOworQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICpz
dW1tYXJ5SXRlbXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TQXJyYXk8UEtT
aGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzOworCistICh2b2lkKWNvbXBsZXRlTWVy
Y2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVycm9y
OihOU0Vycm9yICopZXJyb3I7CistICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlv
bjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsKKy0gKHZv
aWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylz
dGF0dXMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMgZGlkUmVhY2hGaW5hbFN0
YXRlOihCT09MKWRpZFJlYWNoRmluYWxTdGF0ZTsKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0Nv
bnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIHN1bW1h
cnlJdGVtczooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBz
aGlwcGluZ01ldGhvZHM6KE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0
aG9kcyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9yczsKKy0gKHZvaWQpY29tcGxl
dGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAq
PiAqKXN1bW1hcnlJdGVtczsKKy0gKHZvaWQpaW52YWxpZGF0ZTsKKworQGVuZAorCisvLyBIZWxw
ZXIgbWV0aG9kcyBjYWxsZWQgYnkgV0tQYXltZW50QXV0aG9yaXphdGlvblNlc3Npb24ncyBzdWJj
bGFzc2VzCitAaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAoUHJvdGVj
dGVkKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUmVxdWVzdDooUEtQYXltZW50UmVxdWVz
dCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJilwcmVzZW50ZXI7CisKKy0gKHZvaWQpX2RpZEF1dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVu
dCAqKXBheW1lbnQgY29tcGxldGlvbjooV2ViS2l0OjpEaWRBdXRob3JpemVQYXltZW50Q29tcGxl
dGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRGaW5pc2g7CistICh2b2lk
KV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJLaXQ6OkRpZFJlcXVlc3RNZXJjaGFudFNl
c3Npb25Db21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZFNlbGVj
dFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2QgY29tcGxldGlv
bjooV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjo6QmxvY2tUeXBlKWNv
bXBsZXRpb247CistICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBLQ29udGFjdCAq
KWNvbnRhY3QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21w
bGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjooV2Vi
S2l0OjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0
aW9uOworLSAodm9pZClfd2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yOworCitA
ZW5kCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tIGIvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uY2Q0YzU1NGFjNTc4OGIxZDIyNzAyNmZiYTIwNmJiNWVlNjYzMTFkZgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLUGF5bWVudEF1dGhvcml6YXRpb25EZWxl
Z2F0ZS5oIgorCisjaWYgVVNFKFBBU1NLSVQpCisKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50TWV0aG9kLmg+CisKK0BpbXBsZW1lbnRhdGlvbiBX
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgeworICAgIFJldGFpblB0cjxOU0FycmF5PFBL
UGF5bWVudFN1bW1hcnlJdGVtICo+PiBfc3VtbWFyeUl0ZW1zOworICAgIFJldGFpblB0cjxOU0Fy
cmF5PFBLU2hpcHBpbmdNZXRob2QgKj4+IF9zaGlwcGluZ01ldGhvZHM7CisgICAgV2Vha1B0cjxX
ZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBfcHJlc2VudGVyOworICAgIFdl
YktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gX2RpZEF1dGhvcml6ZVBheW1lbnRD
b21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRp
b24gX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uOworICAgIFdlYktpdDo6RGlk
U2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21w
bGV0aW9uOworICAgIFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbiBf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKKyAgICBXZWJLaXQ6OkRpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uOworfQorCistIChOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3VtbWFyeUl0
ZW1zCit7CisgICAgcmV0dXJuIF9zdW1tYXJ5SXRlbXMuZ2V0KCk7Cit9CisKKy0gKE5TQXJyYXk8
UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kcworeworICAgIHJldHVybiBfc2hp
cHBpbmdNZXRob2RzLmdldCgpOworfQorCistICh2b2lkKWNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVycm9yOihOU0Vycm9yICop
ZXJyb3IKK3sKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29t
cGxldGlvbiwgbmlsKShzZXNzaW9uLCBlcnJvcik7Cit9CisKKy0gKHZvaWQpY29tcGxldGVQYXlt
ZW50TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICopc3Vt
bWFyeUl0ZW1zCit7CisgICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKKyNpZiBIQVZF
KFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIGF1dG8gdXBkYXRlID0gYWRvcHROUyhbUEFM
OjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFuY2UoKSBpbml0
V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pOworICAgIHN0ZDo6
ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5n
ZXQoKSk7CisjZWxzZQorICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRNZXRob2RD
b21wbGV0aW9uLCBuaWwpKF9zdW1tYXJ5SXRlbXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpY29t
cGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cylzdGF0dXMg
ZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRlOihC
T09MKWRpZFJlYWNoRmluYWxTdGF0ZQoreworICAgIF9kaWRSZWFjaEZpbmFsU3RhdGUgPSBkaWRS
ZWFjaEZpbmFsU3RhdGU7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBh
dXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpzdGF0dXMgZXJyb3JzOmVycm9yc10pOworICAg
IHN0ZDo6ZXhjaGFuZ2UoX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLCBuaWwpKHJlc3Vs
dC5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVCghZXJyb3JzLmNvdW50KTsKKyAgICBzdGQ6OmV4
Y2hhbmdlKF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiwgbmlsKShzdGF0dXMpOworI2Vu
ZGlmCit9CisKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIHN1bW1hcnlJdGVtczooTlNBcnJheTxQS1Bh
eW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6KE5TQXJy
YXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kcyBlcnJvcnM6KE5TQXJyYXk8
TlNFcnJvciAqPiAqKWVycm9ycworeworICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1tYXJ5SXRlbXM7
CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IHNoaXBwaW5nTWV0aG9kczsKKyNpZiBIQVZFKFBBU1NL
SVRfR1JBTlVMQVJfRVJST1JTKQorICAgIEFTU0VSVChzdGF0dXMgPT0gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c1N1Y2Nlc3MpOworICAgIGF1dG8gdXBkYXRlID0gYWRvcHROUyhbUEFMOjph
bGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5jZSgpIGluaXRX
aXRoRXJyb3JzOmVycm9ycyBwYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCkg
c2hpcHBpbmdNZXRob2RzOl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBzdGQ6OmV4Y2hh
bmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBuaWwpKHVwZGF0ZS5nZXQo
KSk7CisjZWxzZQorICAgIEFTU0VSVCghZXJyb3JzLmNvdW50KTsKKyAgICBzdGQ6OmV4Y2hhbmdl
KF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBuaWwpKHN0YXR1cywgX3NoaXBw
aW5nTWV0aG9kcywgX3N1bW1hcnlJdGVtcyk7CisjZW5kaWYKK30KKworLSAodm9pZCljb21wbGV0
ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+
ICopc3VtbWFyeUl0ZW1zCit7CisgICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsKKyNp
ZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIGF1dG8gdXBkYXRlID0gYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNl
KCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0KCldKTsKKyAg
ICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb24sIG5pbCko
dXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAgc3RkOjpleGNoYW5nZShfZGlkU2VsZWN0U2hpcHBp
bmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNTdWNj
ZXNzLCBfc3VtbWFyeUl0ZW1zKTsKKyNlbmRpZgorfQorCistICh2b2lkKWludmFsaWRhdGUKK3sK
KyAgICBpZiAoX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uKQorICAgICAgICBbc2VsZiBj
b21wbGV0ZVBheW1lbnRTZXNzaW9uOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJl
IGVycm9yczpAW10gZGlkUmVhY2hGaW5hbFN0YXRlOllFU107Cit9CisKK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAoUHJvdGVjdGVkKQorCist
IChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUmVxdWVzdDooUEtQYXltZW50UmVxdWVzdCAqKXJlcXVl
c3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJilwcmVz
ZW50ZXIKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIF9zdW1tYXJ5SXRlbXMgPSByZXF1ZXN0LnBheW1lbnRTdW1tYXJ5SXRlbXM7
CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IHJlcXVlc3Quc2hpcHBpbmdNZXRob2RzOworICAgIF9w
cmVzZW50ZXIgPSBtYWtlV2Vha1B0cihwcmVzZW50ZXIpOworICAgIHJldHVybiBzZWxmOworfQor
CistICh2b2lkKV9kaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGNvbXBs
ZXRpb246KFdlYktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb246OkJsb2NrVHlwZSlj
b21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24p
OworICAgIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiA9IGNvbXBsZXRpb247CisKKyAg
ICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFwcmVzZW50ZXIp
CisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVBheW1lbnRTZXNzaW9uOlBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdIGRpZFJlYWNoRmluYWxTdGF0ZTpZ
RVNdOworCisgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRBdXRob3JpemVQYXlt
ZW50KCpwcmVzZW50ZXIsIFdlYkNvcmU6OlBheW1lbnQocGF5bWVudCkpOworfQorCistICh2b2lk
KV9kaWRGaW5pc2gKK3sKKyAgICBpZiAoYXV0byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgp
KQorICAgICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRpZEZpbmlzaCgqcHJlc2Vu
dGVyLCBfZGlkUmVhY2hGaW5hbFN0YXRlKTsKK30KKworLSAodm9pZClfZGlkUmVxdWVzdE1lcmNo
YW50U2Vzc2lvbjooV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbjo6
QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRSZXF1ZXN0TWVyY2hhbnRT
ZXNzaW9uQ29tcGxldGlvbik7CisgICAgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0
aW9uID0gY29tcGxldGlvbjsKKworICAgIFtQQUw6OmdldFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAq
bWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAg
ICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVy
QW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOworCisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBBU1NFUlQoX2RpZFJlcXVl
c3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uKTsKKworICAgICAgICAgICAgYXV0byBwcmVzZW50
ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAgICAgICAgICAgaWYgKCFwcmVzZW50ZXIpIHsKKyAg
ICAgICAgICAgICAgICBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRpb24obmlsLCBu
aWwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudCgqcHJl
c2VudGVyLCBtZXJjaGFudFVSTCk7CisgICAgICAgIH0pOworICAgIH1dOworfQorCistICh2b2lk
KV9kaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXltZW50TWV0aG9k
IGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb246OkJs
b2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkU2VsZWN0UGF5bWVudE1ldGhv
ZENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbiA9IGNv
bXBsZXRpb247CisKKyAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAg
aWYgKCFwcmVzZW50ZXIpCisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVBheW1lbnRNZXRo
b2RTZWxlY3Rpb246QFsgXV07CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRp
ZFNlbGVjdFBheW1lbnRNZXRob2QoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudE1ldGhvZChw
YXltZW50TWV0aG9kKSk7Cit9CisKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDoo
UEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFf
ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7CisgICAgX2RpZFNlbGVjdFNoaXBw
aW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBwcmVzZW50ZXIg
PSBfcHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAgICByZXR1cm4g
W3NlbGYgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246UEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1c0ZhaWx1cmUgc3VtbWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdNZXRob2RzOkBbIF0g
ZXJyb3JzOkBbIF1dOworCisgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3QoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudENvbnRhY3QoY29u
dGFjdCkpOworfQorCitzdGF0aWMgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVl
c3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hp
cHBpbmdNZXRob2QpCit7CisgICAgQVNTRVJUKHNoaXBwaW5nTWV0aG9kKTsKKworICAgIFdlYkNv
cmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7
CisgICAgcmVzdWx0LmFtb3VudCA9IHNoaXBwaW5nTWV0aG9kLmFtb3VudC5zdHJpbmdWYWx1ZTsK
KyAgICByZXN1bHQuZGV0YWlsID0gc2hpcHBpbmdNZXRob2QuZGV0YWlsOworICAgIHJlc3VsdC5p
ZGVudGlmaWVyID0gc2hpcHBpbmdNZXRob2QuaWRlbnRpZmllcjsKKyAgICByZXN1bHQubGFiZWwg
PSBzaGlwcGluZ01ldGhvZC5sYWJlbDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKHZv
aWQpX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdN
ZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRp
b246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBp
bmdNZXRob2RDb21wbGV0aW9uKTsKKyAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0
aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNlbnRlci5nZXQo
KTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNvbXBsZXRlU2hp
cHBpbmdNZXRob2RTZWxlY3Rpb246QFsgXV07CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnBy
ZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKCpwcmVzZW50ZXIsIHRvU2hpcHBpbmdNZXRo
b2Qoc2hpcHBpbmdNZXRob2QpKTsKK30KKworLSAodm9pZClfd2lsbEZpbmlzaFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCit7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGI0NzQ1ZTJlYjA4YzZjZTQzMjUxMWU4NTMyYjcy
MWJiODhiMjk1ZWYuLmE2OTVjNjc0NGVjYjljMjM2NzMwN2EyZjViNGZjY2JiN2I4YTdmZGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiAgICAgZGlkUmVh
Y2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZh
bGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYlBheW1lbnRDb29yZGluYXRv
clByb3h5OjpwcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlciYsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChtX21lcmNoYW50VmFs
aWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsKIApAQCAtMjM4
LDEzICsyMzgsMjAgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6dmFsaWRhdGVN
ZXJjaGFudChjb25zdCBVUkwmIHVybCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3I6OlZhbGlkYXRlTWVyY2hhbnQodXJsLnN0cmluZygpKSk7CiB9CiAKLXZvaWQgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgV2ViQ29y
ZTo6UGF5bWVudCYgcGF5bWVudCkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBy
ZXNlbnRlckRpZEF1dGhvcml6ZVBheW1lbnQoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIm
LCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQogewogICAgIG1fc3RhdGUgPSBTdGF0
ZTo6QXV0aG9yaXplZDsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6
OkRpZEF1dGhvcml6ZVBheW1lbnQocGF5bWVudCkpOwogfQogCi12b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9k
KQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlkRmluaXNoKFBh
eW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgYm9vbCBkaWRSZWFjaEZpbmFsU3RhdGUpCit7
CisgICAgaWYgKCFkaWRSZWFjaEZpbmFsU3RhdGUpCisgICAgICAgIGRpZENhbmNlbFBheW1lbnRT
ZXNzaW9uKCk7CisgICAgaGlkZVBheW1lbnRVSSgpOworfQorCit2b2lkIFdlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhvZChQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1l
bnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCiB7CiAgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKQEAgLTI1Miw3ICsyNTksNyBAQCB2b2lkIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBX
ZWJDb3JlOjpBcHBsZVBheQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRDb29yZGluYXRv
cjo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKIH0KIAotdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCit2b2lkIFdlYlBheW1l
bnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoUGF5
bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50Q29udGFj
dCYgc2hpcHBpbmdDb250YWN0KQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpBY3Rp
dmUpOwogCkBAIC0yNjAsNyArMjY3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnQKICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdChzaGlwcGluZ0NvbnRhY3QpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZChjb25zdCBXZWJDb3JlOjpQYXltZW50TWV0aG9k
JiBwYXltZW50TWV0aG9kKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2Vu
dGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYs
IGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7CiAgICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5oCmluZGV4
IGMxOWIxMmJhM2U4MDRiYWZhMjYwMmM4MWNkMGU5MDQ3ZDM0OTNlNTcuLmNhYTVmOTVlY2FjZTZi
ODE4MmI3OGY2YTM5NTcyZDVmOTZlZTllZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTYsMTMgKzU3LDE2IEBAIE9C
SkNfQ0xBU1MgTlNXaW5kb3c7CiBPQkpDX0NMQVNTIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdDsKIE9CSkNfQ0xBU1MgVUlW
aWV3Q29udHJvbGxlcjsKLU9CSkNfQ0xBU1MgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKLWNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0ZSBJUEM6Ok1l
c3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1YmxpYyBDYW5NYWtl
V2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4geworY2xhc3MgV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKKyAgICAs
IHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+CisgICAgLCBwdWJsaWMgUGF5bWVudEF1dGhvcml6
YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENsaWVudCB7CiAg
ICAgICAgIHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTc1LDYgKzc5LDcgQEAgcHVi
bGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHZpcnR1YWwgVUlWaWV3Q29u
dHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9sbGVyKGNvbnN0
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0dWFsIGNvbnN0
IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKGNv
bnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworICAgICAgICB2aXJ0dWFsIHN0
ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gcGF5bWVudENvb3Jk
aW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYs
IFBLUGF5bWVudFJlcXVlc3QgKikgPSAwOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
ICAgICB2aXJ0dWFsIE5TV2luZG93ICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nV2luZG93
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwpAQCAtODUsMTIgKzkwLDYg
QEAgcHVibGljOgogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwogCiAgICAgdm9p
ZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVNZXJjaGFudChj
b25zdCBVUkwmKTsKLSAgICB2b2lkIGRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3QgV2ViQ29yZTo6
UGF5bWVudCYpOwotICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoY29uc3QgV2ViQ29y
ZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kJik7Ci0gICAg
dm9pZCBkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5bWVudENvbnRh
Y3QmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFBheW1lbnRNZXRob2QoY29uc3QgV2ViQ29yZTo6UGF5
bWVudE1ldGhvZCYpOwotCiAgICAgdm9pZCBoaWRlUGF5bWVudFVJKCk7CiAKIHByaXZhdGU6CkBA
IC0xMDEsNiArMTAwLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlU2VuZGVyCiAg
ICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNvbnN0IGZpbmFs
OwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QgZmluYWw7
CisgICAgCisgICAgLy8gUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudAorICAg
IHZvaWQgcHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudChQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHByZXNl
bnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGJvb2wgZGlkUmVh
Y2hGaW5hbFN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRN
ZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kJikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0Nv
bnRhY3QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXlt
ZW50Q29udGFjdCYpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSBmaW5hbDsKKyAgICB2
b2lkIHByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KFBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyJiwgY29uc3QgVVJMJikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAg
ICAgdm9pZCBhdmFpbGFibGVQYXltZW50TmV0d29ya3MoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8U3RyaW5nPiYmKT4mJik7CkBAIC0xNzMsOCArMTgwLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgVmFsaWRhdGlvbkNvbXBsZXRlCiAgICAgfSBtX21lcmNoYW50VmFsaWRhdGlvblN0YXRlIHsg
TWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUgfTsKIAotICAgIFJldGFpblB0cjxQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjsKLSAgICBSZXRhaW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGU+IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4g
bV9hdXRob3JpemF0aW9uUHJlc2VudGVyOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHVpbnQ2
NF90IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IGZiYmVlYWQzNzI2M2QyN2M3ZDMzYTA1YmI3Njk1
ODNmMjVkZjYxNTEuLjRlOTQyYjk2OGE0MzllNjM0YmY4YWU3YjkyNjNjYTYyNGIzODY4MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTI3LDM3ICsyNywx
OCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCAiV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHkuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBv
cnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgotI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CiAKLUBpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUgOiBOU09iamVjdCA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVEZWxlZ2F0ZT4g
ewotQHBhY2thZ2UKLSAgICBXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5KiBfd2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+IF9wYXltZW50
U3VtbWFyeUl0ZW1zOwotICAgIFJldGFpblB0cjxOU0FycmF5PiBfc2hpcHBpbmdNZXRob2RzOwor
bmFtZXNwYWNlIFdlYktpdCB7CiAKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbiAqLCBOU0Vycm9yICopPiBfc2Vzc2lvbkJsb2NrOworLy8gRklYTUU6IFJhdGhlciB0
aGFuIGhhdmluZyB0aGVzZSBmcmVlIGZ1bmN0aW9ucyBzY2F0dGVyZWQgYWJvdXQsIEFwcGxlIFBh
eSBkYXRhIHR5cGVzIHNob3VsZCBrbm93CisvLyBob3cgdG8gY29udmVydCB0aGVtc2VsdmVzIHRv
IGFuZCBmcm9tIHRoZWlyIHBsYXRmb3JtIHJlcHJlc2VudGF0aW9ucy4KK05TQXJyYXkgKnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRS
ZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOworTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxO
dW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpOworUEtQYXltZW50U3VtbWFyeUl0ZW0gKnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtJik7CitQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9QS1BheW1lbnRT
dW1tYXJ5SXRlbVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6Okxp
bmVJdGVtOjpUeXBlKTsKK1BLU2hpcHBpbmdNZXRob2QgKnRvUEtTaGlwcGluZ01ldGhvZChjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2Qm
KTsKIAotICAgIEJPT0wgX2RpZFJlYWNoRmluYWxTdGF0ZTsKLSNpZiBIQVZFKFBBU1NLSVRfR1JB
TlVMQVJfRVJST1JTKQotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblJl
c3VsdCAqKT4gX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lk
KFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICopPiBfZGlkU2VsZWN0UGF5bWVu
dE1ldGhvZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0U2hp
cHBpbmdNZXRob2RVcGRhdGUgKik+IF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb247
Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
ICopPiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKLSNlbHNlCi0gICAgQmxv
Y2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKT4gX3BheW1lbnRBdXRob3Jp
emVkQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKE5TQXJyYXkgKik+IF9kaWRTZWxlY3RQ
YXltZW50TWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMsIE5TQXJyYXkgKik+IF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBs
ZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLCBO
U0FycmF5ICosIE5TQXJyYXkgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9u
OwotI2VuZGlmCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwotCi0tICh2b2lkKWludmFsaWRh
dGU7Ci0KLUBlbmQKLQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9jb2Nv
YS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGFjZWY5ODRkYzA5OWQ0
YTE0YjkxMDczOTlhYjIzYThjZTU5YTlmN2IuLjg1MDA5NTBlNjE0YWExNmM5MWI5OGU4NmI3NmFj
YTQ0ZTBjYjJkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2Nv
Y29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5t
bQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2ltcG9ydCAi
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbXBvcnQgPFdl
YkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGF5
bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsuaD4KQEAg
LTM3LDIwMiArMzcsNiBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBvcnQgPHd0Zi9V
UkwuaD4KIAotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1TT0ZUX0xJTktfRlJB
TUVXT1JLKENvbnRhY3RzKQotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFk
ZHJlc3NTdHJlZXRLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3Rz
LCBDTlBvc3RhbEFkZHJlc3NTdWJMb2NhbGl0eUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktf
Q09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0NpdHlLZXksIE5TU3RyaW5nICopOwot
U09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdWJBZG1pbmlzdHJh
dGl2ZUFyZWFLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktfQ09OU1RBTlQo
Q29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bvc3RhbENvZGVLZXksIE5TU3RyaW5nICopOwotU09G
VF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDb3VudHJ5S2V5LCBOU1N0
cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzSVNP
Q291bnRyeUNvZGVLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKFBBTDo6UGFz
c0tpdCwgUEtQYXltZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwotI2VuZGlmCi0KLUBpbXBs
ZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZQot
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94eTooV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkK
LXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSAmd2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClpbnZhbGlkYXRl
Ci17Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5ID0gbnVsbHB0cjsKLSAgICBpZiAo
X3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbikgewotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxB
Ul9FUlJPUlMpCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24oYWRvcHROUyhb
UEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgpIGluaXRXaXRo
U3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdXSku
Z2V0KCkpOwotI2Vsc2UKLSAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbihQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSk7Ci0jZW5kaWYKLSAgICAgICAgX3BheW1l
bnRBdXRob3JpemVkQ29tcGxldGlvbiA9IG51bGxwdHI7Ci0gICAgfQotfQotCi0tICh2b2lkKXBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgd2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAq
KWVycm9yCi17Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRS
ZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOih2b2lkKF4pKFBLUGF5bWVudE1lcmNoYW50U2Vzc2lvbiAq
LCBOU0Vycm9yICopKXNlc3Npb25CbG9jawotewotICAgIEFTU0VSVCghX3Nlc3Npb25CbG9jayk7
Ci0gICAgX3Nlc3Npb25CbG9jayA9IHNlc3Npb25CbG9jazsKLQotICAgIFtQQUw6OmdldFBLUGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVy
Y2hhbnRVUkw6XihOU1VSTCAqbWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7Ci0gICAgICAg
IGlmIChlcnJvcikKLSAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRo
TWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwotCi0gICAgICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0gICAgICAgICAg
ICBBU1NFUlQoX3Nlc3Npb25CbG9jayk7Ci0KLSAgICAgICAgICAgIGlmICghX3dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgICAgICAgICAgX3Nlc3Npb25CbG9jayhudWxscHRy
LCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+dmFsaWRhdGVNZXJjaGFudCht
ZXJjaGFudFVSTCk7Ci0gICAgICAgIH0pOwotICAgIH1dOwotfQotCi1zdGF0aWMgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdN
ZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hpcHBpbmdNZXRob2QpCi17Ci0gICAgQVNTRVJUKHNo
aXBwaW5nTWV0aG9kKTsKLQotICAgIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1
ZXN0OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7Ci0gICAgcmVzdWx0LmxhYmVsID0gc2hpcHBpbmdN
ZXRob2QubGFiZWw7Ci0gICAgcmVzdWx0LmRldGFpbCA9IHNoaXBwaW5nTWV0aG9kLmRldGFpbDsK
LSAgICByZXN1bHQuYW1vdW50ID0gc2hpcHBpbmdNZXRob2QuYW1vdW50LnN0cmluZ1ZhbHVlOwot
ICAgIHJlc3VsdC5pZGVudGlmaWVyID0gc2hpcHBpbmdNZXRob2QuaWRlbnRpZmllcjsKLQotICAg
IHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQot
Ci0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkQXV0aG9yaXplUGF5bWVu
dDooUEtQYXltZW50ICopcGF5bWVudCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0pLmdldCgpKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX3BheW1lbnRBdXRob3JpemVk
Q29tcGxldGlvbik7Ci0gICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbiA9IGNvbXBsZXRp
b247Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZEF1dGhvcml6ZVBheW1l
bnQoV2ViQ29yZTo6UGF5bWVudChwYXltZW50KSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2Qg
KilwYXltZW50TWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RQYXltZW50
TWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxs
b2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhQ
YXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbik7Ci0gICAg
X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAgICBfd2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFBheW1lbnRNZXRob2QoV2ViQ29yZTo6
UGF5bWVudE1ldGhvZChwYXltZW50TWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlwcGluZ01ldGhv
ZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVlc3RTaGlw
cGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uIHsKLSAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5jZSgpIGluaXRX
aXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKTsK
LSAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAg
ICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKHRv
U2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKLX0KLQotLSAodm9pZClwYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICop
Y29udGFjdCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0
VXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6YWxsb2NQS1Bh
eW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aEVycm9y
czpAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6QFsgXV0pLmdl
dCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RD
b21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkt
PmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChXZWJDb3JlOjpQYXltZW50Q29udGFjdChjb250YWN0
KSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgIUhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0K
LS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRBdXRob3JpemVQYXltZW50
OihQS1BheW1lbnQgKilwYXltZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXMpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNGYWlsdXJlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX3Bh
eW1lbnRBdXRob3JpemVkQ29tcGxldGlvbik7Ci0gICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxl
dGlvbiA9IGNvbXBsZXRpb247Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRp
ZEF1dGhvcml6ZVBheW1lbnQoV2ViQ29yZTo6UGF5bWVudChwYXltZW50KSk7Ci19Ci0KLS0gKHZv
aWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDoo
UEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlLCBAWyBdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbik7Ci0gICAgX2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0gICAgX3dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ01ldGhvZCh0b1NoaXBwaW5n
TWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICop
Y29udHJvbGxlciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXlt
ZW50TWV0aG9kIGNvbXBsZXRpb246KHZvaWQgKF4pKE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0
ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxldGlvbgotewotICAgIGlmICghX3dlYlBheW1lbnRD
b29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oQFsgXSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxl
dGlvbik7Ci0gICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlv
bjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0UGF5bWVudE1l
dGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKLX0KLQotLSAodm9p
ZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDoo
UEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzIHN0YXR1cywgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICpzaGlwcGlu
Z01ldGhvZHMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykp
Y29tcGxldGlvbgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0g
ICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUsIEBb
IF0sIEBbIF0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2Vs
ZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNoaXBwaW5nQ29u
dGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFdlYkNvcmU6OlBheW1lbnRDb250YWN0KGNv
bnRhY3QpKTsKLX0KLQotI2VuZGlmCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRpZEZpbmlzaDooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
ICopY29udHJvbGxlcgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9kaWRSZWFjaEZpbmFsU3RhdGUpCi0gICAgICAg
IF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkQ2FuY2VsUGF5bWVudFNlc3Npb24oKTsK
LQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+aGlkZVBheW1lbnRVSSgpOwotfQot
Ci1AZW5kCi0KIC8vIEZJWE1FOiBPbmNlIHJkYXI6Ly9wcm9ibGVtLzI0NDIwMDI0IGhhcyBiZWVu
IGZpeGVkLCBpbXBvcnQgUEtQYXltZW50UmVxdWVzdF9Qcml2YXRlLmggaW5zdGVhZC4KIEBpbnRl
cmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQogQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
TlNVUkwgKm9yaWdpbmF0aW5nVVJMOwpAQCAtMzIyLDcgKzEyNiw3IEBAIHN0YXRpYyBQS0FkZHJl
c3NGaWVsZCB0b1BLQWRkcmVzc0ZpZWxkKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1CiB9CiAjZW5kaWYKIAotc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0
b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKK1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSB0
b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50
UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICBjYXNlIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpMaW5lSXRlbTo6
VHlwZTo6RmluYWw6CkBAIC0zMzMsMjggKzEzNywyOCBAQCBzdGF0aWMgUEtQYXltZW50U3VtbWFy
eUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFwcGxlUGF5U2Vz
cwogICAgIH0KIH0KIAotc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFsTnVtYmVyKGNv
bnN0IFN0cmluZyYgYW1vdW50KQorTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxOdW1iZXIoY29u
c3QgU3RyaW5nJiBhbW91bnQpCiB7CiAgICAgaWYgKCFhbW91bnQpCiAgICAgICAgIHJldHVybiBb
TlNEZWNpbWFsTnVtYmVyIHplcm9dOwogICAgIHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIGRlY2lt
YWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNpbWFsU2VwYXJh
dG9yIDogQCIuIiB9XTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRTdW1tYXJ5SXRl
bT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQorUEtQYXltZW50U3VtbWFyeUl0ZW0g
KnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRlbSkKIHsKICAgICByZXR1cm4gW1BBTDo6Z2V0
UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOmxpbmVJdGVt
LmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0eXBlOnRvUEtQ
YXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAotc3RhdGljIFJldGFp
blB0cjxOU0FycmF5PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJDb3JlOjpBcHBs
ZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRvdGFsQW5kTGlu
ZUl0ZW1zKQorTlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3QgV2ViQ29yZTo6
QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1zJiB0b3RhbEFu
ZExpbmVJdGVtcykKIHsKLSAgICBhdXRvIHBheW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBOU011dGFibGVBcnJheSAqcGF5bWVu
dFN1bW1hcnlJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp0b3RhbEFu
ZExpbmVJdGVtcy5saW5lSXRlbXMuc2l6ZSgpICsgMV07CiAgICAgZm9yIChhdXRvJiBsaW5lSXRl
bSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcykgewotICAgICAgICBpZiAoYXV0byBzdW1t
YXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAgICAgICAgICAg
W3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtLmdldCgpXTsKKyAgICAg
ICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3Vt
bWFyeUl0ZW0obGluZUl0ZW0pKQorICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRk
T2JqZWN0OnN1bW1hcnlJdGVtXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0b3RhbEl0ZW0gPSB0
b1BLUGF5bWVudFN1bW1hcnlJdGVtKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKSkKLSAgICAgICAg
W3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFsSXRlbS5nZXQoKV07CisgICAgaWYg
KFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVt
KHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKSkKKyAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMg
YWRkT2JqZWN0OnRvdGFsSXRlbV07CiAKICAgICByZXR1cm4gcGF5bWVudFN1bW1hcnlJdGVtczsK
IH0KQEAgLTM5OSw5ICsyMDMsOSBAQCBzdGF0aWMgUEtTaGlwcGluZ1R5cGUgdG9QS1NoaXBwaW5n
VHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6UwogICAgIH0KIH0K
IAotc3RhdGljIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiB0b1BLU2hpcHBpbmdNZXRob2Qo
Y29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0
aG9kJiBzaGlwcGluZ01ldGhvZCkKK1BLU2hpcHBpbmdNZXRob2QgKnRvUEtTaGlwcGluZ01ldGhv
ZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdN
ZXRob2QmIHNoaXBwaW5nTWV0aG9kKQogewotICAgIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9k
PiByZXN1bHQgPSBbUEFMOjpnZXRQS1NoaXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1tYXJ5SXRlbVdp
dGhMYWJlbDpzaGlwcGluZ01ldGhvZC5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVtYmVyKHNoaXBw
aW5nTWV0aG9kLmFtb3VudCldOworICAgIFBLU2hpcHBpbmdNZXRob2QgKnJlc3VsdCA9IFtQQUw6
OmdldFBLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVsOnNoaXBwaW5n
TWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRob2QuYW1vdW50
KV07CiAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlkZW50aWZpZXJd
OwogICAgIFtyZXN1bHQgc2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRldGFpbF07CiAKQEAgLTQ3
MCwxNyArMjc0LDE3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChjCiAKICAgICBhdXRvIHNoaXBw
aW5nTWV0aG9kcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwogICAg
IGZvciAoYXV0byYgc2hpcHBpbmdNZXRob2QgOiBwYXltZW50UmVxdWVzdC5zaGlwcGluZ01ldGhv
ZHMoKSkKLSAgICAgICAgW3NoaXBwaW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1NoaXBwaW5nTWV0
aG9kKHNoaXBwaW5nTWV0aG9kKS5nZXQoKV07CisgICAgICAgIFtzaGlwcGluZ01ldGhvZHMgYWRk
T2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCldOwogICAgIFtyZXN1bHQg
c2V0U2hpcHBpbmdNZXRob2RzOnNoaXBwaW5nTWV0aG9kcy5nZXQoKV07CiAKICAgICBhdXRvIHBh
eW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRd
KTsKICAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogcGF5bWVudFJlcXVlc3QubGluZUl0ZW1zKCkp
IHsKLSAgICAgICAgaWYgKGF1dG8gc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVt
KGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpz
dW1tYXJ5SXRlbS5nZXQoKV07CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5SXRlbSAqc3Vt
bWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAgICAgICAgICAg
IFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CiAgICAgfQogCi0g
ICAgaWYgKGF1dG8gdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShwYXltZW50UmVx
dWVzdC50b3RhbCgpKSkKLSAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRv
dGFsSXRlbS5nZXQoKV07CisgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0g
PSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCkpKQorICAgICAg
ICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKIAogICAgIFtyZXN1
bHQgc2V0UGF5bWVudFN1bW1hcnlJdGVtczpwYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXTsKIApA
QCAtNTEzLDI3OCArMzE3LDI5IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChjCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1zdGF0aWMg
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXMoV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzKQotewotICAgIHN3
aXRjaCAoc3RhdHVzKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblN0
YXR1czo6U3VjY2VzczoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNTdWNjZXNzOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6
OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFp
bHVyZTsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5S
ZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5S
ZXF1aXJlZDsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQ
SU5JbmNvcnJlY3Q6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
UElOSW5jb3JyZWN0OwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXM6OlBJTkxvY2tvdXQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzUElOTG9ja291dDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQS1BheW1lbnRFcnJvckNvZGUgdG9Q
S1BheW1lbnRFcnJvckNvZGUoV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlIGNvZGUpCi17Ci0g
ICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6
OlVua25vd246Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRVbmtub3duRXJyb3I7Ci0gICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Ci0g
ICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJyb3I7Ci0gICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0SW52YWxpZDoK
LSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJpbGxpbmdDb250YWN0SW52YWxpZEVycm9yOwotICAg
IGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToK
LSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNoaXBwaW5nQWRkcmVzc1Vuc2VydmljZWFibGVFcnJv
cjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9OU0Vycm9yKGNvbnN0
IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCi17Ci0gICAgYXV0byB1c2VySW5mbyA9IGFk
b3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAgW3VzZXJJbmZv
IHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2NyaXB0aW9uS2V5
XTsKLQotICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKLSAgICAgICAgTlNTdHJpbmcgKnBr
Q29udGFjdEZpZWxkID0gbmlsOwotICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRkcmVzc0tleSA9
IG5pbDsKLQotICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsKLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVOdW1iZXI6Ci0g
ICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0Rmll
bGRQaG9uZU51bWJlcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxBZGRyZXNzOgotICAgICAgICAg
ICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkRW1haWxB
ZGRyZXNzKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0Rmll
bGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkTmFtZSgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6UGhvbmV0aWNOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRkcmVzc0xp
bmVzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxp
dHk6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250
YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0g
Z2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2Fs
aXR5OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9
IGdldENOUG9zdGFsQWRkcmVzc0NpdHlLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6
Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0
RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0
Q05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRtaW5p
c3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0
RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwot
ICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5
KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRF
cnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAg
ICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsK
LSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb250YWN0RmllbGQ6OkNvdW50cnlDb2RlOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQg
PSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAg
ICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2Rl
S2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIFt1c2VySW5m
byBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXlt
ZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSgpXTsKLSAgICAgICAgaWYgKHBvc3RhbEFk
ZHJlc3NLZXkpCi0gICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NL
ZXkgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNl
ckluZm9LZXkoKV07Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vycm9yIGFsbG9j
XSBpbml0V2l0aERvbWFpbjpnZXRQS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6dG9QS1BheW1l
bnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCldKTsKLX0KLQot
c3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCi17Ci0gICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIGZvciAoY29uc3QgYXV0byYgZXJy
b3IgOiBlcnJvcnMpIHsKLSAgICAgICAgaWYgKGF1dG8gbnNFcnJvciA9IHRvTlNFcnJvcihlcnJv
cikpCi0gICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpuc0Vycm9yLmdldCgpXTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2Vsc2UKLXN0YXRpYyBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhjb25zdCBPcHRpb25h
bDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkKLXsKLSAgICBp
ZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNT
dWNjZXNzOwotCi0gICAgaWYgKHJlc3VsdC0+ZXJyb3JzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAg
IGF1dG8mIGVycm9yID0gcmVzdWx0LT5lcnJvcnNbMF07Ci0gICAgICAgIHN3aXRjaCAoZXJyb3Iu
Y29kZSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6VW5rbm93
bjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkFkZHJlc3NVbnNl
cnZpY2VhYmxlOgotICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNGYWlsdXJlOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpC
aWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzczsKLQotICAgICAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250YWN0SW52YWxpZDoKLSAg
ICAgICAgICAgIGlmIChlcnJvci5jb250YWN0RmllbGQgJiYgZXJyb3IuY29udGFjdEZpZWxkID09
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRyZXNzKQotICAg
ICAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNo
aXBwaW5nUG9zdGFsQWRkcmVzczsKLQotICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdDb250YWN0OwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgc3dpdGNoIChyZXN1bHQtPnN0YXR1cykgewotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1czo6UElOUmVxdWlyZWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgotICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgotICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7Ci0gICAgfQotCi0gICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotfQotI2VuZGlmCi0KIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkK
IHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAg
ICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwot
Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRS
ZWFjaEZpbmFsU3RhdGUgPSBXZWJDb3JlOjppc0ZpbmFsU3RhdGVSZXN1bHQocmVzdWx0KTsKLQot
I2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBzdGF0dXMgPSByZXN1
bHQgPyByZXN1bHQtPnN0YXR1cyA6IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
OjpTdWNjZXNzOwotICAgIGF1dG8gcGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdCA9IGFkb3B0
TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0
V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoc3RhdHVzKSBlcnJvcnM6
cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykuZ2V0KCkgOiBAWyBdXSk7Ci0gICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50QXV0
aG9yaXplZENvbXBsZXRpb24ocGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdC5nZXQoKSk7Ci0j
ZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5f
cGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cyhyZXN1bHQpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVsbHB0cjsKKyAg
ICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudFNlc3Npb24ocmVzdWx0
KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hhbnRTZXNzaW9u
JiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Nlc3Npb25CbG9jayhwYXltZW50TWVyY2hhbnRTZXNzaW9u
LnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpLCBudWxscHRyKTsKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Nlc3Npb25CbG9jayA9IG51bGxwdHI7
CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZU1lcmNoYW50VmFsaWRhdGlv
bihwYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9w
dGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYgdXBkYXRlKQogewotICAgIEFT
U0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVCht
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBpZiAo
dXBkYXRlKQotICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRh
dGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsKLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9F
UlJPUlMpCi0gICAgYXV0byBwa1NoaXBwaW5nTWV0aG9kVXBkYXRlID0gYWRvcHROUyhbUEFMOjph
bGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdp
dGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwotICAgIG1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2RDb21wbGV0aW9uKHBrU2hpcHBpbmdNZXRob2RVcGRhdGUuZ2V0KCkpOwotI2Vsc2UKLSAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2Vz
cywgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50
U3VtbWFyeUl0ZW1zLmdldCgpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9u
ID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlU2hpcHBp
bmdNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAotI2lmICFIQVZFKFBBU1NLSVRfR1JBTlVM
QVJfRVJST1JTKQotc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29u
dGFjdFVwZGF0ZT4mIHVwZGF0ZSkKLXsKLSAgICBpZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9y
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
U3VjY2VzczsKLQotICAgIGlmICh1cGRhdGUtPmVycm9ycy5zaXplKCkgPT0gMSkgewotICAgICAg
ICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3JzWzBdOwotICAgICAgICBzd2l0Y2ggKGVycm9y
LmNvZGUpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25v
d246Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5z
ZXJ2aWNlYWJsZToKLSAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzRmFpbHVyZTsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6
QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAgICAgICAgY2Fz
ZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6Ci0g
ICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9
PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKLSAg
ICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRT
aGlwcGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKLX0KLSNl
bmRpZgotCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRl
U2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5n
Q29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAgaWYgKHVwZGF0ZSkgewotICAgICAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5
SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0
ZW1zKTsKLQotICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kcyA9IGFkb3B0TlMoW1tOU011dGFi
bGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgICAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9k
IDogdXBkYXRlLT5uZXdTaGlwcGluZ01ldGhvZHMpCi0gICAgICAgICAgICBbc2hpcHBpbmdNZXRo
b2RzIGFkZE9iamVjdDp0b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpLmdldCgpXTsK
LQotICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X3NoaXBwaW5nTWV0aG9kcyA9IFdURk1vdmUoc2hpcHBpbmdNZXRob2RzKTsKLSAgICB9Ci0KLSNp
ZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIGF1dG8gcGtTaGlwcGluZ0NvbnRh
Y3RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nQ29u
dGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6dXBkYXRlID8gdG9OU0Vycm9ycyh1
cGRhdGUtPmVycm9ycykuZ2V0KCkgOiBAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1z
LmdldCgpIHNoaXBwaW5nTWV0aG9kczptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pOwotICAgIG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
Q29tcGxldGlvbihwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZS5nZXQoKSk7Ci0jZWxzZQotICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hp
cHBpbmdDb250YWN0Q29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXModXBk
YXRlKSwgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlw
cGluZ01ldGhvZHMuZ2V0KCksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7Ci0jZW5kaWYKLSAgICBtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdENvbXBsZXRpb24gPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlvblByZXNlbnRl
ci0+Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAogdm9pZCBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RT
ZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVwZGF0ZT4mIHVw
ZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
KTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUpOwotCi0gICAgaWYgKHVwZGF0ZSkKLSAgICAgICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9QS1BheW1lbnRT
dW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7Ci0KLSNpZiBIQVZFKFBB
U1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIGF1dG8gcGtQYXltZW50TWV0aG9kVXBkYXRlID0g
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpXSk7Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9kaWRTZWxl
Y3RQYXltZW50TWV0aG9kQ29tcGxldGlvbihwa1BheW1lbnRNZXRob2RVcGRhdGUuZ2V0KCkpOwot
I2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+
X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7Ci0jZW5k
aWYKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6
YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbih1cGRhdGUpOwog
fQogCiBWZWN0b3I8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1B
dmFpbGFibGVQYXltZW50TmV0d29ya3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9T
Lm1tCmluZGV4IDQzMjM1MjcwMjk5ODAzYTFkZmEwYWRkODBhY2UwMzExMGQ5ODNkMWEuLjcwZDU0
NDQyN2VjMGY5YjY0NDUxNDlmNDUxYTYzZmEyMDg3MWI1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHlJT1MubW0KQEAgLTI5LDggKzI5LDggQEAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVudC5oIgorI2lt
cG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCIKICNpbXBvcnQgIldlYlBhZ2VQ
cm94eS5oIgotI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIgogI2lt
cG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdDb250cm9sbGVy
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzLmg+CkBAIC00
MCw0NyArNDAsMjAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9yaWdpbmF0aW5n
VVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25zdCBXZWJDb3Jl
OjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBVSVZpZXdDb250cm9s
bGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX2NsaWVudC5wYXltZW50Q29vcmRpbmF0
b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKnRoaXMpOwotCi0gICAgaWYgKCFwcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIpOwotCiAgICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHBsYXRmb3JtUGF5
bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywgcmVxdWVzdCk7
CiAKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtQ
QUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVySW5zdGFuY2UoKSBp
bml0V2l0aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpXSk7Ci0gICAgaWYgKCFt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6KnRoaXNdKTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSBbcGF5bWVudFJlcXVl
c3QgcGF5bWVudFN1bW1hcnlJdGVtc107Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBbcGF5bWVudFJlcXVlc3Qgc2hp
cHBpbmdNZXRob2RzXTsKKyAgICBBU1NFUlQoIW1fYXV0aG9yaXphdGlvblByZXNlbnRlcik7Cisg
ICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbV9jbGllbnQucGF5bWVudENvb3JkaW5hdG9y
QXV0aG9yaXphdGlvblByZXNlbnRlcigqdGhpcywgcGF5bWVudFJlcXVlc3QuZ2V0KCkpOworICAg
IGlmICghbV9hdXRob3JpemF0aW9uUHJlc2VudGVyKQorICAgICAgICByZXR1cm4gY29tcGxldGlv
bkhhbmRsZXIoZmFsc2UpOwogCi0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlciBzZXREZWxlZ2F0ZTptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS5nZXQoKV07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBz
ZXRQcml2YXRlRGVsZWdhdGU6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUuZ2V0KCldOwotCi0gICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBwcmVzZW50Vmll
d0NvbnRyb2xsZXI6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmdldCgpIGFu
aW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwotCi0gICAgY29tcGxldGlvbkhhbmRsZXIo
dHJ1ZSk7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5wcmVzZW50KG1fY2xpZW50LnBh
eW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6aGlkZVBheW1lbnRVSSgpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlKTsKLQotICAgIFtbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250cm9sbGVyQW5p
bWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFttX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm5pbF07Ci0gICAgbV9wYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyID0gbnVsbHB0cjsKLQotICAgIFttX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRlXTsKLSAgICBt
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IG51bGxwdHI7Cisg
ICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5kaXNtaXNzKCk7CisgICAgbV9hdXRob3JpemF0
aW9uUHJlc2VudGVyID0gbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5TWFjLm1tCmluZGV4IGJkMjU2NGM0M2NjODI2NzViM2Y5MGY3YWYzNTI4YzAyNmJiYWU1ZjQu
LjZjY2Y5YzNiMTk2ZWU0Y2M3ZTE2OTg1ZjQ1MGM0YzQ4ZDY2NzQxZGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lmIFBMQVRGT1JN
KE1BQykgJiYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0jaW1wb3J0ICJX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1wb3J0IDxwYWwvY29jb2EvUGFz
c0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIApAQCAtNjQsMTIgKzY0
LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVu
dFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NFUlQodmlld0NvbnRy
b2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQYXltZW50Q29v
cmRpbmF0b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHldKTsKLSAgICAgICAgcGF5bWVu
dENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtwYXltZW50UmVxdWVzdCBwYXltZW50U3Vt
bWFyeUl0ZW1zXTsKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRob2RzID0gW3Bh
eW1lbnRSZXF1ZXN0IHNoaXBwaW5nTWV0aG9kc107Ci0gICAgICAgIHBheW1lbnRDb29yZGluYXRv
clByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSB2aWV3Q29udHJv
bGxlcjsKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6cGF5bWVudENvb3JkaW5hdG9yUHJveHkt
Pm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdldCgpXTsKLSAg
ICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOnBheW1lbnRDb29yZGluYXRvclByb3h5LT5t
X3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQoKV07CisgICAg
ICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVzZW50ZXIgPSBz
dGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+KCpwYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdDb250cm9sbGVy
KTsKIAogICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3NoZWV0V2lu
ZG93KTsKICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRXaW5kb3cgPSBb
TlNXaW5kb3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29udHJvbGxlcl07
CkBAIC05MCwyNiArODUsMjAgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6aGlk
ZVBheW1lbnRVSSgpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRpbmcpIHsKICAg
ICAgICAgKyttX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKIAotICAgICAgICBBU1NFUlQoIW1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgICAgIEFTU0VSVCghbV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAgICAgICBBU1NF
UlQoIW1fYXV0aG9yaXphdGlvblByZXNlbnRlcik7CiAgICAgICAgIEFTU0VSVCghbV9zaGVldFdp
bmRvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAgIEFTU0VSVChtX2F1dGhvcml6YXRpb25Q
cmVzZW50ZXIpOwogICAgIEFTU0VSVChtX3NoZWV0V2luZG93KTsKIAogICAgIFtbTlNOb3RpZmlj
YXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zaGVldFdpbmRvd1dp
bGxDbG9zZU9ic2VydmVyLmdldCgpXTsKICAgICBtX3NoZWV0V2luZG93V2lsbENsb3NlT2JzZXJ2
ZXIgPSBudWxscHRyOwogCiAgICAgW1ttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50XSBlbmRTaGVl
dDptX3NoZWV0V2luZG93LmdldCgpXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAgIG1fcGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsKKyAgICBtX2F1
dGhvcml6YXRpb25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBudWxscHRyOwogCiAgICAgbV9zaGVldFdpbmRvdyA9IG51bGxwdHI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXNDb2NvYS50eHQKaW5kZXggYjczMWViMjlhNzgzNGJkMGJhNDk5MDYzNTA5OTZlYjU0NGY1
ZjlhZi4uYTczMGE1NWQxM2FhNzEzNGY2N2JjNTNiZDlkMTkwYTVhNWFlMjAwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291
cmNlc0NvY29hLnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAvLyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTY1LDggKzY1LDExIEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVzLmNwcAogUGxh
dGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllckNv
Y29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3Np
Zmllci5jcHAKIAorUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
bW0KK1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0K
IFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0vY29jb2EvV0tD
cmFzaFJlcG9ydGVyLm1tCitQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0KIFBsYXRmb3JtL2NvY29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8tdW5pZnkKIAog
UGxhdGZvcm0vZm91bmRhdGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmNWIwYjE5NTU0NDMyM2E2YzU2ZTQ2YjVmMTFjMWQ2
ODkwYWM5N2IxLi5kMjEwODU5NjJjYWI2N2IxMjA5OTZkNmU4NTFjMWVkYmNiM2UxZGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk4Niw2ICsxOTg2LDcgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29u
dHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwogICAgIGNv
bnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBl
KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29vcmRpbmF0b3JB
dXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiwgUEtQYXlt
ZW50UmVxdWVzdCAqKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9QQVkpICYmIFBM
QVRGT1JNKE1BQykKICAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1dp
bmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMjBhYWQxMDQ1
YjkyNzNjY2ZlYzNmZWNhZTE5YTUxOWY3ZDRkYzgxYi4uNTAxYzcyN2Y4NGJlYzUyMGQyMGI3Y2I2
NWE2NGYwN2FiNGMxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRpdmVXZWJLZXli
b2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBvcnQgIlBhZ2VD
bGllbnQuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCIK
ICNpbXBvcnQgIlByaW50SW5mby5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0Fy
ZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQcm94eU1lc3Nh
Z2VzLmgiCkBAIC0xMTc5LDYgKzExODAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlcXVl
c3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQoUmVmPFcKIAog
I2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JBdXRob3JpemF0
aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50Q29vcmRpbmF0
b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCit7CisgICAgcmV0dXJu
IHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4ocGF5
bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlWaWV3Q29udHJv
bGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRy
b2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAgIHJldHVybiB1
aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTliMDc1Njg1MGQ3ODBkNDU1
YjVlMjcyMTNmNDE0ZjQ0OTQ3NzAxZi4uNzc5NWRkYTE0NzVjYTIwZGJjNDM1ZmJjOTMyNzFiY2Zh
NDNkZTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yOTMsNyArMjkzLDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAwMjkwRDYyIC8q
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyogUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEuaCAqLzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAwMjkwRDYyIC8q
IFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2MiAvKiBSZW1v
dGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVBMTY0QjNBODgw
MDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBENjIgLyogUmVt
b3RlTGF5ZXJUcmVlQ29udGV4dC5oICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5MDA3QzlCRDEg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3OEMxRDFCMzM1
NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1MDA3QzlCRDEg
LyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3OTYxRDFCMzYx
MzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc5MjFEMUIz
NjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2VpdmVyLmNwcCAq
LzsgfTsKIAkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRv
ck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAxQUIxRjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2Fn
ZXMuaCAqLzsgfTsKQEAgLTEyODQsNiArMTI4MywxMCBAQAogCQlBMTNEQzY4MjIwN0FBNkIyMDA2
NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIyMDA2NkVGNzIg
LyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUExNUVFREU2MUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIwIC8qIFdLUGFz
c3dvcmRWaWV3LmggKi87IH07CiAJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAvKiBBcmd1bWVu
dENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnNDb2NvYS5oICov
OyB9OworCQlBMTc5OEIzRTIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5oICovOyB9OworCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0
aW9uVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8q
IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIyMkYxQkQ0MDAw
NzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJENDAwMDc2NEJE
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJQTE4MUE3OTgy
MUFDQzc0QjAwNTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBX
ZWJLaXRBZGRpdGlvbnMubW0gKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3QTdDQyAvKiBB
Y2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5oICov
OyB9OwogCQlBMTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0
dGVySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExOUREM0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXJJ
bnRlcm5hbC5oICovOyB9OwpAQCAtMjIyOCw3ICsyMjMxLDYgQEAKIAkJMUFCMUY3NzExRDFCMkY3
RTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBheW1l
bnRDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MzFE
MUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2VzLmluICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdlcy5pbjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5QkQxIC8qIFdl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQUIxRjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFBQjFGNzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQUIxRjc3RDFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTM4NTMsNiArMzg1NSwxMyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAwMDY5QjAgLyog
V0tQYXNzd29yZFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tQYXNz
d29yZFZpZXcuaDsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnND
b2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVudENvZGVyc0Nv
Y29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFBQTMzMUIwMDAw
MzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQXJn
dW1lbnRDb2RlcnNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThC
M0QyMjJEOTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3
OThCNDAyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0NzIyMkU1MzBB
MDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBMTc5OEI0ODIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0QTIy
MkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJEIC8qIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTgx
QTc5NzIxQUNBQzYxMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV2ViS2l0QWRkaXRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3QTdDQyAvKiBB
Y2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFjY2Vz
c2liaWxpdHlJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUyNzIsNyArNTI4
MSw3IEBACiAJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJCQlBMTc5OEI0
QjIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oICov
LAogCQkJCTFBQjFGNzc5MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUNvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYzODksMTAgKzYz
OTgsMTYgQEAKIAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIyMkQ5N0EyMDAw
NzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJCQlBMTc5OEI0
QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0gKi8s
CisJCQkJQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIuaCAqLywKKwkJCQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQgLyogUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVCRjFEQzNGQUU1
MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovLAogCQkJCUExODFBNzk3MjFBQ0FD
NjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4MjIxRjZFNTE4
MjAwQzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIzMUY2RTUxODIw
MEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcyMjJFNTMwQTAw
MDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAorCQkJCUExNzk4
QjQ4MjIyRTUzMEEwMDA3NjRCRCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUubW0g
Ki8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTkyNTYsNiArOTI3MSw4IEBACiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJDQjE1IC8qIFBh
Z2VMb2FkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDNDODYwMDgyREY3
NyAvKiBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NzRBNTgx
MTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUExNzk4QjNFMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJEIC8qIFBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxRTEy
M0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRTb2Z0TGluay5o
IGluIEhlYWRlcnMgKi8sCkBAIC05NTYwLDcgKzk1NzcsNyBAQAogCQkJCTdDNDY5NENBMUE0QjRF
QTEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1l
c3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3QzlCRDEgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCTFBQjFGNzdF
MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3OTkxRDFCMzYx
MzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxv
Z2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2NTkwMDdCRDUz
OSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAtOTg3NCw2ICs5
ODkxLDcgQEAKIAkJCQkxQUI4QTFGMjE4NDAwQjYyMDBFOUFFNjkgLyogV0tQYWdlVUlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VW
aXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNUVFREU2MUUzMDFDRUUwMDAw
NjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDkyMjJF
NTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFnZU51bWJlcklu
ZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwNDZFQTEyMDc5MjYzMTAwRjBDNUQ4IC8q
IFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJDQTAwNTg2QUUy
IC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA4NjgsNiArMTA4
ODYsNyBAQAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVXZWJJbnNwZWN0
b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThFNjkxNzE2OUI2
NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2VydmljZVdvcmtlckNs
aWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTQxREU3QzZD
MjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVCaXRtYXAuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8qIFNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTEwNTIsNyArMTEwNzEsNiBAQAogCQkJCTJEODUw
OEM2MjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ4NTA4RDgyMTJFMzNFRDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5OC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRDg1MDhDNTIxMkUzM0VEMDAwRUY0NkMgLyogVW5pZmllZFNvdXJj
ZTk5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBT
ZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEODUwOEQyMjEy
RTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlMTAwLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFuYWdlck1lc3Nh
Z2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ5MUIxNzFFNzM1MjU1MDAwMDkw
NjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4g
U291cmNlcyAqLywK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363923</attachid>
            <date>2019-03-07 13:56:54 -0800</date>
            <delta_ts>2019-03-07 15:30:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195349-20190307135653.patch</filename>
            <type>text/plain</type>
            <size>117498</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyNjA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMzlkNjQz
NzNjMWMzMjAwZWM0ZTkwYTFlZjgzYzY3MDI0NjA0MDMyLi43OTIzYjAxZThiZmM4Y2M1ZjM0ZTg5
OTFhM2UzNDIxOWUwZTlhMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAor
MjAxOS0wMy0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0Fw
cGxlIFBheV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZy
b20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2
MjU1MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAg
ICBNb3ZlZCBzb2Z0LWxpbmtpbmcgb2YgUEtQYXltZW50RXJyb3JEb21haW4gZnJvbSBXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSB0byBoZXJlIGFuZCB1c2VkCisgICAgICAgIGEgbW9yZSBkZXNj
cmlwdGl2ZSBwbGF0Zm9ybSBtYWNyby4KKworICAgICAgICAqIHBhbC9jb2NvYS9QYXNzS2l0U29m
dExpbmsuaDoKKyAgICAgICAgKiBwYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLm1tOgorCiAyMDE5
LTAzLTAxICBDb25yYWQgU2h1bHR6ICA8Y29ucmFkX3NodWx0ekBhcHBsZS5jb20+CiAKICAgICAg
ICAgSW1wcm9wZXIgdXNlIG9mIFBMQVRGT1JNKFRWT1MpIGluIFBBTApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwNzRi
ODc3MmYzNTAzOGFlZWRkMjljZTA0ZTNkM2MzNTVkMzkzNTYyLi4zMWFiN2Q2ZWE5YmJjNDhmY2E5
MDkzYTc0OGY0YWRjMmI2NzE1N2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxOS0w
My0wNSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW0FwcGxlIFBh
eV0gVW50YW5nbGUgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyIGZyb20gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5NTM0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg2MjU1MTA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBJbnRy
b2R1Y2VkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyIGFuZCBXS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUgdG8gZW5jYXBzdWxhdGUKKyAgICAgICAgUEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyIGFuZCBpdHMgZGVsZWdhdGUuIFRhdWdodCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eSB0bworICAgICAgICBpbnRlcmFjdCB3aXRoIFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyIHJhdGhlciB0aGFuIFBLUEFWQyBkaXJlY3RseS4KKworICAgICAgICBUaGVz
ZSBjaGFuZ2VzIHdpbGwgYWxsb3cgdXMgdG8gc3dhcCBvdXQgUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyIHdpdGggUEtQYXltZW50QXV0aG9yaXphdGlvbkNvbnRyb2xsZXIgaW4g
YSBmb2xsb3ctb24gcGF0Y2guCisKKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlci5oOiBBZGRlZC4gRGVmaW5lZCB0aGUgYWJzdHJhY3QgaW50ZXJm
YWNlIGZvcgorICAgICAgICBwYXltZW50IGF1dGhvcml6YXRpb24gcHJlc2VudGVycyB0aGF0IHVz
ZSBQS1BBKFYpQy4KKyAgICAgICAgKiBQbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1cyk6IE1vdmVkIGZyb20gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5tbS4KKyAgICAgICAgKFdlYktpdDo6dG9QS1BheW1lbnRFcnJvckNvZGUpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6dG9OU0Vycm9yKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OnRvTlNF
cnJvcnMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9QS1NoaXBwaW5nTWV0aG9kcyk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29t
cGxldGVNZXJjaGFudFZhbGlkYXRpb24pOiBBZGRlZC4gSW1wbGVtZW50cyB0aGUKKyAgICAgICAg
bG9naWMgcHJldmlvdXNseSBpbiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1D
b21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6UGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbik6IERpdHRv
IGZvcgorICAgICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0
ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1lbnRTZXNzaW9uKTogRGl0dG8gZm9yIAorICAg
ICAgICAoV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlw
cGluZ0NvbnRhY3RTZWxlY3Rpb24pOiBEaXR0byBmb3IKKyAgICAgICAgV2ViUGF5bWVudENvb3Jk
aW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vzc2lvbi4KKyAgICAgICAgKFdl
YktpdDo6UGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb24pOiBEaXR0byBmb3IKKyAgICAgICAgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbi4KKyAgICAgICAgKiBQ
bGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmg6IEFkZGVk
LiBEZWZpbmVkIGEgc3ViY2xhc3Mgb2YgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgZm9y
IFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci4KKyAgICAgICAgKiBQbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tOiBBZGRlZC4KKyAg
ICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW5p
dFdpdGhQcmVzZW50ZXI6XSk6IEFkZGVkIGEgUEtQQVZDCisgICAgICAgIGRlbGVnYXRlIHRoYXQn
cyBhIHN1YmNsYXNzIG9mIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS4KKyAgICAgICAg
KC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRpZEZpbmlzaDpdKToKKyAgICAgICAgQ2FsbGVkIC1b
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRGaW5pc2hdLgorICAgICAgICAoLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBheW1lbnQ6aGFuZGxlcjpdKTogQ2Fs
bGVkCisgICAgICAgIC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRBdXRob3Jp
emVQYXltZW50OmNvbXBsZXRpb246XS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpoYW5kbGVyOl0pOiBDYWxsZWQKKyAgICAgICAgLVtX
S1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOmNv
bXBsZXRpb246XS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKTogQ2FsbGVkCisgICAgICAgIC1bV0tQYXltZW50QXV0
aG9yaXphdGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6Y29tcGxldGlvbjpd
LgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZFNlbGVjdFBheW1lbnRNZXRo
b2Q6aGFuZGxlcjpdKTogQ2FsbGVkCisgICAgICAgIC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRl
bGVnYXRlIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XS4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcjp3aWxsRmluaXNoV2l0aEVycm9yOl0pOgorICAgICAgICBD
YWxsZWQgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX3dpbGxGaW5pc2hXaXRoRXJy
b3I6XS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRSZXF1ZXN0TWVyY2hh
bnRTZXNzaW9uOl0pOiBDYWxsZWQKKyAgICAgICAgLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XS4KKyAgICAgICAgKiBQbGF0Zm9ybS9j
b2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICog
UGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIHN1bW1hcnlJdGVtc10p
OiBBZGRlZCBhIHN1bW1hcnlJdGVtcyBnZXR0ZXIuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZSBzaGlwcGluZ01ldGhvZHNdKTogRGl0dG8gZm9yIHNoaXBwaW5nTWV0
aG9kcy4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
TWVyY2hhbnRWYWxpZGF0aW9uOmVycm9yOl0pOiBDYWxsZWQKKyAgICAgICAgX2RpZFJlcXVlc3RN
ZXJjaGFudFNlc3Npb25Db21wbGV0aW9uIHRoZW4gc2V0IGl0IHRvIG5pbC4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVj
dGlvbjpdKTogRGl0dG8gZm9yCisgICAgICAgIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxl
dGlvbi4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRl
UGF5bWVudFNlc3Npb246ZXJyb3JzOmRpZFJlYWNoRmluYWxTdGF0ZTpdKTogRGl0dG8KKyAgICAg
ICAgZm9yIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbi4KKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9u
OnN1bW1hcnlJdGVtczpzaGlwcGluZ01ldGhvZHM6ZXJyb3JzOl0pOgorICAgICAgICBEaXR0byBm
b3IgX2RpZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24uCisgICAgICAgICgtW1dLUGF5
bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSBjb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
Ol0pOiBEaXR0byBmb3IKKyAgICAgICAgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlv
bi4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlIGludmFsaWRhdGVd
KTogSWYgdGhlcmUncyBhbiBvdXRzdGFuZGluZyBhdXRob3JpemF0aW9uCisgICAgICAgIGNhbGxi
YWNrLCBjYWxsZWQgLWNvbXBsZXRlUGF5bWVudFNlc3Npb246ZXJyb3JzOmRpZFJlYWNoRmluYWxT
dGF0ZTogd2l0aCBhIHN0YXRlIG9mCisgICAgICAgIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNGYWlsdXJlLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2lu
aXRXaXRoUHJlc2VudGVyOl0pOgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUgX2RpZEF1dGhvcml6ZVBheW1lbnQ6Y29tcGxldGlvbjpdKTogQWRkZWQuIEltcGxlbWVu
dHMgdGhlCisgICAgICAgIGxvZ2ljIHByZXZpb3VzbHkgaW4gV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGUuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25EZWxlZ2F0ZSBfZGlkRmluaXNoXSk6IERpdHRvLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246XSk6IERpdHRvLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgX2RpZFNlbGVjdFBheW1l
bnRNZXRob2Q6Y29tcGxldGlvbjpdKTogRGl0dG8uCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZSBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OmNvbXBsZXRpb246XSk6
IERpdHRvLgorICAgICAgICAodG9TaGlwcGluZ01ldGhvZCk6IE1vdmVkIGZyb20gV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbS4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvbkRlbGVnYXRlIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZDpjb21wbGV0aW9uOl0pOiBBZGRl
ZC4gSW1wbGVtZW50cworICAgICAgICB0aGUgbG9naWMgcHJldmlvdXNseSBpbiBXS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlIF93aWxsRmluaXNoV2l0aEVycm9yOl0pOiBEaXR0by4KKyAg
ICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyV2ls
bFZhbGlkYXRlTWVyY2hhbnQpOiBUbyBjb25mb3JtIHRvCisgICAgICAgIFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOjpDbGllbnQsIHJlbmFtZWQgZnJvbSB2YWxpZGF0ZU1lcmNoYW50Lgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlk
QXV0aG9yaXplUGF5bWVudCk6IFJlbmFtZWQgZnJvbQorICAgICAgICBkaWRBdXRob3JpemVQYXlt
ZW50LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2Vu
dGVyRGlkRmluaXNoKTogTW92ZWQgbG9naWMgaGVyZSB0aGF0IHByZXZpb3VzbHkKKyAgICAgICAg
ZXhpc3RlZCBpbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kKTogUmVuYW1lZCBmcm9tCisgICAgICAgIGRpZFNlbGVjdFNo
aXBwaW5nTWV0aG9kLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KTogUmVuYW1lZCBmcm9tCisgICAg
ICAgIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHk6OnByZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QpOiBSZW5h
bWVkIGZyb20KKyAgICAgICAgZGlkU2VsZWN0UGF5bWVudE1ldGhvZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnZhbGlkYXRlTWVyY2hhbnQpOiBSZW5hbWVk
IHRvCisgICAgICAgIHByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50LgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkQXV0aG9yaXplUGF5bWVudCk6IFJl
bmFtZWQgdG8KKyAgICAgICAgcHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVjdFNoaXBwaW5nTWV0
aG9kKTogUmVuYW1lZCB0bworICAgICAgICBwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdCk6IFJlbmFtZWQgdG8KKyAgICAgICAgcHJlc2VudGVyRGlkU2VsZWN0
U2hpcHBpbmdDb250YWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZCk6IFJlbmFtZWQgdG8KKyAgICAgICAgZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZC4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHkuaDogQ2hhbmdlZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSB0bwor
ICAgICAgICBzdWJjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50Lgor
ICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eUNvY29hLmg6IFJlbW92ZWQgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUgaW50ZXJmYWNlIGFuZCBkZWNsYXJlZCBzb21lIGhlbHBlciBmdW5jdGlvbnMKKyAgICAg
ICAgbmVlZGVkIGJ5IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLgorICAgICAgICAqIFNo
YXJlZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tOgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZSk6IFJlbW92ZWQgc3Rh
dGljIGtleXdvcmQuCisgICAgICAgIChXZWJLaXQ6OnRvRGVjaW1hbE51bWJlcik6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudFN1bW1hcnlJdGVtKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OnRvUEtTaGlwcGluZ01ldGhvZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdCk6IENoYW5nZWQgdG8g
Y2FsbAorICAgICAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXIuCisgICAgICAgIChXZWJLaXQ6
OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9ybUNvbXBsZXRlUGF5bWVudFNlc3Np
b24pOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6
OnBsYXRmb3JtQ29tcGxldGVNZXJjaGFudFZhbGlkYXRpb24pOiBEaXR0by4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVTaGlwcGlu
Z01ldGhvZFNlbGVjdGlvbik6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbik6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxh
dGZvcm1Db21wbGV0ZVBheW1lbnRNZXRob2RTZWxlY3Rpb24pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW5pdFdpdGhQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eTpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgaW52YWxpZGF0ZV0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOndpbGxGaW5pc2hXaXRoRXJyb3I6XSk6
IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
ckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkUmVxdWVzdE1l
cmNoYW50U2Vzc2lvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKHRvU2hpcHBpbmdNZXRob2QpOiBE
ZWxldGVkLgorICAgICAgICAoLVtXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZSBwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOmRpZEF1dGhvcml6ZVBh
eW1lbnQ6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmhhbmRsZXI6XSk6IERlbGV0ZWQuCisgICAgICAg
ICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6aGFuZGxl
cjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjpkaWRTZWxl
Y3RTaGlwcGluZ0NvbnRhY3Q6aGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXlt
ZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcjpkaWRBdXRob3JpemVQYXltZW50OmNvbXBsZXRpb246XSk6IERlbGV0
ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdN
ZXRob2Q6Y29tcGxldGlvbjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tQYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlcjpkaWRTZWxlY3RQYXltZW50TWV0aG9kOmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0
OmNvbXBsZXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlIHBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEaWRGaW5pc2g6XSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OnRvUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyk6IE1vdmVkIHRvIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVy
Lm1tLgorICAgICAgICAoV2ViS2l0Ojp0b1BLUGF5bWVudEVycm9yQ29kZSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0Ojp0b05TRXJyb3IpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6dG9OU0Vy
cm9ycyk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5bWVudENv
b3JkaW5hdG9yUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5OjpwbGF0Zm9ybVNob3dQYXltZW50VUkpOiBDaGFuZ2VkIHRvIHByZXNlbnQgYQor
ICAgICAgICBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciByYXRoZXIgdGhhbiBhIFBLUEFW
Qy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmhpZGVQYXlt
ZW50VUkpOiBDaGFuZ2VkIHRvIGRpc21pc3MgYQorICAgICAgICBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlciByYXRoZXIgdGhhbiBhIFBLUEFWQy4KKyAgICAgICAgKiBTaGFyZWQvQXBwbGVQ
YXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1TaG93UGF5bWVudFVJKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpoaWRlUGF5
bWVudFVJKTogRGl0dG8uCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cGF5bWVudENvb3Jk
aW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcik6IEFkZGVkLiBSZXR1cm5zIGEgbmV3CisgICAg
ICAgIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuCisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMDMtMDcgIEpvaG4gV2lsYW5kZXIg
IDx3aWxhbmRlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2UgTG9hZCBTdGF0aXN0aWNz
OiBMb2cgZmlyc3QtcGFydHkgbmF2aWdhdGlvbnMgd2l0aCBsaW5rIGRlY29yYXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvY29jb2EvUGFzc0tpdFNvZnRMaW5rLmggYi9T
b3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oCmluZGV4IGMwODc0
ODk1NTY1MWQ5Y2MzYjdmMzE1M2RmNTUyOWUxNjMzZDNlYTEuLmIxZjJjOTc0MWI5ZjhiNDA4MmRk
Y2VmMTI1Zjc3YTE0MTIxYzU5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2Nv
YS9QYXNzS2l0U29mdExpbmsuaApAQCAtNDUsNyArNDUsNyBAQCBTT0ZUX0xJTktfQ0xBU1NfRk9S
X0hFQURFUihQQUwsIFBLU2hpcHBpbmdNZXRob2QpCiBTT0ZUX0xJTktfRlVOQ1RJT05fRk9SX0hF
QURFUihQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1lbnRzV2l0aE1lcmNoYW50SWRlbnRpZmll
ckFuZERvbWFpbiwgdm9pZCwgKE5TU3RyaW5nICppZGVudGlmaWVyLCBOU1N0cmluZyAqZG9tYWlu
LCBQS0Nhbk1ha2VQYXltZW50c0NvbXBsZXRpb24gY29tcGxldGlvbiksIChpZGVudGlmaWVyLCBk
b21haW4sIGNvbXBsZXRpb24pKQogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9IRUFERVIoUEFMLCBQ
YXNzS2l0LCBQS0RyYXdBcHBsZVBheUJ1dHRvbiwgdm9pZCwgKENHQ29udGV4dFJlZiBjb250ZXh0
LCBDR1JlY3QgZHJhd1JlY3QsIENHRmxvYXQgc2NhbGUsIFBLUGF5bWVudEJ1dHRvblR5cGUgdHlw
ZSwgUEtQYXltZW50QnV0dG9uU3R5bGUgc3R5bGUsIE5TU3RyaW5nICpsYW5ndWFnZUNvZGUpLCAo
Y29udGV4dCwgZHJhd1JlY3QsIHNjYWxlLCB0eXBlLCBzdHlsZSwgbGFuZ3VhZ2VDb2RlKSkKIAot
I2lmIFBMQVRGT1JNKElPUykgfHwgKFBMQVRGT1JNKE1BQykgJiYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDEzMDApCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50QXV0aG9yaXphdGlv
blJlc3VsdCkKIFNPRlRfTElOS19DTEFTU19GT1JfSEVBREVSKFBBTCwgUEtQYXltZW50UmVxdWVz
dFBheW1lbnRNZXRob2RVcGRhdGUpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX0hFQURFUihQQUwsIFBL
UGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGUpCkBAIC01Nyw2ICs1Nyw3IEBAIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
aG9uZU51bWJlciwgUEtDb250YWN0CiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUws
IFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lLCBQS0NvbnRhY3RGaWVsZCkKIFNP
RlRfTElOS19DT05TVEFOVF9GT1JfSEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDb250YWN0RmllbGRQ
b3N0YWxBZGRyZXNzLCBQS0NvbnRhY3RGaWVsZCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfSEVB
REVSKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSwg
UEtQYXltZW50RXJyb3JLZXkpCitTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX0hFQURFUihQQUwsIFBh
c3NLaXQsIFBLUGF5bWVudEVycm9yRG9tYWluLCBOU1N0cmluZyAqKQogU09GVF9MSU5LX0NPTlNU
QU5UX0ZPUl9IRUFERVIoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvclBvc3RhbEFkZHJlc3NV
c2VySW5mb0tleSwgUEtQYXltZW50RXJyb3JLZXkpCiAKIFNPRlRfTElOS19GVU5DVElPTl9GT1Jf
SEVBREVSKFBBTCwgUGFzc0tpdCwgUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJZGVudGlm
aWVyRG9tYWluQW5kU291cmNlQXBwbGljYXRpb24sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmll
ciwgTlNTdHJpbmcgKmRvbWFpbiwgTlNTdHJpbmcgKnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllciwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRl
bnRpZmllciwgZG9tYWluLCBzb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIGNv
bXBsZXRpb24pKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9jb2NvYS9QYXNz
S2l0U29mdExpbmsubW0gYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0
TGluay5tbQppbmRleCAzMmY3YmUwOWNhYWM1NmYwZjA2ZjJkODc3M2U3N2MwYjg0ZGU4ZjkzLi44
NzI5NzNlNGE5NGFmNGIxNjk2NzM2ZTY3ZGI0MDIyMTNiNDMzMmZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL2NvY29hL1Bhc3NLaXRTb2Z0TGluay5tbQpAQCAtNDksNyArNDksNyBA
QCBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBL
U2hpcHBpbmdNZXRob2QsIFBBTF9FWFBPUgogU09GVF9MSU5LX0ZVTkNUSU9OX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0Nhbk1ha2VQYXltZW50c1dpdGhNZXJjaGFudElk
ZW50aWZpZXJBbmREb21haW4sIHZvaWQsIChOU1N0cmluZyAqaWRlbnRpZmllciwgTlNTdHJpbmcg
KmRvbWFpbiwgUEtDYW5NYWtlUGF5bWVudHNDb21wbGV0aW9uIGNvbXBsZXRpb24pLCAoaWRlbnRp
ZmllciwgZG9tYWluLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19GVU5DVElP
Tl9GT1JfU09VUkNFKFBBTCwgUGFzc0tpdCwgUEtEcmF3QXBwbGVQYXlCdXR0b24sIHZvaWQsIChD
R0NvbnRleHRSZWYgY29udGV4dCwgQ0dSZWN0IGRyYXdSZWN0LCBDR0Zsb2F0IHNjYWxlLCBQS1Bh
eW1lbnRCdXR0b25UeXBlIHR5cGUsIFBLUGF5bWVudEJ1dHRvblN0eWxlIHN0eWxlLCBOU1N0cmlu
ZyAqbGFuZ3VhZ2VDb2RlKSwgKGNvbnRleHQsIGRyYXdSZWN0LCBzY2FsZSwgdHlwZSwgc3R5bGUs
IGxhbmd1YWdlQ29kZSkpCiAKLSNpZiBQTEFURk9STShJT1MpIHx8IChQTEFURk9STShNQUMpICYm
IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxMzAwKQorI2lmIEhBVkUoUEFT
U0tJVF9HUkFOVUxBUl9FUlJPUlMpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VY
UE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQsIFBBTF9FWFBP
UlQpCiBTT0ZUX0xJTktfQ0xBU1NfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlLCBQQUxfRVhQT1JUKQogU09GVF9M
SU5LX0NMQVNTX0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlLCBQQUxfRVhQT1JUKQpAQCAtNjEsNiArNjEsNyBA
QCBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQs
IFBLQ29udGFjdEZpZWxkUGhvbmVOdW1iZQogU09GVF9MSU5LX0NPTlNUQU5UX0ZPUl9TT1VSQ0Vf
V0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS0NvbnRhY3RGaWVsZFBob25ldGljTmFtZSwgUEtD
b250YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcywgUEtD
b250YWN0RmllbGQsIFBBTF9FWFBPUlQpCiBTT0ZUX0xJTktfQ09OU1RBTlRfRk9SX1NPVVJDRV9X
SVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLUGF5bWVudEVycm9yQ29udGFjdEZpZWxkVXNlcklu
Zm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQorU09GVF9MSU5LX0NPTlNUQU5U
X0ZPUl9TT1VSQ0VfV0lUSF9FWFBPUlQoUEFMLCBQYXNzS2l0LCBQS1BheW1lbnRFcnJvckRvbWFp
biwgTlNTdHJpbmcgKiwgUEFMX0VYUE9SVCkKIFNPRlRfTElOS19DT05TVEFOVF9GT1JfU09VUkNF
X1dJVEhfRVhQT1JUKFBBTCwgUGFzc0tpdCwgUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNl
ckluZm9LZXksIFBLUGF5bWVudEVycm9yS2V5LCBQQUxfRVhQT1JUKQogCiBTT0ZUX0xJTktfRlVO
Q1RJT05fRk9SX1NPVVJDRV9XSVRIX0VYUE9SVChQQUwsIFBhc3NLaXQsIFBLQ2FuTWFrZVBheW1l
bnRzV2l0aE1lcmNoYW50SWRlbnRpZmllckRvbWFpbkFuZFNvdXJjZUFwcGxpY2F0aW9uLCB2b2lk
LCAoTlNTdHJpbmcgKmlkZW50aWZpZXIsIE5TU3RyaW5nICpkb21haW4sIE5TU3RyaW5nICpzb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIsIFBLQ2FuTWFrZVBheW1lbnRzQ29tcGxl
dGlvbiBjb21wbGV0aW9uKSwgKGlkZW50aWZpZXIsIGRvbWFpbiwgc291cmNlQXBwbGljYXRpb25T
ZWNvbmRhcnlJZGVudGlmaWVyLCBjb21wbGV0aW9uKSwgUEFMX0VYUE9SVCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGIxMjBjZTk0ZjQ3M2I5NGU0NzA5ZmZiOTI4NGRhZDc4
NjY5ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9Q
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9BcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgorCitPQkpDX0NMQVNTIFVJVmlld0NvbnRy
b2xsZXI7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZTsKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGF5bWVudDsKK2NsYXNzIFBheW1lbnRDb250YWN0Owor
Y2xhc3MgUGF5bWVudE1lcmNoYW50U2Vzc2lvbjsKK2NsYXNzIFBheW1lbnRNZXRob2Q7Cit9CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4g
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyKTsKK3B1YmxpYzoKKyAgICBzdHJ1Y3QgQ2xp
ZW50IHsKKyAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgICAgIHZp
cnR1YWwgdm9pZCBwcmVzZW50ZXJEaWRBdXRob3JpemVQYXltZW50KFBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudCYpID0gMDsKKyAgICAgICAgdmly
dHVhbCB2b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRl
ciYsIGJvb2wgZGlkUmVhY2hGaW5hbFN0YXRlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBw
cmVzZW50ZXJEaWRTZWxlY3RQYXltZW50TWV0aG9kKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJiwgY29uc3QgV2ViQ29yZTo6UGF5bWVudE1ldGhvZCYpID0gMDsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChQYXltZW50QXV0aG9yaXph
dGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JikgPSAwOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25Q
YXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBwcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0aG9yaXphdGlvblByZXNl
bnRlciYsIGNvbnN0IFVSTCYpID0gMDsKKyAgICB9OworCisgICAgdmlydHVhbCB+UGF5bWVudEF1
dGhvcml6YXRpb25QcmVzZW50ZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBDbGllbnQmIGNsaWVudCgp
IHsgcmV0dXJuIG1fY2xpZW50OyB9CisKKyAgICB2b2lkIGNvbXBsZXRlTWVyY2hhbnRWYWxpZGF0
aW9uKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXJjaGFudFNlc3Npb24mKTsKKyAgICB2b2lkIGNv
bXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kVXBkYXRlPiYpOworICAgIHZvaWQgY29tcGxldGVQYXltZW50U2Vzc2lvbihjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mKTsKKyAgICB2
b2lkIGNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNv
cmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mKTsKKyAgICB2b2lkIGNvbXBsZXRlU2hpcHBpbmdN
ZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdNZXRob2RVcGRh
dGU+Jik7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzbWlzcygpID0gMDsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIHZpcnR1YWwgdm9pZCBwcmVzZW50KFVJVmlld0NvbnRyb2xsZXIgKiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgPSAwOworI2VuZGlmCisKK3Byb3RlY3Rl
ZDoKKyAgICBleHBsaWNpdCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcihDbGllbnQmIGNs
aWVudCkKKyAgICAgICAgOiBtX2NsaWVudChjbGllbnQpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpwbGF0Zm9ybURlbGVnYXRlKCkg
PSAwOworCitwcml2YXRlOgorICAgIENsaWVudCYgbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5tbSBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjVmNWVhMzRhOTQyMWM1N2RiOTBmYTEzMTljM2ZjZmUwN2RlZWUy
NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXIubW0KQEAgLTAsMCArMSwzMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIldlYlBheW1lbnRDb29yZGluYXRvclByb3h5
Q29jb2EuaCIKKyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudE1lcmNoYW50U2Vzc2lvbi5oPgorI2ltcG9ydCA8cGFs
L2NvY29hL1Bhc3NLaXRTb2Z0TGluay5oPgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VS
Uk9SUykKK1NPRlRfTElOS19GUkFNRVdPUksoQ29udGFjdHMpOworU09GVF9MSU5LX0NPTlNUQU5U
KENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDaXR5S2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElO
S19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzQ291bnRyeUtleSwgTlNTdHJpbmcg
Kik7CitTT0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0lTT0NvdW50
cnlDb2RlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Q
b3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSwgTlNTdHJpbmcgKik7CitTT0ZUX0xJTktfQ09OU1RB
TlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1N0YXRlS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRf
TElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3RyZWV0S2V5LCBOU1N0cmlu
ZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViQWRt
aW5pc3RyYXRpdmVBcmVhS2V5LCBOU1N0cmluZyAqKTsKK1NPRlRfTElOS19DT05TVEFOVChDb250
YWN0cywgQ05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXksIE5TU3RyaW5nICopOworI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBGSVhNRTogUmF0aGVyIHRoYW4gaGF2aW5nIHRo
ZXNlIGZyZWUgZnVuY3Rpb25zIHNjYXR0ZXJlZCBhYm91dCwgQXBwbGUgUGF5IGRhdGEgdHlwZXMg
c2hvdWxkIGtub3cKKy8vIGhvdyB0byBjb252ZXJ0IHRoZW1zZWx2ZXMgdG8gYW5kIGZyb20gdGhl
aXIgcGxhdGZvcm0gcmVwcmVzZW50YXRpb25zLgorCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFS
X0VSUk9SUykKKworc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzKFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
IHN0YXR1cykKK3sKKyAgICBzd2l0Y2ggKHN0YXR1cykgeworICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6CisgICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgorICAgICAgICByZXR1cm4gUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgorICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7CisgICAgfQorfQorCitzdGF0aWMgUEtQ
YXltZW50RXJyb3JDb2RlIHRvUEtQYXltZW50RXJyb3JDb2RlKFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29kZSBjb2RlKQoreworICAgIHN3aXRjaCAoY29kZSkgeworICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpVbmtub3duOgorICAgICAgICByZXR1cm4gUEtQYXltZW50VW5r
bm93bkVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpTaGlwcGlu
Z0NvbnRhY3RJbnZhbGlkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50U2hpcHBpbmdDb250YWN0
SW52YWxpZEVycm9yOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpCaWxs
aW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRCaWxsaW5nQ29udGFj
dEludmFsaWRFcnJvcjsKKyAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QWRk
cmVzc1Vuc2VydmljZWFibGU6CisgICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0FkZHJl
c3NVbnNlcnZpY2VhYmxlRXJyb3I7CisgICAgfQorfQorCitzdGF0aWMgTlNFcnJvciAqdG9OU0Vy
cm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCit7CisgICAgYXV0byB1c2Vy
SW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7CisgICAg
W3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5XTsKKworICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKKyAgICAgICAgTlNT
dHJpbmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOworICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRk
cmVzc0tleSA9IG5pbDsKKworICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVO
dW1iZXI6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQaG9uZU51bWJlcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1h
aWxBZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkRW1haWxBZGRyZXNzKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxk
OjpOYW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BL
Q29udGFjdEZpZWxkTmFtZSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmV0aWNO
YW1lOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29u
dGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IAorICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0
YWxBZGRyZXNzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVs
ZDo6QWRkcmVzc0xpbmVzOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6
OkNvbnRhY3RGaWVsZDo6U3ViTG9jYWxpdHk6CisgICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9
IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7CisgICAgICAg
ICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXko
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkxvY2FsaXR5OgorICAgICAgICAgICAgcGtD
b250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVz
cygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0Np
dHlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2Ug
V2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBvc3RhbENvZGU6CisgICAgICAg
ICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtDb250YWN0RmllbGRQb3N0
YWxBZGRyZXNzKCk7CisgICAgICAgICAgICBwb3N0YWxBZGRyZXNzS2V5ID0gZ2V0Q05Qb3N0YWxB
ZGRyZXNzUG9zdGFsQ29kZUtleSgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAK
KyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6U3ViQWRt
aW5pc3RyYXRpdmVBcmVhOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9Q
YXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFs
QWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJlYUtleSgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBXZWJDb3Jl
OjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgorICAgICAg
ICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9z
dGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFs
QWRkcmVzc1N0YXRlS2V5KCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5Ogor
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENO
UG9zdGFsQWRkcmVzc0NvdW50cnlLZXkoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgCisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNv
dW50cnlDb2RlOgorICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0
X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOworICAgICAgICAgICAgcG9zdGFsQWRkcmVz
c0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0NvdW50cnlDb2RlS2V5KCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250
YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JDb250YWN0Rmll
bGRVc2VySW5mb0tleSgpXTsKKyAgICAgICAgaWYgKHBvc3RhbEFkZHJlc3NLZXkpCisgICAgICAg
ICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3RhbEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0
X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxBZGRyZXNzVXNlckluZm9LZXkoKV07CisgICAg
fQorCisgICAgcmV0dXJuIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpQQUw6OmdldF9QYXNzS2l0
X1BLUGF5bWVudEVycm9yRG9tYWluKCkgY29kZTp0b1BLUGF5bWVudEVycm9yQ29kZShlcnJvci5j
b2RlKSB1c2VySW5mbzp1c2VySW5mby5nZXQoKV07Cit9CisKK3N0YXRpYyBOU0FycmF5ICp0b05T
RXJyb3JzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCit7Cisg
ICAgTlNNdXRhYmxlQXJyYXkgKnJlc3VsdCA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBh
Y2l0eTplcnJvcnMuc2l6ZSgpXTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGVycm9yIDogZXJyb3Jz
KSB7CisgICAgICAgIGlmIChOU0Vycm9yICpuc0Vycm9yID0gdG9OU0Vycm9yKGVycm9yKSkKKyAg
ICAgICAgICAgIFtyZXN1bHQgYWRkT2JqZWN0Om5zRXJyb3JdOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisjZW5kaWYgLy8gSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKwor
I2lmICFIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorCitzdGF0aWMgUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoY29uc3QgT3B0
aW9uYWw8V2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQ+JiByZXN1bHQpCit7Cisg
ICAgaWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzU3VjY2VzczsKKworICAgIGlmIChyZXN1bHQtPmVycm9ycy5zaXplKCkgPT0gMSkgeworICAg
ICAgICBhdXRvJiBlcnJvciA9IHJlc3VsdC0+ZXJyb3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVy
cm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVu
a25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNz
VW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6
CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVs
ZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykK
KyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFs
aWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRB
dXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIHN3aXRjaCAocmVzdWx0LT5zdGF0dXMpIHsKKyAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpTdWNjZXNzOgorICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6RmFpbHVyZToKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXM6OlBJTlJlcXVpcmVkOgorICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0
aG9yaXphdGlvblN0YXR1c1BJTlJlcXVpcmVkOworICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1
dGhvcml6YXRpb25TdGF0dXM6OlBJTkluY29ycmVjdDoKKyAgICAgICAgcmV0dXJuIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXNQSU5JbmNvcnJlY3Q7CisgICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOTG9ja291dDoKKyAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNQSU5Mb2Nrb3V0OworICAgIH0KKworICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworc3RhdGljIFBLUGF5bWVu
dEF1dGhvcml6YXRpb25TdGF0dXMgdG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0
IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKK3sKKyAg
ICBpZiAoIXVwZGF0ZSB8fCB1cGRhdGUtPmVycm9ycy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKworICAgIGlmICh1cGRhdGUt
PmVycm9ycy5zaXplKCkgPT0gMSkgeworICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJy
b3JzWzBdOworICAgICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHsKKyAgICAgICAgY2FzZSBXZWJD
b3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlVua25vd246CisgICAgICAgIGNhc2UgV2ViQ29yZTo6
UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2aWNlYWJsZToKKyAgICAgICAgICAgIHJl
dHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKKworICAgICAgICBjYXNl
IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgorICAg
ICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGlu
Z1Bvc3RhbEFkZHJlc3M7CisKKyAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OlNoaXBwaW5nQ29udGFjdEludmFsaWQ6CisgICAgICAgICAgICBpZiAoZXJyb3IuY29udGFj
dEZpZWxkICYmIGVycm9yLmNvbnRhY3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6UG9zdGFsQWRkcmVzcykKKyAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7CisKKyAg
ICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBw
aW5nQ29udGFjdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQS1BheW1lbnRBdXRo
b3JpemF0aW9uU3RhdHVzRmFpbHVyZTsKK30KKworI2VuZGlmIC8vICFIQVZFKFBBU1NLSVRfR1JB
TlVMQVJfRVJST1JTKQorCitzdGF0aWMgTlNBcnJheSAqdG9QS1NoaXBwaW5nTWV0aG9kcyhjb25z
dCBWZWN0b3I8V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5n
TWV0aG9kPiYgc2hpcHBpbmdNZXRob2RzKQoreworICAgIE5TTXV0YWJsZUFycmF5ICpwa1NoaXBw
aW5nTWV0aG9kcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzaGlwcGluZ01l
dGhvZHMuc2l6ZSgpXTsKKyAgICBmb3IgKGF1dG8mIHNoaXBwaW5nTWV0aG9kIDogc2hpcHBpbmdN
ZXRob2RzKQorICAgICAgICBbcGtTaGlwcGluZ01ldGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGlu
Z01ldGhvZChzaGlwcGluZ01ldGhvZCldOworICAgIHJldHVybiBwa1NoaXBwaW5nTWV0aG9kczsK
K30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVNZXJjaGFu
dFZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UGF5bWVudE1lcmNoYW50U2Vzc2lvbiYgbWVyY2hh
bnRTZXNzaW9uKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIFtwbGF0
Zm9ybURlbGVnYXRlKCkgY29tcGxldGVNZXJjaGFudFZhbGlkYXRpb246bWVyY2hhbnRTZXNzaW9u
LnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpIGVycm9yOm5pbF07Cit9CisKK3ZvaWQgUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbihj
b25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50TWV0aG9kVXBkYXRlPiYgdXBkYXRlKQorewor
ICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVt
cyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRM
aW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1bW1hcnlJdGVtczsKKyAgICBbcGxhdGZv
cm1EZWxlZ2F0ZSgpIGNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbjpzdW1tYXJ5SXRlbXNd
OworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVBheW1l
bnRTZXNzaW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uUmVz
dWx0PiYgcmVzdWx0KQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworI2lmIEhB
VkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCisgICAgYXV0byBzdGF0dXMgPSByZXN1bHQgPyB0
b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMocmVzdWx0LT5zdGF0dXMpIDogUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3M7CisgICAgTlNBcnJheSAqZXJyb3JzID0gcmVzdWx0
ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykgOiBAWyBdOworI2Vsc2UKKyAgICBhdXRvIHN0
YXR1cyA9IHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhyZXN1bHQpOworICAgIE5TQXJy
YXkgKmVycm9ycyA9IEBbIF07CisjZW5kaWYKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBs
ZXRlUGF5bWVudFNlc3Npb246c3RhdHVzIGVycm9yczplcnJvcnMgZGlkUmVhY2hGaW5hbFN0YXRl
OldlYkNvcmU6OmlzRmluYWxTdGF0ZVJlc3VsdChyZXN1bHQpXTsKK30KKwordm9pZCBQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24o
Y29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2hpcHBpbmdDb250YWN0VXBkYXRlPiYgdXBkYXRlKQor
eworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOworICAgIE5TQXJyYXkgKnNoaXBwaW5n
TWV0aG9kcyA9IHVwZGF0ZSA/IHRvUEtTaGlwcGluZ01ldGhvZHModXBkYXRlLT5uZXdTaGlwcGlu
Z01ldGhvZHMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnNoaXBwaW5nTWV0aG9kczsKKyAgICBOU0Fy
cmF5ICpzdW1tYXJ5SXRlbXMgPSB1cGRhdGUgPyB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRh
dGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKSA6IHBsYXRmb3JtRGVsZWdhdGUoKS5zdW1tYXJ5SXRl
bXM7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKKyAgICBOU0FycmF5ICplcnJv
cnMgPSB1cGRhdGUgPyB0b05TRXJyb3JzKHVwZGF0ZS0+ZXJyb3JzKSA6IEBbIF07CisgICAgYXV0
byBzdGF0dXMgPSBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKKyNlbHNlCisg
ICAgTlNBcnJheSAqZXJyb3JzID0gQFsgXTsKKyAgICBhdXRvIHN0YXR1cyA9IHRvUEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1cyh1cGRhdGUpOworI2VuZGlmCisgICAgW3BsYXRmb3JtRGVsZWdh
dGUoKSBjb21wbGV0ZVNoaXBwaW5nQ29udGFjdFNlbGVjdGlvbjpzdGF0dXMgc3VtbWFyeUl0ZW1z
OnN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6c2hpcHBpbmdNZXRob2RzIGVycm9yczplcnJv
cnNdOworfQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyOjpjb21wbGV0ZVNo
aXBwaW5nTWV0aG9kU2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0
aG9kVXBkYXRlPiYgdXBkYXRlKQoreworICAgIEFTU0VSVChwbGF0Zm9ybURlbGVnYXRlKCkpOwor
ICAgIE5TQXJyYXkgKnN1bW1hcnlJdGVtcyA9IHVwZGF0ZSA/IHRvUEtQYXltZW50U3VtbWFyeUl0
ZW1zKHVwZGF0ZS0+bmV3VG90YWxBbmRMaW5lSXRlbXMpIDogcGxhdGZvcm1EZWxlZ2F0ZSgpLnN1
bW1hcnlJdGVtczsKKyAgICBbcGxhdGZvcm1EZWxlZ2F0ZSgpIGNvbXBsZXRlU2hpcHBpbmdNZXRo
b2RTZWxlY3Rpb246c3VtbWFyeUl0ZW1zXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTNkMzQ3OGFjOTJmYjdhNmZhZWYyNzJhYmY2ZmJmNzU2ZGQyYjQ3YwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW5jbHVkZSAiUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCIKKyNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisKK09CSkNf
Q0xBU1MgUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOworT0JKQ19DTEFTUyBQ
S1BheW1lbnRSZXF1ZXN0OworT0JKQ19DTEFTUyBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdh
dGU7CitPQkpDX0NMQVNTIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVn
YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk7CisKK2NsYXNzIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgZmluYWwg
OiBwdWJsaWMgUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIgeworcHVibGljOgorICAgIFBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIoUGF5bWVudEF1dGhvcml6YXRpb25QcmVz
ZW50ZXI6OkNsaWVudCYsIFBLUGF5bWVudFJlcXVlc3QgKiwgUEtQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyICogPSBuaWwpOworCitwcml2YXRlOgorICAgIC8vIFBheW1lbnRBdXRo
b3JpemF0aW9uUHJlc2VudGVyCisgICAgV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpw
bGF0Zm9ybURlbGVnYXRlKCkgZmluYWw7CisgICAgdm9pZCBkaXNtaXNzKCkgZmluYWw7CisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIHByZXNlbnQoVUlWaWV3Q29udHJvbGxlciAq
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKKyNlbmRpZgorCisgICAg
UmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcj4gbV92aWV3Q29u
dHJvbGxlcjsKKyAgICBSZXRhaW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGU+IG1fZGVsZWdhdGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFVTRShQQVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9y
bS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9jb2NvYS9QYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjk4M2I3ODMwNGNlODgxZTBlZjY2ZTkyZmU1NWIyNzhjYWIzYTBmYWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIubW0KQEAgLTAsMCArMSwxNzAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIuaCIKKworI2lmIFVTRShQQVNTS0lUKQorCisjaW1wb3J0ICJXS1BheW1lbnRBdXRo
b3JpemF0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExpbmsu
aD4KKworQGludGVyZmFjZSBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZSA6IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSA8UEtQYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlclByaXZhdGVEZWxlZ2F0ZT4KKworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUmVxdWVz
dDooUEtQYXltZW50UmVxdWVzdCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRB
dXRob3JpemF0aW9uUHJlc2VudGVyJilwcmVzZW50ZXI7CisKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlCisKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFJlcXVlc3Q6KFBLUGF5bWVudFJlcXVlc3QgKilyZXF1ZXN0IHBy
ZXNlbnRlcjooV2ViS2l0OjpQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYpcHJlc2VudGVy
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBfaW5pdFdpdGhSZXF1ZXN0OnJlcXVlc3QgcHJl
c2VudGVyOnByZXNlbnRlcl0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKKyNwcmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZQorCistICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
aWRGaW5pc2g6KFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xs
ZXIKK3sKKyAgICBbc2VsZiBfZGlkRmluaXNoXTsKK30KKworI2lmIEhBVkUoUEFTU0tJVF9HUkFO
VUxBUl9FUlJPUlMpCisKKy0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxl
cjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRB
dXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGhhbmRsZXI6KHZvaWQgKF4pKFBL
UGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbgoreworICAgIFtz
ZWxmIF9kaWRBdXRob3JpemVQYXltZW50OnBheW1lbnQgY29tcGxldGlvbjpjb21wbGV0aW9uXTsK
K30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBw
aW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgaGFuZGxlcjoodm9p
ZCAoXikoUEtQYXltZW50UmVxdWVzdFNoaXBwaW5nTWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBs
ZXRpb24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2Q6c2hpcHBpbmdNZXRo
b2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIg
Kiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtDb250YWN0ICopY29udGFj
dCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRl
ICp1cGRhdGUpKWNvbXBsZXRpb24KK3sKKyAgICBbc2VsZiBfZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0OmNvbnRhY3QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsKK30KKworLSAodm9pZClwYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1l
dGhvZCAqKXBheW1lbnRNZXRob2QgaGFuZGxlcjoodm9pZCAoXikoUEtQYXltZW50UmVxdWVzdFBh
eW1lbnRNZXRob2RVcGRhdGUgKnVwZGF0ZSkpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRT
ZWxlY3RQYXltZW50TWV0aG9kOnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsK
K30KKworI2Vsc2UKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
OihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZEF1
dGhvcml6ZVBheW1lbnQ6KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjoodm9pZCheKShQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKSljb21wbGV0aW9uCit7CisgICAgW3NlbGYgX2Rp
ZEF1dGhvcml6ZVBheW1lbnQ6cGF5bWVudCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCist
ICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2Q6KFBLU2hpcHBpbmdNZXRob2QgKilzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4p
KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0
ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZDpzaGlwcGluZ01ldGhvZCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lkKXBh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0OihQS0Nv
bnRhY3QgKiljb250YWN0IGNvbXBsZXRpb246KHZvaWQoXikoUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cywgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+ICosIE5TQXJyYXk8UEtQYXltZW50
U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRTZWxlY3RTaGlw
cGluZ0NvbnRhY3Q6Y29udGFjdCBjb21wbGV0aW9uOmNvbXBsZXRpb25dOworfQorCistICh2b2lk
KXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkU2VsZWN0UGF5bWVudE1ldGhvZDooUEtQ
YXltZW50TWV0aG9kICopcGF5bWVudE1ldGhvZCBjb21wbGV0aW9uOih2b2lkKF4pKE5TQXJyYXk8
UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKikpY29tcGxldGlvbgoreworICAgIFtzZWxmIF9kaWRT
ZWxlY3RQYXltZW50TWV0aG9kOnBheW1lbnRNZXRob2QgY29tcGxldGlvbjpjb21wbGV0aW9uXTsK
K30KKworI2VuZGlmCisKKyNwcmFnbWEgbWFyayBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0Nv
bnRyb2xsZXJEZWxlZ2F0ZVByaXZhdGUKKworLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250
cm9sbGVyIHdpbGxGaW5pc2hXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIFtzZWxm
IF93aWxsRmluaXNoV2l0aEVycm9yOmVycm9yXTsKK30KKworLSAodm9pZClwYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXIgKiljb250cm9sbGVyIGRpZFJlcXVlc3RNZXJjaGFudFNlc3Npb246KHZvaWQoXikoUEtQYXlt
ZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3IgKikpY29tcGxldGlvbgoreworICAgIFtzZWxm
IF9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOmNvbXBsZXRpb25dOworfQorCitAZW5kCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgUmV0YWluUHRyPFBLUGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlcj4gcGxhdGZvcm1WaWV3Q29udHJvbGxlcihQS1BheW1lbnRSZXF1ZXN0
ICpyZXF1ZXN0LCBQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKnZpZXdDb250
cm9sbGVyKQoreworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgQVNTRVJUKCF2aWV3Q29u
dHJvbGxlcik7CisgICAgcmV0dXJuIGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJJbnN0YW5jZSgpIGluaXRXaXRoUGF5bWVudFJlcXVlc3Q6cmVx
dWVzdF0pOworI2Vsc2UKKyAgICByZXR1cm4gdmlld0NvbnRyb2xsZXI7CisjZW5kaWYKK30KKwor
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjo6UGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlcihQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcjo6Q2xpZW50JiBjbGll
bnQsIFBLUGF5bWVudFJlcXVlc3QgKnJlcXVlc3QsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlciAqdmlld0NvbnRyb2xsZXIpCisgICAgOiBQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlcihjbGllbnQpCisgICAgLCBtX3ZpZXdDb250cm9sbGVyKHBsYXRmb3JtVmlld0NvbnRy
b2xsZXIocmVxdWVzdCwgdmlld0NvbnRyb2xsZXIpKQorICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5T
KFtbV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGlu
aXRXaXRoUmVxdWVzdDpyZXF1ZXN0IHByZXNlbnRlcjoqdGhpc10pKQoreworICAgIFttX3ZpZXdD
b250cm9sbGVyIHNldERlbGVnYXRlOm1fZGVsZWdhdGUuZ2V0KCldOworICAgIFttX3ZpZXdDb250
cm9sbGVyIHNldFByaXZhdGVEZWxlZ2F0ZTptX2RlbGVnYXRlLmdldCgpXTsKK30KKworV0tQYXlt
ZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlICpQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyOjpwbGF0Zm9ybURlbGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsK
K30KKwordm9pZCBQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOjpkaXNtaXNzKCkK
K3sKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtbbV92aWV3Q29udHJvbGxlciBwcmVz
ZW50aW5nVmlld0NvbnRyb2xsZXJdIGRpc21pc3NWaWV3Q29udHJvbGxlckFuaW1hdGVkOllFUyBj
b21wbGV0aW9uOm51bGxwdHJdOworI2VuZGlmCisgICAgW21fdmlld0NvbnRyb2xsZXIgc2V0RGVs
ZWdhdGU6bmlsXTsKKyAgICBbbV92aWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmls
XTsKKyAgICBtX3ZpZXdDb250cm9sbGVyID0gbmlsOworICAgIFttX2RlbGVnYXRlIGludmFsaWRh
dGVdOworICAgIG1fZGVsZWdhdGUgPSBuaWw7Cit9CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZ
KQorCit2b2lkIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6OnByZXNlbnQoVUlW
aWV3Q29udHJvbGxlciAqcHJlc2VudGluZ1ZpZXdDb250cm9sbGVyLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghcHJlc2VudGlu
Z1ZpZXdDb250cm9sbGVyIHx8ICFtX3ZpZXdDb250cm9sbGVyKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoZmFsc2UpOworCisgICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBw
cmVzZW50Vmlld0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKSBhbmltYXRlZDpZRVMg
Y29tcGxldGlvbjpudWxscHRyXTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKK30KKwor
I2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKFBBU1NLSVQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL2NvY29hL1dLUGF5bWVudEF1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1l
bnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZTE2YmFhZjhhMmQ3NDcxZDFh
MmE4YmIxNGU4OTU1NjVhZGI1N2ZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUuaApAQCAtMCwwICsx
LDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWYgVVNFKFBBU1NLSVQpCisKKyNpbXBvcnQgPHBh
bC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisKK09C
SkNfQ0xBU1MgTlNBcnJheTsKK09CSkNfQ0xBU1MgTlNFcnJvcjsKK09CSkNfQ0xBU1MgVUlWaWV3
Q29udHJvbGxlcjsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyOworCit1c2luZyBEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29tcGxl
dGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50TWVyY2hhbnRTZXNzaW9uICosIE5TRXJyb3Ig
Kik+OworCisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9SUykKK3VzaW5nIERpZEF1dGhv
cml6ZVBheW1lbnRDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0
aW9uUmVzdWx0ICopPjsKK3VzaW5nIERpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0g
QmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZSAqKT47Cit1
c2luZyBEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uID0gQmxvY2tQdHI8dm9pZChQ
S1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlICopPjsKK3VzaW5nIERpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50UmVxdWVz
dFNoaXBwaW5nTWV0aG9kVXBkYXRlICopPjsKKyNlbHNlCit1c2luZyBEaWRBdXRob3JpemVQYXlt
ZW50Q29tcGxldGlvbiA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cyk+OwordXNpbmcgRGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gPSBCbG9ja1B0cjx2
b2lkKE5TQXJyYXkgKik+OwordXNpbmcgRGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlv
biA9IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAq
LCBOU0FycmF5ICopPjsKK3VzaW5nIERpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9
IEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cywgTlNBcnJheSAqKT47
CisjZW5kaWYKKworfQorCitAaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSA6IE5TT2JqZWN0CisKKy0gKGluc3RhbmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCitA
cHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZGlkUmVhY2hGaW5hbFN0YXRlOwor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJ
dGVtICo+ICpzdW1tYXJ5SXRlbXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
QXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqc2hpcHBpbmdNZXRob2RzOworCistICh2b2lkKWNv
bXBsZXRlTWVyY2hhbnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNz
aW9uIGVycm9yOihOU0Vycm9yICopZXJyb3I7CistICh2b2lkKWNvbXBsZXRlUGF5bWVudE1ldGhv
ZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVt
czsKKy0gKHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlv
blN0YXR1cylzdGF0dXMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMgZGlkUmVh
Y2hGaW5hbFN0YXRlOihCT09MKWRpZFJlYWNoRmluYWxTdGF0ZTsKKy0gKHZvaWQpY29tcGxldGVT
aGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3Rh
dHVzIHN1bW1hcnlJdGVtczooTlNBcnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1h
cnlJdGVtcyBzaGlwcGluZ01ldGhvZHM6KE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNo
aXBwaW5nTWV0aG9kcyBlcnJvcnM6KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9yczsKKy0gKHZv
aWQpY29tcGxldGVTaGlwcGluZ01ldGhvZFNlbGVjdGlvbjooTlNBcnJheTxQS1BheW1lbnRTdW1t
YXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtczsKKy0gKHZvaWQpaW52YWxpZGF0ZTsKKworQGVuZAor
CisvLyBIZWxwZXIgbWV0aG9kcyBjYWxsZWQgYnkgV0tQYXltZW50QXV0aG9yaXphdGlvblNlc3Np
b24ncyBzdWJjbGFzc2VzCitAaW50ZXJmYWNlIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0
ZSAoUHJvdGVjdGVkKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUmVxdWVzdDooUEtQYXlt
ZW50UmVxdWVzdCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0
aW9uUHJlc2VudGVyJilwcmVzZW50ZXI7CisKKy0gKHZvaWQpX2RpZEF1dGhvcml6ZVBheW1lbnQ6
KFBLUGF5bWVudCAqKXBheW1lbnQgY29tcGxldGlvbjooV2ViS2l0OjpEaWRBdXRob3JpemVQYXlt
ZW50Q29tcGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRGaW5pc2g7
CistICh2b2lkKV9kaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOihXZWJLaXQ6OkRpZFJlcXVlc3RN
ZXJjaGFudFNlc3Npb25Db21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQp
X2RpZFNlbGVjdFBheW1lbnRNZXRob2Q6KFBLUGF5bWVudE1ldGhvZCAqKXBheW1lbnRNZXRob2Qg
Y29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjo6Qmxv
Y2tUeXBlKWNvbXBsZXRpb247CistICh2b2lkKV9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3Q6KFBL
Q29udGFjdCAqKWNvbnRhY3QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ0Nv
bnRhY3RDb21wbGV0aW9uOjpCbG9ja1R5cGUpY29tcGxldGlvbjsKKy0gKHZvaWQpX2RpZFNlbGVj
dFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICopc2hpcHBpbmdNZXRob2QgY29tcGxl
dGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRpb246OkJsb2NrVHlw
ZSljb21wbGV0aW9uOworLSAodm9pZClfd2lsbEZpbmlzaFdpdGhFcnJvcjooTlNFcnJvciAqKWVy
cm9yOworCitAZW5kCisKKyNlbmRpZiAvLyBVU0UoUEFTU0tJVCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1t
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0YzU1NGFjNTc4OGIxZDIyNzAyNmZiYTIwNmJiNWVlNjYz
MTFkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vY29jb2EvV0tQ
YXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tCkBAIC0wLDAgKzEsMjI1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLUGF5bWVudEF1dGhvcml6
YXRpb25EZWxlZ2F0ZS5oIgorCisjaWYgVVNFKFBBU1NLSVQpCisKKyNpbXBvcnQgPFdlYkNvcmUv
UGF5bWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9QYXltZW50TWV0aG9kLmg+CisKK0BpbXBsZW1l
bnRhdGlvbiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVsZWdhdGUgeworICAgIFJldGFpblB0cjxO
U0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+PiBfc3VtbWFyeUl0ZW1zOworICAgIFJldGFp
blB0cjxOU0FycmF5PFBLU2hpcHBpbmdNZXRob2QgKj4+IF9zaGlwcGluZ01ldGhvZHM7CisgICAg
V2Vha1B0cjxXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBfcHJlc2VudGVy
OworICAgIFdlYktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb24gX2RpZEF1dGhvcml6
ZVBheW1lbnRDb21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lv
bkNvbXBsZXRpb24gX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uOworICAgIFdl
YktpdDo6RGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb24gX2RpZFNlbGVjdFBheW1lbnRN
ZXRob2RDb21wbGV0aW9uOworICAgIFdlYktpdDo6RGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29t
cGxldGlvbiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKKyAgICBXZWJLaXQ6
OkRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiBfZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2RDb21wbGV0aW9uOworfQorCistIChOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVtICo+ICop
c3VtbWFyeUl0ZW1zCit7CisgICAgcmV0dXJuIF9zdW1tYXJ5SXRlbXMuZ2V0KCk7Cit9CisKKy0g
KE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kcworeworICAgIHJl
dHVybiBfc2hpcHBpbmdNZXRob2RzLmdldCgpOworfQorCistICh2b2lkKWNvbXBsZXRlTWVyY2hh
bnRWYWxpZGF0aW9uOihQS1BheW1lbnRNZXJjaGFudFNlc3Npb24gKilzZXNzaW9uIGVycm9yOihO
U0Vycm9yICopZXJyb3IKK3sKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRSZXF1ZXN0TWVyY2hhbnRT
ZXNzaW9uQ29tcGxldGlvbiwgbmlsKShzZXNzaW9uLCBlcnJvcik7Cit9CisKKy0gKHZvaWQpY29t
cGxldGVQYXltZW50TWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1hcnlJdGVt
ICo+ICopc3VtbWFyeUl0ZW1zCit7CisgICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJdGVtczsK
KyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIGF1dG8gdXBkYXRlID0gYWRv
cHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlSW5zdGFu
Y2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6X3N1bW1hcnlJdGVtcy5nZXQoKV0pOwor
ICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uLCBuaWwp
KHVwZGF0ZS5nZXQoKSk7CisjZWxzZQorICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZFNlbGVjdFBheW1l
bnRNZXRob2RDb21wbGV0aW9uLCBuaWwpKF9zdW1tYXJ5SXRlbXMpOworI2VuZGlmCit9CisKKy0g
KHZvaWQpY29tcGxldGVQYXltZW50U2Vzc2lvbjooUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
cylzdGF0dXMgZXJyb3JzOihOU0FycmF5PE5TRXJyb3IgKj4gKillcnJvcnMgZGlkUmVhY2hGaW5h
bFN0YXRlOihCT09MKWRpZFJlYWNoRmluYWxTdGF0ZQoreworICAgIF9kaWRSZWFjaEZpbmFsU3Rh
dGUgPSBkaWRSZWFjaEZpbmFsU3RhdGU7CisjaWYgSEFWRShQQVNTS0lUX0dSQU5VTEFSX0VSUk9S
UykKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3Jp
emF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0aFN0YXR1czpzdGF0dXMgZXJyb3JzOmVycm9y
c10pOworICAgIHN0ZDo6ZXhjaGFuZ2UoX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uLCBu
aWwpKHJlc3VsdC5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVCghZXJyb3JzLmNvdW50KTsKKyAg
ICBzdGQ6OmV4Y2hhbmdlKF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiwgbmlsKShzdGF0
dXMpOworI2VuZGlmCit9CisKKy0gKHZvaWQpY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rp
b246KFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMpc3RhdHVzIHN1bW1hcnlJdGVtczooTlNB
cnJheTxQS1BheW1lbnRTdW1tYXJ5SXRlbSAqPiAqKXN1bW1hcnlJdGVtcyBzaGlwcGluZ01ldGhv
ZHM6KE5TQXJyYXk8UEtTaGlwcGluZ01ldGhvZCAqPiAqKXNoaXBwaW5nTWV0aG9kcyBlcnJvcnM6
KE5TQXJyYXk8TlNFcnJvciAqPiAqKWVycm9ycworeworICAgIF9zdW1tYXJ5SXRlbXMgPSBzdW1t
YXJ5SXRlbXM7CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IHNoaXBwaW5nTWV0aG9kczsKKyNpZiBI
QVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIEFTU0VSVChzdGF0dXMgPT0gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c1N1Y2Nlc3MpOworICAgIGF1dG8gdXBkYXRlID0gYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ0NvbnRhY3RVcGRhdGVJbnN0YW5j
ZSgpIGluaXRXaXRoRXJyb3JzOmVycm9ycyBwYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRl
bXMuZ2V0KCkgc2hpcHBpbmdNZXRob2RzOl9zaGlwcGluZ01ldGhvZHMuZ2V0KCldKTsKKyAgICBz
dGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBuaWwpKHVw
ZGF0ZS5nZXQoKSk7CisjZWxzZQorICAgIEFTU0VSVCghZXJyb3JzLmNvdW50KTsKKyAgICBzdGQ6
OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RDb21wbGV0aW9uLCBuaWwpKHN0YXR1
cywgX3NoaXBwaW5nTWV0aG9kcywgX3N1bW1hcnlJdGVtcyk7CisjZW5kaWYKK30KKworLSAodm9p
ZCljb21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9uOihOU0FycmF5PFBLUGF5bWVudFN1bW1h
cnlJdGVtICo+ICopc3VtbWFyeUl0ZW1zCit7CisgICAgX3N1bW1hcnlJdGVtcyA9IHN1bW1hcnlJ
dGVtczsKKyNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQorICAgIGF1dG8gdXBkYXRl
ID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0
ZUluc3RhbmNlKCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOl9zdW1tYXJ5SXRlbXMuZ2V0
KCldKTsKKyAgICBzdGQ6OmV4Y2hhbmdlKF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENvbXBsZXRp
b24sIG5pbCkodXBkYXRlLmdldCgpKTsKKyNlbHNlCisgICAgc3RkOjpleGNoYW5nZShfZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uLCBuaWwpKFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNTdWNjZXNzLCBfc3VtbWFyeUl0ZW1zKTsKKyNlbmRpZgorfQorCistICh2b2lkKWludmFs
aWRhdGUKK3sKKyAgICBpZiAoX2RpZEF1dGhvcml6ZVBheW1lbnRDb21wbGV0aW9uKQorICAgICAg
ICBbc2VsZiBjb21wbGV0ZVBheW1lbnRTZXNzaW9uOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0
dXNGYWlsdXJlIGVycm9yczpAW10gZGlkUmVhY2hGaW5hbFN0YXRlOllFU107Cit9CisKK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZSAoUHJvdGVj
dGVkKQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoUmVxdWVzdDooUEtQYXltZW50UmVxdWVz
dCAqKXJlcXVlc3QgcHJlc2VudGVyOihXZWJLaXQ6OlBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyJilwcmVzZW50ZXIKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIF9zdW1tYXJ5SXRlbXMgPSByZXF1ZXN0LnBheW1lbnRTdW1t
YXJ5SXRlbXM7CisgICAgX3NoaXBwaW5nTWV0aG9kcyA9IHJlcXVlc3Quc2hpcHBpbmdNZXRob2Rz
OworICAgIF9wcmVzZW50ZXIgPSBtYWtlV2Vha1B0cihwcmVzZW50ZXIpOworICAgIHJldHVybiBz
ZWxmOworfQorCistICh2b2lkKV9kaWRBdXRob3JpemVQYXltZW50OihQS1BheW1lbnQgKilwYXlt
ZW50IGNvbXBsZXRpb246KFdlYktpdDo6RGlkQXV0aG9yaXplUGF5bWVudENvbXBsZXRpb246OkJs
b2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkQXV0aG9yaXplUGF5bWVudENv
bXBsZXRpb24pOworICAgIF9kaWRBdXRob3JpemVQYXltZW50Q29tcGxldGlvbiA9IGNvbXBsZXRp
b247CisKKyAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0KCk7CisgICAgaWYgKCFw
cmVzZW50ZXIpCisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVBheW1lbnRTZXNzaW9uOlBL
UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9yczpAWyBdIGRpZFJlYWNoRmlu
YWxTdGF0ZTpZRVNdOworCisgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJEaWRBdXRo
b3JpemVQYXltZW50KCpwcmVzZW50ZXIsIFdlYkNvcmU6OlBheW1lbnQocGF5bWVudCkpOworfQor
CistICh2b2lkKV9kaWRGaW5pc2gKK3sKKyAgICBpZiAoYXV0byBwcmVzZW50ZXIgPSBfcHJlc2Vu
dGVyLmdldCgpKQorICAgICAgICBwcmVzZW50ZXItPmNsaWVudCgpLnByZXNlbnRlckRpZEZpbmlz
aCgqcHJlc2VudGVyLCBfZGlkUmVhY2hGaW5hbFN0YXRlKTsKK30KKworLSAodm9pZClfZGlkUmVx
dWVzdE1lcmNoYW50U2Vzc2lvbjooV2ViS2l0OjpEaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uQ29t
cGxldGlvbjo6QmxvY2tUeXBlKWNvbXBsZXRpb24KK3sKKyAgICBBU1NFUlQoIV9kaWRSZXF1ZXN0
TWVyY2hhbnRTZXNzaW9uQ29tcGxldGlvbik7CisgICAgX2RpZFJlcXVlc3RNZXJjaGFudFNlc3Np
b25Db21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIFtQQUw6OmdldFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNlcnZpY2VzTWVyY2hhbnRVUkw6
XihOU1VSTCAqbWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5bWVudHNXaXRoTWVyY2hhbnRJ
ZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOworCisgICAgICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CisgICAgICAgICAgICBBU1NFUlQo
X2RpZFJlcXVlc3RNZXJjaGFudFNlc3Npb25Db21wbGV0aW9uKTsKKworICAgICAgICAgICAgYXV0
byBwcmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAgICAgICAgICAgaWYgKCFwcmVzZW50
ZXIpIHsKKyAgICAgICAgICAgICAgICBfZGlkUmVxdWVzdE1lcmNoYW50U2Vzc2lvbkNvbXBsZXRp
b24obmlsLCBuaWwpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJj
aGFudCgqcHJlc2VudGVyLCBtZXJjaGFudFVSTCk7CisgICAgICAgIH0pOworICAgIH1dOworfQor
CistICh2b2lkKV9kaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRob2QgKilwYXlt
ZW50TWV0aG9kIGNvbXBsZXRpb246KFdlYktpdDo6RGlkU2VsZWN0UGF5bWVudE1ldGhvZENvbXBs
ZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkU2VsZWN0UGF5
bWVudE1ldGhvZENvbXBsZXRpb24pOworICAgIF9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxl
dGlvbiA9IGNvbXBsZXRpb247CisKKyAgICBhdXRvIHByZXNlbnRlciA9IF9wcmVzZW50ZXIuZ2V0
KCk7CisgICAgaWYgKCFwcmVzZW50ZXIpCisgICAgICAgIHJldHVybiBbc2VsZiBjb21wbGV0ZVBh
eW1lbnRNZXRob2RTZWxlY3Rpb246QFsgXV07CisKKyAgICBwcmVzZW50ZXItPmNsaWVudCgpLnBy
ZXNlbnRlckRpZFNlbGVjdFBheW1lbnRNZXRob2QoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVu
dE1ldGhvZChwYXltZW50TWV0aG9kKSk7Cit9CisKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOihXZWJLaXQ6OkRpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAg
QVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7CisgICAgX2RpZFNl
bGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOworCisgICAgYXV0byBw
cmVzZW50ZXIgPSBfcHJlc2VudGVyLmdldCgpOworICAgIGlmICghcHJlc2VudGVyKQorICAgICAg
ICByZXR1cm4gW3NlbGYgY29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb246UEtQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmUgc3VtbWFyeUl0ZW1zOkBbIF0gc2hpcHBpbmdNZXRo
b2RzOkBbIF0gZXJyb3JzOkBbIF1dOworCisgICAgcHJlc2VudGVyLT5jbGllbnQoKS5wcmVzZW50
ZXJEaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoKnByZXNlbnRlciwgV2ViQ29yZTo6UGF5bWVudENv
bnRhY3QoY29udGFjdCkpOworfQorCitzdGF0aWMgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5
bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHRvU2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01l
dGhvZCAqc2hpcHBpbmdNZXRob2QpCit7CisgICAgQVNTRVJUKHNoaXBwaW5nTWV0aG9kKTsKKwor
ICAgIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhv
ZCByZXN1bHQ7CisgICAgcmVzdWx0LmFtb3VudCA9IHNoaXBwaW5nTWV0aG9kLmFtb3VudC5zdHJp
bmdWYWx1ZTsKKyAgICByZXN1bHQuZGV0YWlsID0gc2hpcHBpbmdNZXRob2QuZGV0YWlsOworICAg
IHJlc3VsdC5pZGVudGlmaWVyID0gc2hpcHBpbmdNZXRob2QuaWRlbnRpZmllcjsKKyAgICByZXN1
bHQubGFiZWwgPSBzaGlwcGluZ01ldGhvZC5sYWJlbDsKKworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKy0gKHZvaWQpX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kOihQS1NoaXBwaW5nTWV0aG9kICop
c2hpcHBpbmdNZXRob2QgY29tcGxldGlvbjooV2ViS2l0OjpEaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZENvbXBsZXRpb246OkJsb2NrVHlwZSljb21wbGV0aW9uCit7CisgICAgQVNTRVJUKCFfZGlkU2Vs
ZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uKTsKKyAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRo
b2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKKworICAgIGF1dG8gcHJlc2VudGVyID0gX3ByZXNl
bnRlci5nZXQoKTsKKyAgICBpZiAoIXByZXNlbnRlcikKKyAgICAgICAgcmV0dXJuIFtzZWxmIGNv
bXBsZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb246QFsgXV07CisKKyAgICBwcmVzZW50ZXItPmNs
aWVudCgpLnByZXNlbnRlckRpZFNlbGVjdFNoaXBwaW5nTWV0aG9kKCpwcmVzZW50ZXIsIHRvU2hp
cHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKK30KKworLSAodm9pZClfd2lsbEZpbmlzaFdp
dGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFVTRShQ
QVNTS0lUKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuY3BwCmluZGV4IGI0NzQ1ZTJlYjA4YzZjZTQzMjUx
MWU4NTMyYjcyMWJiODhiMjk1ZWYuLmE2OTVjNjc0NGVjYjljMjM2NzMwN2EyZjViNGZjY2JiN2I4
YTdmZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1l
bnRDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBh
eS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpCiAg
ICAgZGlkUmVhY2hGaW5hbFN0YXRlKCk7CiB9CiAKLXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnZhbGlkYXRlTWVyY2hhbnQoY29uc3QgVVJMJiB1cmwpCit2b2lkIFdlYlBheW1lbnRD
b29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJXaWxsVmFsaWRhdGVNZXJjaGFudChQYXltZW50QXV0
aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFVSTCYgdXJsKQogewogICAgIEFTU0VSVChtX21l
cmNoYW50VmFsaWRhdGlvblN0YXRlID09IE1lcmNoYW50VmFsaWRhdGlvblN0YXRlOjpJZGxlKTsK
IApAQCAtMjM4LDEzICsyMzgsMjAgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
dmFsaWRhdGVNZXJjaGFudChjb25zdCBVUkwmIHVybCkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YXltZW50Q29vcmRpbmF0b3I6OlZhbGlkYXRlTWVyY2hhbnQodXJsLnN0cmluZygpKSk7CiB9CiAK
LXZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OmRpZEF1dGhvcml6ZVBheW1lbnQoY29u
c3QgV2ViQ29yZTo6UGF5bWVudCYgcGF5bWVudCkKK3ZvaWQgV2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHk6OnByZXNlbnRlckRpZEF1dGhvcml6ZVBheW1lbnQoUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXltZW50JiBwYXltZW50KQogewogICAgIG1fc3Rh
dGUgPSBTdGF0ZTo6QXV0aG9yaXplZDsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29v
cmRpbmF0b3I6OkRpZEF1dGhvcml6ZVBheW1lbnQocGF5bWVudCkpOwogfQogCi12b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ01ldGhvZChjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmIHNoaXBw
aW5nTWV0aG9kKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cHJlc2VudGVyRGlk
RmluaXNoKFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyJiwgYm9vbCBkaWRSZWFjaEZpbmFs
U3RhdGUpCit7CisgICAgaWYgKCFkaWRSZWFjaEZpbmFsU3RhdGUpCisgICAgICAgIGRpZENhbmNl
bFBheW1lbnRTZXNzaW9uKCk7CisgICAgaGlkZVBheW1lbnRVSSgpOworfQorCit2b2lkIFdlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ01ldGhvZChQ
YXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vz
c2lvblBheW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCYgc2hpcHBpbmdNZXRob2QpCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKQEAgLTI1Miw3ICsyNTksNyBA
QCB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpkaWRTZWxlY3RTaGlwcGluZ01ldGhv
ZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBheW1lbnRD
b29yZGluYXRvcjo6RGlkU2VsZWN0U2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKIH0K
IAotdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdDb250
YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1lbnRDb250YWN0JiBzaGlwcGluZ0NvbnRhY3QpCit2b2lk
IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwcmVzZW50ZXJEaWRTZWxlY3RTaGlwcGluZ0Nv
bnRhY3QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJDb3JlOjpQYXlt
ZW50Q29udGFjdCYgc2hpcHBpbmdDb250YWN0KQogewogICAgIEFTU0VSVChtX3N0YXRlID09IFN0
YXRlOjpBY3RpdmUpOwogCkBAIC0yNjAsNyArMjY3LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KGNvbnN0IFdlYkNvcmU6OlBheW1l
bnQKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYXltZW50Q29vcmRpbmF0b3I6OkRpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdChzaGlwcGluZ0NvbnRhY3QpKTsKIH0KIAotdm9pZCBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eTo6ZGlkU2VsZWN0UGF5bWVudE1ldGhvZChjb25zdCBXZWJDb3JlOjpQYXlt
ZW50TWV0aG9kJiBwYXltZW50TWV0aG9kKQordm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eTo6cHJlc2VudGVyRGlkU2VsZWN0UGF5bWVudE1ldGhvZChQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnRNZXRob2QmIHBheW1lbnRNZXRob2QpCiB7
CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94
eS5oCmluZGV4IGMxOWIxMmJhM2U4MDRiYWZhMjYwMmM4MWNkMGU5MDQ3ZDM0OTNlNTcuLmNhYTVm
OTVlY2FjZTZiODE4MmI3OGY2YTM5NTcyZDVmOTZlZTllZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FwcGxlUGF5L1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHku
aApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZVNlbmRlci5oIgorI2luY2x1ZGUgIlBheW1lbnRBdXRob3JpemF0aW9uUHJl
c2VudGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9QYXltZW50SGVhZGVycy5oPgogI2luY2x1ZGUg
PHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtNTYsMTMgKzU3
LDE2IEBAIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CiBPQkpDX0NMQVNTIFBLUGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjsKIE9CSkNfQ0xBU1MgUEtQYXltZW50UmVxdWVzdDsKIE9CSkNf
Q0xBU1MgVUlWaWV3Q29udHJvbGxlcjsKLU9CSkNfQ0xBU1MgV0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBX
ZWJQYWdlUHJveHk7CiAKLWNsYXNzIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5IDogcHJpdmF0
ZSBJUEM6Ok1lc3NhZ2VSZWNlaXZlciwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VTZW5kZXIsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eT4geworY2xhc3MgV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHkKKyAgICA6IHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIKKyAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlU2VuZGVyCisgICAgLCBwdWJsaWMgQ2FuTWFr
ZVdlYWtQdHI8V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk+CisgICAgLCBwdWJsaWMgUGF5bWVu
dEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RydWN0IENs
aWVudCB7CiAgICAgICAgIHZpcnR1YWwgfkNsaWVudCgpID0gZGVmYXVsdDsKQEAgLTc1LDYgKzc5
LDcgQEAgcHVibGljOgogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIHZpcnR1YWwg
VUlWaWV3Q29udHJvbGxlciAqcGF5bWVudENvb3JkaW5hdG9yUHJlc2VudGluZ1ZpZXdDb250cm9s
bGVyKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwogICAgICAgICB2aXJ0
dWFsIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNlcnZp
Y2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOworICAgICAgICB2
aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlcj4gcGF5
bWVudENvb3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcihXZWJQYXltZW50Q29vcmRpbmF0
b3JQcm94eSYsIFBLUGF5bWVudFJlcXVlc3QgKikgPSAwOwogI2VuZGlmCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgICAgICB2aXJ0dWFsIE5TV2luZG93ICpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50
aW5nV2luZG93KGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgPSAwOwpAQCAtODUs
MTIgKzkwLDYgQEAgcHVibGljOgogICAgIH5XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSgpOwog
CiAgICAgdm9pZCBkaWRDYW5jZWxQYXltZW50U2Vzc2lvbigpOwotICAgIHZvaWQgdmFsaWRhdGVN
ZXJjaGFudChjb25zdCBVUkwmKTsKLSAgICB2b2lkIGRpZEF1dGhvcml6ZVBheW1lbnQoY29uc3Qg
V2ViQ29yZTo6UGF5bWVudCYpOwotICAgIHZvaWQgZGlkU2VsZWN0U2hpcHBpbmdNZXRob2QoY29u
c3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9k
Jik7Ci0gICAgdm9pZCBkaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3QoY29uc3QgV2ViQ29yZTo6UGF5
bWVudENvbnRhY3QmKTsKLSAgICB2b2lkIGRpZFNlbGVjdFBheW1lbnRNZXRob2QoY29uc3QgV2Vi
Q29yZTo6UGF5bWVudE1ldGhvZCYpOwotCiAgICAgdm9pZCBoaWRlUGF5bWVudFVJKCk7CiAKIHBy
aXZhdGU6CkBAIC0xMDEsNiArMTAwLDE0IEBAIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdl
U2VuZGVyCiAgICAgSVBDOjpDb25uZWN0aW9uKiBtZXNzYWdlU2VuZGVyQ29ubmVjdGlvbigpIGNv
bnN0IGZpbmFsOwogICAgIHVpbnQ2NF90IG1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29u
c3QgZmluYWw7CisgICAgCisgICAgLy8gUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXI6OkNs
aWVudAorICAgIHZvaWQgcHJlc2VudGVyRGlkQXV0aG9yaXplUGF5bWVudChQYXltZW50QXV0aG9y
aXphdGlvblByZXNlbnRlciYsIGNvbnN0IFdlYkNvcmU6OlBheW1lbnQmKSBmaW5hbDsKKyAgICB2
b2lkIHByZXNlbnRlckRpZEZpbmlzaChQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlciYsIGJv
b2wgZGlkUmVhY2hGaW5hbFN0YXRlKSBmaW5hbDsKKyAgICB2b2lkIHByZXNlbnRlckRpZFNlbGVj
dFBheW1lbnRNZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJD
b3JlOjpQYXltZW50TWV0aG9kJikgZmluYWw7CisgICAgdm9pZCBwcmVzZW50ZXJEaWRTZWxlY3RT
aGlwcGluZ0NvbnRhY3QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJD
b3JlOjpQYXltZW50Q29udGFjdCYpIGZpbmFsOworICAgIHZvaWQgcHJlc2VudGVyRGlkU2VsZWN0
U2hpcHBpbmdNZXRob2QoUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXImLCBjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBpbmdNZXRob2QmKSBmaW5h
bDsKKyAgICB2b2lkIHByZXNlbnRlcldpbGxWYWxpZGF0ZU1lcmNoYW50KFBheW1lbnRBdXRob3Jp
emF0aW9uUHJlc2VudGVyJiwgY29uc3QgVVJMJikgZmluYWw7CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCiAgICAgdm9pZCBhdmFpbGFibGVQYXltZW50TmV0d29ya3MoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJik7CkBAIC0xNzMsOCArMTgwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgVmFsaWRhdGlvbkNvbXBsZXRlCiAgICAgfSBtX21lcmNoYW50VmFsaWRhdGlv
blN0YXRlIHsgTWVyY2hhbnRWYWxpZGF0aW9uU3RhdGU6OklkbGUgfTsKIAotICAgIFJldGFpblB0
cjxQS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI+IG1fcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlcjsKLSAgICBSZXRhaW5QdHI8V0tQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyRGVsZWdhdGU+IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlckRlbGVnYXRlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXltZW50QXV0aG9yaXphdGlvblBy
ZXNlbnRlcj4gbV9hdXRob3JpemF0aW9uUHJlc2VudGVyOwogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHVpbnQ2NF90IG1fc2hvd1BheW1lbnRVSVJlcXVlc3RTZWVkIHsgMCB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHlDb2NvYS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oCmluZGV4IGZiYmVlYWQzNzI2M2QyN2M3ZDMz
YTA1YmI3Njk1ODNmMjVkZjYxNTEuLjRlOTQyYjk2OGE0MzllNjM0YmY4YWU3YjkyNjNjYTYyNGIz
ODY4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BcHBsZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgKQEAgLTI3
LDM3ICsyNywxOCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAotI2ltcG9ydCAiV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaCIKLSNpbXBvcnQgPFdlYkNvcmUvUGF5bWVudEhlYWRlcnMu
aD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvUGFzc0tpdFNQSS5oPgotI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAKLUBpbnRlcmZhY2UgV0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUgOiBOU09iamVjdCA8UEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUsIFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlclByaXZhdGVE
ZWxlZ2F0ZT4gewotQHBhY2thZ2UKLSAgICBXZWJLaXQ6OldlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5KiBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk7Ci0gICAgUmV0YWluUHRyPE5TQXJyYXk+
IF9wYXltZW50U3VtbWFyeUl0ZW1zOwotICAgIFJldGFpblB0cjxOU0FycmF5PiBfc2hpcHBpbmdN
ZXRob2RzOworbmFtZXNwYWNlIFdlYktpdCB7CiAKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5bWVu
dE1lcmNoYW50U2Vzc2lvbiAqLCBOU0Vycm9yICopPiBfc2Vzc2lvbkJsb2NrOworLy8gRklYTUU6
IFJhdGhlciB0aGFuIGhhdmluZyB0aGVzZSBmcmVlIGZ1bmN0aW9ucyBzY2F0dGVyZWQgYWJvdXQs
IEFwcGxlIFBheSBkYXRhIHR5cGVzIHNob3VsZCBrbm93CisvLyBob3cgdG8gY29udmVydCB0aGVt
c2VsdmVzIHRvIGFuZCBmcm9tIHRoZWlyIHBsYXRmb3JtIHJlcHJlc2VudGF0aW9ucy4KK05TQXJy
YXkgKnRvUEtQYXltZW50U3VtbWFyeUl0ZW1zKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lv
blBheW1lbnRSZXF1ZXN0OjpUb3RhbEFuZExpbmVJdGVtcyYpOworTlNEZWNpbWFsTnVtYmVyICp0
b0RlY2ltYWxOdW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpOworUEtQYXltZW50U3VtbWFyeUl0
ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9u
UGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJik7CitQS1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUgdG9Q
S1BheW1lbnRTdW1tYXJ5SXRlbVR5cGUoV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJl
cXVlc3Q6OkxpbmVJdGVtOjpUeXBlKTsKK1BLU2hpcHBpbmdNZXRob2QgKnRvUEtTaGlwcGluZ01l
dGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6U2hpcHBp
bmdNZXRob2QmKTsKIAotICAgIEJPT0wgX2RpZFJlYWNoRmluYWxTdGF0ZTsKLSNpZiBIQVZFKFBB
U1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIEJsb2NrUHRyPHZvaWQoUEtQYXltZW50QXV0aG9y
aXphdGlvblJlc3VsdCAqKT4gX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbjsKLSAgICBCbG9j
a1B0cjx2b2lkKFBLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9kVXBkYXRlICopPiBfZGlkU2Vs
ZWN0UGF5bWVudE1ldGhvZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRS
ZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGUgKik+IF9kaWRTZWxlY3RTaGlwcGluZ01ldGhvZENv
bXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250
YWN0VXBkYXRlICopPiBfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbjsKLSNlbHNl
Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKT4gX3BheW1l
bnRBdXRob3JpemVkQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKE5TQXJyYXkgKik+IF9k
aWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbjsKLSAgICBCbG9ja1B0cjx2b2lkKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMsIE5TQXJyYXkgKik+IF9kaWRTZWxlY3RTaGlwcGluZ01l
dGhvZENvbXBsZXRpb247Ci0gICAgQmxvY2tQdHI8dm9pZChQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzLCBOU0FycmF5ICosIE5TQXJyYXkgKik+IF9kaWRTZWxlY3RTaGlwcGluZ0NvbnRhY3RD
b21wbGV0aW9uOwotI2VuZGlmCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAotLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KFdlYktpdDo6V2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHkmKXdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OwotCi0tICh2b2lk
KWludmFsaWRhdGU7Ci0KLUBlbmQKLQotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEFQUExFX1BB
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2NvY29hL1dlYlBh
eW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBs
ZVBheS9jb2NvYS9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLm1tCmluZGV4IGFjZWY5
ODRkYzA5OWQ0YTE0YjkxMDczOTlhYjIzYThjZTU5YTlmN2IuLjg1MDA5NTBlNjE0YWExNmM5MWI5
OGU4NmI3NmFjYTQ0ZTBjYjJkMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Fw
cGxlUGF5L2NvY29hL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvY29jb2EvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJv
eHlDb2NvYS5tbQpAQCAtMjgsOCArMjgsOCBAQAogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKIAor
I2ltcG9ydCAiV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgotI2ltcG9ydCAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNp
bXBvcnQgPFdlYkNvcmUvUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUGF5bWVudEhlYWRlcnMuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9QYXNzS2l0U29mdExp
bmsuaD4KQEAgLTM3LDIwMiArMzcsNiBAQAogI2ltcG9ydCA8d3RmL1J1bkxvb3AuaD4KICNpbXBv
cnQgPHd0Zi9VUkwuaD4KIAotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi1TT0ZU
X0xJTktfRlJBTUVXT1JLKENvbnRhY3RzKQotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBD
TlBvc3RhbEFkZHJlc3NTdHJlZXRLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5U
KENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdWJMb2NhbGl0eUtleSwgTlNTdHJpbmcgKik7Ci1T
T0ZUX0xJTktfQ09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc0NpdHlLZXksIE5TU3Ry
aW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdWJB
ZG1pbmlzdHJhdGl2ZUFyZWFLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENv
bnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NTdGF0ZUtleSwgTlNTdHJpbmcgKik7Ci1TT0ZUX0xJTktf
Q09OU1RBTlQoQ29udGFjdHMsIENOUG9zdGFsQWRkcmVzc1Bvc3RhbENvZGVLZXksIE5TU3RyaW5n
ICopOwotU09GVF9MSU5LX0NPTlNUQU5UKENvbnRhY3RzLCBDTlBvc3RhbEFkZHJlc3NDb3VudHJ5
S2V5LCBOU1N0cmluZyAqKTsKLVNPRlRfTElOS19DT05TVEFOVChDb250YWN0cywgQ05Qb3N0YWxB
ZGRyZXNzSVNPQ291bnRyeUNvZGVLZXksIE5TU3RyaW5nICopOwotU09GVF9MSU5LX0NPTlNUQU5U
KFBBTDo6UGFzc0tpdCwgUEtQYXltZW50RXJyb3JEb21haW4sIE5TU3RyaW5nICopOwotI2VuZGlm
Ci0KLUBpbXBsZW1lbnRhdGlvbiBXS1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZQotCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXltZW50Q29vcmRpbmF0b3JQcm94
eTooV2ViS2l0OjpXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpd2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHkKLXsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkgPSAmd2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk7Ci0KLSAgICByZXR1cm4gc2VsZjsKLX0KLQotLSAodm9pZClp
bnZhbGlkYXRlCi17Ci0gICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5ID0gbnVsbHB0cjsK
LSAgICBpZiAoX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbikgewotI2lmIEhBVkUoUEFTU0tJ
VF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgICAgIF9wYXltZW50QXV0aG9yaXplZENvbXBsZXRpb24o
YWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudEF1dGhvcml6YXRpb25SZXN1bHRJbnN0YW5jZSgp
IGluaXRXaXRoU3RhdHVzOlBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlIGVycm9y
czpAWyBdXSkuZ2V0KCkpOwotI2Vsc2UKLSAgICAgICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxl
dGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSk7Ci0jZW5kaWYKLSAgICAg
ICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbiA9IG51bGxwdHI7Ci0gICAgfQotfQotCi0t
ICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBLUGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgd2lsbEZpbmlzaFdpdGhFcnJvcjoo
TlNFcnJvciAqKWVycm9yCi17Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJv
bGxlciBkaWRSZXF1ZXN0TWVyY2hhbnRTZXNzaW9uOih2b2lkKF4pKFBLUGF5bWVudE1lcmNoYW50
U2Vzc2lvbiAqLCBOU0Vycm9yICopKXNlc3Npb25CbG9jawotewotICAgIEFTU0VSVCghX3Nlc3Np
b25CbG9jayk7Ci0gICAgX3Nlc3Npb25CbG9jayA9IHNlc3Npb25CbG9jazsKLQotICAgIFtQQUw6
OmdldFBLUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckNsYXNzKCkgcGF5bWVudFNl
cnZpY2VzTWVyY2hhbnRVUkw6XihOU1VSTCAqbWVyY2hhbnRVUkwsIE5TRXJyb3IgKmVycm9yKSB7
Ci0gICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgIExPR19FUlJPUigiUEtDYW5NYWtlUGF5
bWVudHNXaXRoTWVyY2hhbnRJZGVudGlmaWVyQW5kRG9tYWluIGVycm9yICVAIiwgZXJyb3IpOwot
Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57Ci0g
ICAgICAgICAgICBBU1NFUlQoX3Nlc3Npb25CbG9jayk7Ci0KLSAgICAgICAgICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgICAgICAgICAgX3Nlc3Npb25CbG9j
ayhudWxscHRyLCBudWxscHRyKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+dmFsaWRhdGVN
ZXJjaGFudChtZXJjaGFudFVSTCk7Ci0gICAgICAgIH0pOwotICAgIH1dOwotfQotCi1zdGF0aWMg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNoaXBwaW5nTWV0aG9kIHRv
U2hpcHBpbmdNZXRob2QoUEtTaGlwcGluZ01ldGhvZCAqc2hpcHBpbmdNZXRob2QpCi17Ci0gICAg
QVNTRVJUKHNoaXBwaW5nTWV0aG9kKTsKLQotICAgIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBh
eW1lbnRSZXF1ZXN0OjpTaGlwcGluZ01ldGhvZCByZXN1bHQ7Ci0gICAgcmVzdWx0LmxhYmVsID0g
c2hpcHBpbmdNZXRob2QubGFiZWw7Ci0gICAgcmVzdWx0LmRldGFpbCA9IHNoaXBwaW5nTWV0aG9k
LmRldGFpbDsKLSAgICByZXN1bHQuYW1vdW50ID0gc2hpcHBpbmdNZXRob2QuYW1vdW50LnN0cmlu
Z1ZhbHVlOwotICAgIHJlc3VsdC5pZGVudGlmaWVyID0gc2hpcHBpbmdNZXRob2QuaWRlbnRpZmll
cjsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJf
RVJST1JTKQotCi0tICh2b2lkKXBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXI6KFBL
UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkQXV0aG9y
aXplUGF5bWVudDooUEtQYXltZW50ICopcGF5bWVudCBoYW5kbGVyOih2b2lkICheKShQS1BheW1l
bnRBdXRob3JpemF0aW9uUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFuY2UoKSBpbml0V2l0
aFN0YXR1czpQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVyZSBlcnJvcnM6QFsgXV0p
LmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX3BheW1lbnRB
dXRob3JpemVkQ29tcGxldGlvbik7Ci0gICAgX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbiA9
IGNvbXBsZXRpb247Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZEF1dGhv
cml6ZVBheW1lbnQoV2ViQ29yZTo6UGF5bWVudChwYXltZW50KSk7Ci19Ci0KLS0gKHZvaWQpcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1l
bnRNZXRob2QgKilwYXltZW50TWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJlcXVl
c3RQYXltZW50TWV0aG9kVXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93
ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMo
W1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0UGF5bWVudE1ldGhvZFVwZGF0ZUluc3RhbmNlKCkg
aW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOkBbIF1dKS5nZXQoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlv
bik7Ci0gICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gY29tcGxldGlvbjsK
LSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFBheW1lbnRNZXRob2Qo
V2ViQ29yZTo6UGF5bWVudE1ldGhvZChwYXltZW50TWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZp
ZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGluZ01ldGhvZDooUEtTaGlw
cGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGhhbmRsZXI6KHZvaWQgKF4pKFBLUGF5bWVudFJl
cXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZSAqdXBkYXRlKSljb21wbGV0aW9uIHsKLSAgICBpZiAo
IV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0
TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdNZXRob2RVcGRhdGVJbnN0YW5j
ZSgpIGluaXRXaXRoUGF5bWVudFN1bW1hcnlJdGVtczpAWyBdXSkuZ2V0KCkpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21w
bGV0aW9uKTsKLSAgICBfZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RDb21wbGV0aW9uID0gY29tcGxl
dGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5n
TWV0aG9kKHRvU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2QpKTsKLX0KLQotLSAodm9pZClw
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRBdXRob3JpemF0aW9u
Vmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdDooUEtD
b250YWN0ICopY29udGFjdCBoYW5kbGVyOih2b2lkICheKShQS1BheW1lbnRSZXF1ZXN0U2hpcHBp
bmdDb250YWN0VXBkYXRlICp1cGRhdGUpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKGFkb3B0TlMoW1BBTDo6
YWxsb2NQS1BheW1lbnRSZXF1ZXN0U2hpcHBpbmdDb250YWN0VXBkYXRlSW5zdGFuY2UoKSBpbml0
V2l0aEVycm9yczpAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6QFsgXSBzaGlwcGluZ01ldGhvZHM6
QFsgXV0pLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFTU0VSVCghX2Rp
ZFNlbGVjdFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24pOwotICAgIF9kaWRTZWxlY3RTaGlwcGlu
Z0NvbnRhY3RDb21wbGV0aW9uID0gY29tcGxldGlvbjsKLSAgICBfd2ViUGF5bWVudENvb3JkaW5h
dG9yUHJveHktPmRpZFNlbGVjdFNoaXBwaW5nQ29udGFjdChXZWJDb3JlOjpQYXltZW50Q29udGFj
dChjb250YWN0KSk7Ci19Ci0KLSNlbmRpZgotCi0jaWYgIUhBVkUoUEFTU0tJVF9HUkFOVUxBUl9F
UlJPUlMpCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRBdXRob3Jp
emVQYXltZW50OihQS1BheW1lbnQgKilwYXltZW50IGNvbXBsZXRpb246KHZvaWQgKF4pKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXMpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAoIV93ZWJQYXlt
ZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKFBLUGF5bWVudEF1dGhv
cml6YXRpb25TdGF0dXNGYWlsdXJlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEFT
U0VSVCghX3BheW1lbnRBdXRob3JpemVkQ29tcGxldGlvbik7Ci0gICAgX3BheW1lbnRBdXRob3Jp
emVkQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0KLSAgICBfd2ViUGF5bWVudENvb3JkaW5hdG9y
UHJveHktPmRpZEF1dGhvcml6ZVBheW1lbnQoV2ViQ29yZTo6UGF5bWVudChwYXltZW50KSk7Ci19
Ci0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RTaGlwcGlu
Z01ldGhvZDooUEtTaGlwcGluZ01ldGhvZCAqKXNoaXBwaW5nTWV0aG9kIGNvbXBsZXRpb246KHZv
aWQgKF4pKFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzLCBOU0FycmF5PFBLUGF5
bWVudFN1bW1hcnlJdGVtICo+ICpzdW1tYXJ5SXRlbXMpKWNvbXBsZXRpb24KLXsKLSAgICBpZiAo
IV93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSkgewotICAgICAgICBjb21wbGV0aW9uKFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlLCBAWyBdKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLQotICAgIEFTU0VSVCghX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbik7
Ci0gICAgX2RpZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbiA9IGNvbXBsZXRpb247Ci0g
ICAgX3dlYlBheW1lbnRDb29yZGluYXRvclByb3h5LT5kaWRTZWxlY3RTaGlwcGluZ01ldGhvZCh0
b1NoaXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKSk7Ci19Ci0KLS0gKHZvaWQpcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcjooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyICopY29udHJvbGxlciBkaWRTZWxlY3RQYXltZW50TWV0aG9kOihQS1BheW1lbnRNZXRo
b2QgKilwYXltZW50TWV0aG9kIGNvbXBsZXRpb246KHZvaWQgKF4pKE5TQXJyYXk8UEtQYXltZW50
U3VtbWFyeUl0ZW0gKj4gKnN1bW1hcnlJdGVtcykpY29tcGxldGlvbgotewotICAgIGlmICghX3dl
YlBheW1lbnRDb29yZGluYXRvclByb3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oQFsgXSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQoIV9kaWRTZWxlY3RQYXltZW50TWV0
aG9kQ29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0g
Y29tcGxldGlvbjsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0
UGF5bWVudE1ldGhvZChXZWJDb3JlOjpQYXltZW50TWV0aG9kKHBheW1lbnRNZXRob2QpKTsKLX0K
LQotLSAodm9pZClwYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyOihQS1BheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgKiljb250cm9sbGVyIGRpZFNlbGVjdFNoaXBwaW5n
Q29udGFjdDooUEtDb250YWN0ICopY29udGFjdCBjb21wbGV0aW9uOih2b2lkICheKShQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzIHN0YXR1cywgTlNBcnJheTxQS1NoaXBwaW5nTWV0aG9kICo+
ICpzaGlwcGluZ01ldGhvZHMsIE5TQXJyYXk8UEtQYXltZW50U3VtbWFyeUl0ZW0gKj4gKnN1bW1h
cnlJdGVtcykpY29tcGxldGlvbgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRvclBy
b3h5KSB7Ci0gICAgICAgIGNvbXBsZXRpb24oUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c0Zh
aWx1cmUsIEBbIF0sIEBbIF0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJU
KCFfZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbik7Ci0gICAgX2RpZFNlbGVjdFNo
aXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBjb21wbGV0aW9uOwotICAgIF93ZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eS0+ZGlkU2VsZWN0U2hpcHBpbmdDb250YWN0KFdlYkNvcmU6OlBheW1lbnRD
b250YWN0KGNvbnRhY3QpKTsKLX0KLQotI2VuZGlmCi0KLS0gKHZvaWQpcGF5bWVudEF1dGhvcml6
YXRpb25WaWV3Q29udHJvbGxlckRpZEZpbmlzaDooUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyICopY29udHJvbGxlcgotewotICAgIGlmICghX3dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIV9kaWRSZWFjaEZpbmFsU3RhdGUp
Ci0gICAgICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+ZGlkQ2FuY2VsUGF5bWVudFNl
c3Npb24oKTsKLQotICAgIF93ZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eS0+aGlkZVBheW1lbnRV
SSgpOwotfQotCi1AZW5kCi0KIC8vIEZJWE1FOiBPbmNlIHJkYXI6Ly9wcm9ibGVtLzI0NDIwMDI0
IGhhcyBiZWVuIGZpeGVkLCBpbXBvcnQgUEtQYXltZW50UmVxdWVzdF9Qcml2YXRlLmggaW5zdGVh
ZC4KIEBpbnRlcmZhY2UgUEtQYXltZW50UmVxdWVzdCAoKQogQHByb3BlcnR5IChub25hdG9taWMs
IHJldGFpbikgTlNVUkwgKm9yaWdpbmF0aW5nVVJMOwpAQCAtMzIyLDcgKzEyNiw3IEBAIHN0YXRp
YyBQS0FkZHJlc3NGaWVsZCB0b1BLQWRkcmVzc0ZpZWxkKGNvbnN0IFdlYkNvcmU6OkFwcGxlUGF5
U2Vzc2lvblBheW1lbnRSZXF1CiB9CiAjZW5kaWYKIAotc3RhdGljIFBLUGF5bWVudFN1bW1hcnlJ
dGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKK1BLUGF5bWVudFN1bW1hcnlJ
dGVtVHlwZSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Np
b25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW06OlR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5
cGUpIHsKICAgICBjYXNlIFdlYkNvcmU6OkFwcGxlUGF5U2Vzc2lvblBheW1lbnRSZXF1ZXN0OjpM
aW5lSXRlbTo6VHlwZTo6RmluYWw6CkBAIC0zMzMsMjggKzEzNywyOCBAQCBzdGF0aWMgUEtQYXlt
ZW50U3VtbWFyeUl0ZW1UeXBlIHRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKFdlYkNvcmU6OkFw
cGxlUGF5U2VzcwogICAgIH0KIH0KIAotc3RhdGljIE5TRGVjaW1hbE51bWJlciAqdG9EZWNpbWFs
TnVtYmVyKGNvbnN0IFN0cmluZyYgYW1vdW50KQorTlNEZWNpbWFsTnVtYmVyICp0b0RlY2ltYWxO
dW1iZXIoY29uc3QgU3RyaW5nJiBhbW91bnQpCiB7CiAgICAgaWYgKCFhbW91bnQpCiAgICAgICAg
IHJldHVybiBbTlNEZWNpbWFsTnVtYmVyIHplcm9dOwogICAgIHJldHVybiBbTlNEZWNpbWFsTnVt
YmVyIGRlY2ltYWxOdW1iZXJXaXRoU3RyaW5nOmFtb3VudCBsb2NhbGU6QHsgTlNMb2NhbGVEZWNp
bWFsU2VwYXJhdG9yIDogQCIuIiB9XTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxQS1BheW1lbnRT
dW1tYXJ5SXRlbT4gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShjb25zdCBXZWJDb3JlOjpBcHBsZVBh
eVNlc3Npb25QYXltZW50UmVxdWVzdDo6TGluZUl0ZW0mIGxpbmVJdGVtKQorUEtQYXltZW50U3Vt
bWFyeUl0ZW0gKnRvUEtQYXltZW50U3VtbWFyeUl0ZW0oY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlT
ZXNzaW9uUGF5bWVudFJlcXVlc3Q6OkxpbmVJdGVtJiBsaW5lSXRlbSkKIHsKICAgICByZXR1cm4g
W1BBTDo6Z2V0UEtQYXltZW50U3VtbWFyeUl0ZW1DbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVs
OmxpbmVJdGVtLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIobGluZUl0ZW0uYW1vdW50KSB0
eXBlOnRvUEtQYXltZW50U3VtbWFyeUl0ZW1UeXBlKGxpbmVJdGVtLnR5cGUpXTsKIH0KIAotc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyhjb25zdCBXZWJD
b3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6VG90YWxBbmRMaW5lSXRlbXMmIHRv
dGFsQW5kTGluZUl0ZW1zKQorTlNBcnJheSAqdG9QS1BheW1lbnRTdW1tYXJ5SXRlbXMoY29uc3Qg
V2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlRvdGFsQW5kTGluZUl0ZW1z
JiB0b3RhbEFuZExpbmVJdGVtcykKIHsKLSAgICBhdXRvIHBheW1lbnRTdW1tYXJ5SXRlbXMgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKKyAgICBOU011dGFibGVBcnJh
eSAqcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0
eTp0b3RhbEFuZExpbmVJdGVtcy5saW5lSXRlbXMuc2l6ZSgpICsgMV07CiAgICAgZm9yIChhdXRv
JiBsaW5lSXRlbSA6IHRvdGFsQW5kTGluZUl0ZW1zLmxpbmVJdGVtcykgewotICAgICAgICBpZiAo
YXV0byBzdW1tYXJ5SXRlbSA9IHRvUEtQYXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQotICAg
ICAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtLmdldCgp
XTsKKyAgICAgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICpzdW1tYXJ5SXRlbSA9IHRvUEtQ
YXltZW50U3VtbWFyeUl0ZW0obGluZUl0ZW0pKQorICAgICAgICAgICAgW3BheW1lbnRTdW1tYXJ5
SXRlbXMgYWRkT2JqZWN0OnN1bW1hcnlJdGVtXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byB0b3Rh
bEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKSkK
LSAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFsSXRlbS5nZXQoKV07
CisgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtKHRvdGFsQW5kTGluZUl0ZW1zLnRvdGFsKSkKKyAgICAgICAgW3BheW1lbnRTdW1t
YXJ5SXRlbXMgYWRkT2JqZWN0OnRvdGFsSXRlbV07CiAKICAgICByZXR1cm4gcGF5bWVudFN1bW1h
cnlJdGVtczsKIH0KQEAgLTM5OSw5ICsyMDMsOSBAQCBzdGF0aWMgUEtTaGlwcGluZ1R5cGUgdG9Q
S1NoaXBwaW5nVHlwZShXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6Uwog
ICAgIH0KIH0KIAotc3RhdGljIFJldGFpblB0cjxQS1NoaXBwaW5nTWV0aG9kPiB0b1BLU2hpcHBp
bmdNZXRob2QoY29uc3QgV2ViQ29yZTo6QXBwbGVQYXlTZXNzaW9uUGF5bWVudFJlcXVlc3Q6OlNo
aXBwaW5nTWV0aG9kJiBzaGlwcGluZ01ldGhvZCkKK1BLU2hpcHBpbmdNZXRob2QgKnRvUEtTaGlw
cGluZ01ldGhvZChjb25zdCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdDo6
U2hpcHBpbmdNZXRob2QmIHNoaXBwaW5nTWV0aG9kKQogewotICAgIFJldGFpblB0cjxQS1NoaXBw
aW5nTWV0aG9kPiByZXN1bHQgPSBbUEFMOjpnZXRQS1NoaXBwaW5nTWV0aG9kQ2xhc3MoKSBzdW1t
YXJ5SXRlbVdpdGhMYWJlbDpzaGlwcGluZ01ldGhvZC5sYWJlbCBhbW91bnQ6dG9EZWNpbWFsTnVt
YmVyKHNoaXBwaW5nTWV0aG9kLmFtb3VudCldOworICAgIFBLU2hpcHBpbmdNZXRob2QgKnJlc3Vs
dCA9IFtQQUw6OmdldFBLU2hpcHBpbmdNZXRob2RDbGFzcygpIHN1bW1hcnlJdGVtV2l0aExhYmVs
OnNoaXBwaW5nTWV0aG9kLmxhYmVsIGFtb3VudDp0b0RlY2ltYWxOdW1iZXIoc2hpcHBpbmdNZXRo
b2QuYW1vdW50KV07CiAgICAgW3Jlc3VsdCBzZXRJZGVudGlmaWVyOnNoaXBwaW5nTWV0aG9kLmlk
ZW50aWZpZXJdOwogICAgIFtyZXN1bHQgc2V0RGV0YWlsOnNoaXBwaW5nTWV0aG9kLmRldGFpbF07
CiAKQEAgLTQ3MCwxNyArMjc0LDE3IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0PiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChjCiAKICAgICBh
dXRvIHNoaXBwaW5nTWV0aG9kcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dF0pOwogICAgIGZvciAoYXV0byYgc2hpcHBpbmdNZXRob2QgOiBwYXltZW50UmVxdWVzdC5zaGlw
cGluZ01ldGhvZHMoKSkKLSAgICAgICAgW3NoaXBwaW5nTWV0aG9kcyBhZGRPYmplY3Q6dG9QS1No
aXBwaW5nTWV0aG9kKHNoaXBwaW5nTWV0aG9kKS5nZXQoKV07CisgICAgICAgIFtzaGlwcGluZ01l
dGhvZHMgYWRkT2JqZWN0OnRvUEtTaGlwcGluZ01ldGhvZChzaGlwcGluZ01ldGhvZCldOwogICAg
IFtyZXN1bHQgc2V0U2hpcHBpbmdNZXRob2RzOnNoaXBwaW5nTWV0aG9kcy5nZXQoKV07CiAKICAg
ICBhdXRvIHBheW1lbnRTdW1tYXJ5SXRlbXMgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxs
b2NdIGluaXRdKTsKICAgICBmb3IgKGF1dG8mIGxpbmVJdGVtIDogcGF5bWVudFJlcXVlc3QubGlu
ZUl0ZW1zKCkpIHsKLSAgICAgICAgaWYgKGF1dG8gc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1
bW1hcnlJdGVtKGxpbmVJdGVtKSkKLSAgICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFk
ZE9iamVjdDpzdW1tYXJ5SXRlbS5nZXQoKV07CisgICAgICAgIGlmIChQS1BheW1lbnRTdW1tYXJ5
SXRlbSAqc3VtbWFyeUl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKGxpbmVJdGVtKSkKKyAg
ICAgICAgICAgIFtwYXltZW50U3VtbWFyeUl0ZW1zIGFkZE9iamVjdDpzdW1tYXJ5SXRlbV07CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8gdG90YWxJdGVtID0gdG9QS1BheW1lbnRTdW1tYXJ5SXRlbShw
YXltZW50UmVxdWVzdC50b3RhbCgpKSkKLSAgICAgICAgW3BheW1lbnRTdW1tYXJ5SXRlbXMgYWRk
T2JqZWN0OnRvdGFsSXRlbS5nZXQoKV07CisgICAgaWYgKFBLUGF5bWVudFN1bW1hcnlJdGVtICp0
b3RhbEl0ZW0gPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtKHBheW1lbnRSZXF1ZXN0LnRvdGFsKCkp
KQorICAgICAgICBbcGF5bWVudFN1bW1hcnlJdGVtcyBhZGRPYmplY3Q6dG90YWxJdGVtXTsKIAog
ICAgIFtyZXN1bHQgc2V0UGF5bWVudFN1bW1hcnlJdGVtczpwYXltZW50U3VtbWFyeUl0ZW1zLmdl
dCgpXTsKIApAQCAtNTEzLDI3OCArMzE3LDI5IEBAIFJldGFpblB0cjxQS1BheW1lbnRSZXF1ZXN0
PiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1QYXltZW50UmVxdWVzdChjCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMp
Ci1zdGF0aWMgUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyB0b1BLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXMoV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMgc3RhdHVzKQot
ewotICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50QXV0aG9y
aXphdGlvblN0YXR1czo6U3VjY2VzczoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNTdWNjZXNzOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXM6OkZhaWx1cmU6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzRmFpbHVyZTsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzOjpQSU5SZXF1aXJlZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXNQSU5SZXF1aXJlZDsKLSAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0aW9u
U3RhdHVzOjpQSU5JbmNvcnJlY3Q6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzUElOSW5jb3JyZWN0OwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXM6OlBJTkxvY2tvdXQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzUElOTG9ja291dDsKLSAgICB9Ci19Ci0KLXN0YXRpYyBQS1BheW1lbnRFcnJv
ckNvZGUgdG9QS1BheW1lbnRFcnJvckNvZGUoV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlIGNv
ZGUpCi17Ci0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJy
b3I6OkNvZGU6OlVua25vd246Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRVbmtub3duRXJyb3I7
Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdElu
dmFsaWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1lbnRTaGlwcGluZ0NvbnRhY3RJbnZhbGlkRXJy
b3I7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkJpbGxpbmdDb250YWN0
SW52YWxpZDoKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEJpbGxpbmdDb250YWN0SW52YWxpZEVy
cm9yOwotICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpBZGRyZXNzVW5zZXJ2
aWNlYWJsZToKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudFNoaXBwaW5nQWRkcmVzc1Vuc2Vydmlj
ZWFibGVFcnJvcjsKLSAgICB9Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8TlNFcnJvcj4gdG9OU0Vy
cm9yKGNvbnN0IFdlYkNvcmU6OlBheW1lbnRFcnJvciYgZXJyb3IpCi17Ci0gICAgYXV0byB1c2Vy
SW5mbyA9IGFkb3B0TlMoW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0XSk7Ci0gICAg
W3VzZXJJbmZvIHNldE9iamVjdDplcnJvci5tZXNzYWdlIGZvcktleTpOU0xvY2FsaXplZERlc2Ny
aXB0aW9uS2V5XTsKLQotICAgIGlmIChlcnJvci5jb250YWN0RmllbGQpIHsKLSAgICAgICAgTlNT
dHJpbmcgKnBrQ29udGFjdEZpZWxkID0gbmlsOwotICAgICAgICBOU1N0cmluZyAqcG9zdGFsQWRk
cmVzc0tleSA9IG5pbDsKLQotICAgICAgICBzd2l0Y2ggKCplcnJvci5jb250YWN0RmllbGQpIHsK
LSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UGhvbmVO
dW1iZXI6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRfUEtD
b250YWN0RmllbGRQaG9uZU51bWJlcigpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6RW1haWxBZGRyZXNzOgot
ICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZp
ZWxkRW1haWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdl
YkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpOYW1lOgotICAgICAgICAgICAgcGtD
b250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkTmFtZSgpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
bnRhY3RGaWVsZDo6UGhvbmV0aWNOYW1lOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQ
QUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUGhvbmV0aWNOYW1lKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZp
ZWxkOjpQb3N0YWxBZGRyZXNzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6Omdl
dF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
QWRkcmVzc0xpbmVzOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N0cmVldEtleSgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
U3ViTG9jYWxpdHk6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NL
aXRfUEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRy
ZXNzS2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzU3ViTG9jYWxpdHlLZXkoKTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0Rmll
bGQ6OkxvY2FsaXR5OgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNz
S2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRk
cmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NpdHlLZXkoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb250YWN0RmllbGQ6OlBv
c3RhbENvZGU6Ci0gICAgICAgICAgICBwa0NvbnRhY3RGaWVsZCA9IFBBTDo6Z2V0X1Bhc3NLaXRf
UEtDb250YWN0RmllbGRQb3N0YWxBZGRyZXNzKCk7Ci0gICAgICAgICAgICBwb3N0YWxBZGRyZXNz
S2V5ID0gZ2V0Q05Qb3N0YWxBZGRyZXNzUG9zdGFsQ29kZUtleSgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6
U3ViQWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAgcGtDb250YWN0RmllbGQgPSBQQUw6
OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygpOwotICAgICAgICAgICAg
cG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc1N1YkFkbWluaXN0cmF0aXZlQXJl
YUtleSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6QWRtaW5pc3RyYXRpdmVBcmVhOgotICAgICAgICAgICAg
cGtDb250YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRk
cmVzcygpOwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVz
c1N0YXRlS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpDb3VudHJ5OgotICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0NvdW50
cnlLZXkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5
bWVudEVycm9yOjpDb250YWN0RmllbGQ6OkNvdW50cnlDb2RlOgotICAgICAgICAgICAgcGtDb250
YWN0RmllbGQgPSBQQUw6OmdldF9QYXNzS2l0X1BLQ29udGFjdEZpZWxkUG9zdGFsQWRkcmVzcygp
OwotICAgICAgICAgICAgcG9zdGFsQWRkcmVzc0tleSA9IGdldENOUG9zdGFsQWRkcmVzc0lTT0Nv
dW50cnlDb2RlS2V5KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IFt1c2VySW5mbyBzZXRPYmplY3Q6cGtDb250YWN0RmllbGQgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NL
aXRfUEtQYXltZW50RXJyb3JDb250YWN0RmllbGRVc2VySW5mb0tleSgpXTsKLSAgICAgICAgaWYg
KHBvc3RhbEFkZHJlc3NLZXkpCi0gICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OnBvc3Rh
bEFkZHJlc3NLZXkgZm9yS2V5OlBBTDo6Z2V0X1Bhc3NLaXRfUEtQYXltZW50RXJyb3JQb3N0YWxB
ZGRyZXNzVXNlckluZm9LZXkoKV07Ci0gICAgfQotCi0gICAgcmV0dXJuIGFkb3B0TlMoW1tOU0Vy
cm9yIGFsbG9jXSBpbml0V2l0aERvbWFpbjpnZXRQS1BheW1lbnRFcnJvckRvbWFpbigpIGNvZGU6
dG9QS1BheW1lbnRFcnJvckNvZGUoZXJyb3IuY29kZSkgdXNlckluZm86dXNlckluZm8uZ2V0KCld
KTsKLX0KLQotc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiB0b05TRXJyb3JzKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpQYXltZW50RXJyb3I+JiBlcnJvcnMpCi17Ci0gICAgYXV0byByZXN1bHQgPSBh
ZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRdKTsKLQotICAgIGZvciAoY29uc3Qg
YXV0byYgZXJyb3IgOiBlcnJvcnMpIHsKLSAgICAgICAgaWYgKGF1dG8gbnNFcnJvciA9IHRvTlNF
cnJvcihlcnJvcikpCi0gICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDpuc0Vycm9yLmdldCgp
XTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotI2Vsc2UKLXN0YXRpYyBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzIHRvUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1cyhjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4mIHJlc3VsdCkK
LXsKLSAgICBpZiAoIXJlc3VsdCkKLSAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6YXRp
b25TdGF0dXNTdWNjZXNzOwotCi0gICAgaWYgKHJlc3VsdC0+ZXJyb3JzLnNpemUoKSA9PSAxKSB7
Ci0gICAgICAgIGF1dG8mIGVycm9yID0gcmVzdWx0LT5lcnJvcnNbMF07Ci0gICAgICAgIHN3aXRj
aCAoZXJyb3IuY29kZSkgewotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29k
ZTo6VW5rbm93bjoKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OkFk
ZHJlc3NVbnNlcnZpY2VhYmxlOgotICAgICAgICAgICAgcmV0dXJuIFBLUGF5bWVudEF1dGhvcml6
YXRpb25TdGF0dXNGYWlsdXJlOwotCi0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9y
OjpDb2RlOjpCaWxsaW5nQ29udGFjdEludmFsaWQ6Ci0gICAgICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ludmFsaWRCaWxsaW5nUG9zdGFsQWRkcmVzczsKLQotICAg
ICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29kZTo6U2hpcHBpbmdDb250YWN0SW52
YWxpZDoKLSAgICAgICAgICAgIGlmIChlcnJvci5jb250YWN0RmllbGQgJiYgZXJyb3IuY29udGFj
dEZpZWxkID09IFdlYkNvcmU6OlBheW1lbnRFcnJvcjo6Q29udGFjdEZpZWxkOjpQb3N0YWxBZGRy
ZXNzKQotICAgICAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
SW52YWxpZFNoaXBwaW5nUG9zdGFsQWRkcmVzczsKLQotICAgICAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkU2hpcHBpbmdDb250YWN0OwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgc3dpdGNoIChyZXN1bHQtPnN0YXR1cykgewotICAgIGNhc2UgV2ViQ29y
ZTo6UGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXM6OlN1Y2Nlc3M6Ci0gICAgICAgIHJldHVybiBQ
S1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzU3VjY2VzczsKLSAgICBjYXNlIFdlYkNvcmU6OlBh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpGYWlsdXJlOgotICAgICAgICByZXR1cm4gUEtQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1c0ZhaWx1cmU7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXltZW50
QXV0aG9yaXphdGlvblN0YXR1czo6UElOUmVxdWlyZWQ6Ci0gICAgICAgIHJldHVybiBQS1BheW1l
bnRBdXRob3JpemF0aW9uU3RhdHVzUElOUmVxdWlyZWQ7Ci0gICAgY2FzZSBXZWJDb3JlOjpQYXlt
ZW50QXV0aG9yaXphdGlvblN0YXR1czo6UElOSW5jb3JyZWN0OgotICAgICAgICByZXR1cm4gUEtQ
YXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkluY29ycmVjdDsKLSAgICBjYXNlIFdlYkNvcmU6
OlBheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzOjpQSU5Mb2Nrb3V0OgotICAgICAgICByZXR1cm4g
UEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1c1BJTkxvY2tvdXQ7Ci0gICAgfQotCi0gICAgcmV0
dXJuIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXNGYWlsdXJlOwotfQotI2VuZGlmCi0KIHZv
aWQgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtQ29tcGxldGVQYXltZW50U2Vz
c2lvbihjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdD4m
IHJlc3VsdCkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVs
ZWdhdGUpOwotCi0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9kaWRSZWFjaEZpbmFsU3RhdGUgPSBXZWJDb3JlOjppc0ZpbmFsU3RhdGVSZXN1bHQocmVz
dWx0KTsKLQotI2lmIEhBVkUoUEFTU0tJVF9HUkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBzdGF0
dXMgPSByZXN1bHQgPyByZXN1bHQtPnN0YXR1cyA6IFdlYkNvcmU6OlBheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzOjpTdWNjZXNzOwotICAgIGF1dG8gcGtQYXltZW50QXV0aG9yaXphdGlvblJlc3Vs
dCA9IGFkb3B0TlMoW1BBTDo6YWxsb2NQS1BheW1lbnRBdXRob3JpemF0aW9uUmVzdWx0SW5zdGFu
Y2UoKSBpbml0V2l0aFN0YXR1czp0b1BLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMoc3RhdHVz
KSBlcnJvcnM6cmVzdWx0ID8gdG9OU0Vycm9ycyhyZXN1bHQtPmVycm9ycykuZ2V0KCkgOiBAWyBd
XSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9w
YXltZW50QXV0aG9yaXplZENvbXBsZXRpb24ocGtQYXltZW50QXV0aG9yaXphdGlvblJlc3VsdC5n
ZXQoKSk7Ci0jZWxzZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRl
bGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uKHRvUEtQYXltZW50QXV0aG9yaXph
dGlvblN0YXR1cyhyZXN1bHQpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudEF1dGhvcml6ZWRDb21wbGV0aW9uID0gbnVs
bHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudFNlc3Np
b24ocmVzdWx0KTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZv
cm1Db21wbGV0ZU1lcmNoYW50VmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpQYXltZW50TWVyY2hh
bnRTZXNzaW9uJiBwYXltZW50TWVyY2hhbnRTZXNzaW9uKQogewotICAgIEFTU0VSVChtX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAgIEFTU0VSVChtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0KLSAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Nlc3Npb25CbG9jayhwYXltZW50TWVyY2hh
bnRTZXNzaW9uLnBrUGF5bWVudE1lcmNoYW50U2Vzc2lvbigpLCBudWxscHRyKTsKLSAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3Nlc3Npb25CbG9jayA9
IG51bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5jb21wbGV0ZU1lcmNoYW50
VmFsaWRhdGlvbihwYXltZW50TWVyY2hhbnRTZXNzaW9uKTsKIH0KIAogdm9pZCBXZWJQYXltZW50
Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVNoaXBwaW5nTWV0aG9kU2VsZWN0aW9u
KGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNoaXBwaW5nTWV0aG9kVXBkYXRlPiYgdXBkYXRlKQog
ewotICAgIEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotICAg
IEFTU0VSVChtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSk7Ci0K
LSAgICBpZiAodXBkYXRlKQotICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJ
dGVtcyh1cGRhdGUtPm5ld1RvdGFsQW5kTGluZUl0ZW1zKTsKLQotI2lmIEhBVkUoUEFTU0tJVF9H
UkFOVUxBUl9FUlJPUlMpCi0gICAgYXV0byBwa1NoaXBwaW5nTWV0aG9kVXBkYXRlID0gYWRvcHRO
UyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RTaGlwcGluZ01ldGhvZFVwZGF0ZUluc3RhbmNl
KCkgaW5pdFdpdGhQYXltZW50U3VtbWFyeUl0ZW1zOm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3
Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKV0pOwotICAgIG1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hp
cHBpbmdNZXRob2RDb21wbGV0aW9uKHBrU2hpcHBpbmdNZXRob2RVcGRhdGUuZ2V0KCkpOwotI2Vs
c2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2Rp
ZFNlbGVjdFNoaXBwaW5nTWV0aG9kQ29tcGxldGlvbihQS1BheW1lbnRBdXRob3JpemF0aW9uU3Rh
dHVzU3VjY2VzcywgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9wYXltZW50U3VtbWFyeUl0ZW1zLmdldCgpKTsKLSNlbmRpZgotICAgIG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBpbmdNZXRob2RD
b21wbGV0aW9uID0gbnVsbHB0cjsKKyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBs
ZXRlU2hpcHBpbmdNZXRob2RTZWxlY3Rpb24odXBkYXRlKTsKIH0KIAotI2lmICFIQVZFKFBBU1NL
SVRfR1JBTlVMQVJfRVJST1JTKQotc3RhdGljIFBLUGF5bWVudEF1dGhvcml6YXRpb25TdGF0dXMg
dG9QS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNo
aXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKLXsKLSAgICBpZiAoIXVwZGF0ZSB8fCB1cGRh
dGUtPmVycm9ycy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0
aW9uU3RhdHVzU3VjY2VzczsKLQotICAgIGlmICh1cGRhdGUtPmVycm9ycy5zaXplKCkgPT0gMSkg
ewotICAgICAgICBhdXRvJiBlcnJvciA9IHVwZGF0ZS0+ZXJyb3JzWzBdOwotICAgICAgICBzd2l0
Y2ggKGVycm9yLmNvZGUpIHsKLSAgICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNv
ZGU6OlVua25vd246Ci0gICAgICAgIGNhc2UgV2ViQ29yZTo6UGF5bWVudEVycm9yOjpDb2RlOjpB
ZGRyZXNzVW5zZXJ2aWNlYWJsZToKLSAgICAgICAgICAgIHJldHVybiBQS1BheW1lbnRBdXRob3Jp
emF0aW9uU3RhdHVzRmFpbHVyZTsKLQotICAgICAgICBjYXNlIFdlYkNvcmU6OlBheW1lbnRFcnJv
cjo6Q29kZTo6QmlsbGluZ0NvbnRhY3RJbnZhbGlkOgotICAgICAgICAgICAgcmV0dXJuIFBLUGF5
bWVudEF1dGhvcml6YXRpb25TdGF0dXNJbnZhbGlkQmlsbGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAg
ICAgICAgY2FzZSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvZGU6OlNoaXBwaW5nQ29udGFjdElu
dmFsaWQ6Ci0gICAgICAgICAgICBpZiAoZXJyb3IuY29udGFjdEZpZWxkICYmIGVycm9yLmNvbnRh
Y3RGaWVsZCA9PSBXZWJDb3JlOjpQYXltZW50RXJyb3I6OkNvbnRhY3RGaWVsZDo6UG9zdGFsQWRk
cmVzcykKLSAgICAgICAgICAgICAgICByZXR1cm4gUEtQYXltZW50QXV0aG9yaXphdGlvblN0YXR1
c0ludmFsaWRTaGlwcGluZ1Bvc3RhbEFkZHJlc3M7Ci0KLSAgICAgICAgICAgIHJldHVybiBQS1Bh
eW1lbnRBdXRob3JpemF0aW9uU3RhdHVzSW52YWxpZFNoaXBwaW5nQ29udGFjdDsKLSAgICAgICAg
fQotICAgIH0KLQotICAgIHJldHVybiBQS1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVzRmFpbHVy
ZTsKLX0KLSNlbmRpZgotCiB2b2lkIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5OjpwbGF0Zm9y
bUNvbXBsZXRlU2hpcHBpbmdDb250YWN0U2VsZWN0aW9uKGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6
OlNoaXBwaW5nQ29udGFjdFVwZGF0ZT4mIHVwZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOwotCi0gICAgaWYgKHVwZGF0ZSkgewotICAg
ICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1l
bnRTdW1tYXJ5SXRlbXMgPSB0b1BLUGF5bWVudFN1bW1hcnlJdGVtcyh1cGRhdGUtPm5ld1RvdGFs
QW5kTGluZUl0ZW1zKTsKLQotICAgICAgICBhdXRvIHNoaXBwaW5nTWV0aG9kcyA9IGFkb3B0TlMo
W1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOwotICAgICAgICBmb3IgKGF1dG8mIHNoaXBw
aW5nTWV0aG9kIDogdXBkYXRlLT5uZXdTaGlwcGluZ01ldGhvZHMpCi0gICAgICAgICAgICBbc2hp
cHBpbmdNZXRob2RzIGFkZE9iamVjdDp0b1BLU2hpcHBpbmdNZXRob2Qoc2hpcHBpbmdNZXRob2Qp
LmdldCgpXTsKLQotICAgICAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcyA9IFdURk1vdmUoc2hpcHBpbmdNZXRob2RzKTsKLSAg
ICB9Ci0KLSNpZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIGF1dG8gcGtTaGlw
cGluZ0NvbnRhY3RVcGRhdGUgPSBhZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50UmVxdWVzdFNo
aXBwaW5nQ29udGFjdFVwZGF0ZUluc3RhbmNlKCkgaW5pdFdpdGhFcnJvcnM6dXBkYXRlID8gdG9O
U0Vycm9ycyh1cGRhdGUtPmVycm9ycykuZ2V0KCkgOiBAWyBdIHBheW1lbnRTdW1tYXJ5SXRlbXM6
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3Vt
bWFyeUl0ZW1zLmdldCgpIHNoaXBwaW5nTWV0aG9kczptX3BheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3NoaXBwaW5nTWV0aG9kcy5nZXQoKV0pOwotICAgIG1fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlkU2VsZWN0U2hpcHBp
bmdDb250YWN0Q29tcGxldGlvbihwa1NoaXBwaW5nQ29udGFjdFVwZGF0ZS5nZXQoKSk7Ci0jZWxz
ZQotICAgIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fZGlk
U2VsZWN0U2hpcHBpbmdDb250YWN0Q29tcGxldGlvbih0b1BLUGF5bWVudEF1dGhvcml6YXRpb25T
dGF0dXModXBkYXRlKSwgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdh
dGUtPl9zaGlwcGluZ01ldGhvZHMuZ2V0KCksIG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQoKSk7Ci0jZW5kaWYKLSAg
ICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X2RpZFNlbGVj
dFNoaXBwaW5nQ29udGFjdENvbXBsZXRpb24gPSBudWxscHRyOworICAgIG1fYXV0aG9yaXphdGlv
blByZXNlbnRlci0+Y29tcGxldGVTaGlwcGluZ0NvbnRhY3RTZWxlY3Rpb24odXBkYXRlKTsKIH0K
IAogdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1Db21wbGV0ZVBheW1l
bnRNZXRob2RTZWxlY3Rpb24oY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6UGF5bWVudE1ldGhvZFVw
ZGF0ZT4mIHVwZGF0ZSkKIHsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdD
b250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9s
bGVyRGVsZWdhdGUpOwotCi0gICAgaWYgKHVwZGF0ZSkKLSAgICAgICAgbV9wYXltZW50QXV0aG9y
aXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zID0gdG9Q
S1BheW1lbnRTdW1tYXJ5SXRlbXModXBkYXRlLT5uZXdUb3RhbEFuZExpbmVJdGVtcyk7Ci0KLSNp
ZiBIQVZFKFBBU1NLSVRfR1JBTlVMQVJfRVJST1JTKQotICAgIGF1dG8gcGtQYXltZW50TWV0aG9k
VXBkYXRlID0gYWRvcHROUyhbUEFMOjphbGxvY1BLUGF5bWVudFJlcXVlc3RQYXltZW50TWV0aG9k
VXBkYXRlSW5zdGFuY2UoKSBpbml0V2l0aFBheW1lbnRTdW1tYXJ5SXRlbXM6bV9wYXltZW50QXV0
aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9wYXltZW50U3VtbWFyeUl0ZW1zLmdl
dCgpXSk7Ci0gICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUt
Pl9kaWRTZWxlY3RQYXltZW50TWV0aG9kQ29tcGxldGlvbihwa1BheW1lbnRNZXRob2RVcGRhdGUu
Z2V0KCkpOwotI2Vsc2UKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uKG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcy5nZXQo
KSk7Ci0jZW5kaWYKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxl
Z2F0ZS0+X2RpZFNlbGVjdFBheW1lbnRNZXRob2RDb21wbGV0aW9uID0gbnVsbHB0cjsKKyAgICBt
X2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmNvbXBsZXRlUGF5bWVudE1ldGhvZFNlbGVjdGlvbih1
cGRhdGUpOwogfQogCiBWZWN0b3I8U3RyaW5nPiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6
cGxhdGZvcm1BdmFpbGFibGVQYXltZW50TmV0d29ya3MoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1t
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvaW9zL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5SU9TLm1tCmluZGV4IDQzMjM1MjcwMjk5ODAzYTFkZmEwYWRkODBhY2UwMzExMGQ5ODNk
MWEuLjcwZDU0NDQyN2VjMGY5YjY0NDUxNDlmNDUxYTYzZmEyMDg3MWI1ODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L2lvcy9XZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9pb3MvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlJT1MubW0KQEAgLTI5LDggKzI5LDggQEAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiBFTkFCTEUoQVBQTEVfUEFZKQogCiAjaW1wb3J0ICJBUElVSUNsaWVu
dC5oIgorI2ltcG9ydCAiUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCIKICNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgotI2ltcG9ydCAiV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2Nv
YS5oIgogI2ltcG9ydCA8UGFzc0tpdC9QYXNzS2l0Lmg+CiAjaW1wb3J0IDxVSUtpdC9VSVZpZXdD
b250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BheW1lbnRBdXRob3JpemF0aW9uU3RhdHVz
Lmg+CkBAIC00MCw0NyArNDAsMjAgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHk6OnBsYXRmb3JtU2hvd1BheW1lbnRVSShjb25zdCBVUkwmIG9y
aWdpbmF0aW5nVVJMLCBjb25zdCBWZWN0b3I8VVJMPiYgbGlua0ljb25VUkxTdHJpbmdzLCBjb25z
dCBXZWJDb3JlOjpBcHBsZVBheVNlc3Npb25QYXltZW50UmVxdWVzdCYgcmVxdWVzdCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBVSVZp
ZXdDb250cm9sbGVyICpwcmVzZW50aW5nVmlld0NvbnRyb2xsZXIgPSBtX2NsaWVudC5wYXltZW50
Q29vcmRpbmF0b3JQcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKnRoaXMpOwotCi0gICAgaWYgKCFw
cmVzZW50aW5nVmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFs
c2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgQVNTRVJUKCFtX3BheW1lbnRBdXRo
b3JpemF0aW9uVmlld0NvbnRyb2xsZXIpOwotCiAgICAgYXV0byBwYXltZW50UmVxdWVzdCA9IHBs
YXRmb3JtUGF5bWVudFJlcXVlc3Qob3JpZ2luYXRpbmdVUkwsIGxpbmtJY29uVVJMU3RyaW5ncywg
cmVxdWVzdCk7CiAKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBh
ZG9wdE5TKFtQQUw6OmFsbG9jUEtQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVySW5z
dGFuY2UoKSBpbml0V2l0aFBheW1lbnRSZXF1ZXN0OnBheW1lbnRSZXF1ZXN0LmdldCgpXSk7Ci0g
ICAgaWYgKCFtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIpIHsKLSAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgPSBhZG9wdE5TKFtb
V0tQYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoUGF5bWVudENvb3JkaW5hdG9yUHJveHk6KnRoaXNdKTsKLSAgICBtX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS0+X3BheW1lbnRTdW1tYXJ5SXRlbXMgPSBbcGF5
bWVudFJlcXVlc3QgcGF5bWVudFN1bW1hcnlJdGVtc107Ci0gICAgbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUtPl9zaGlwcGluZ01ldGhvZHMgPSBbcGF5bWVudFJl
cXVlc3Qgc2hpcHBpbmdNZXRob2RzXTsKKyAgICBBU1NFUlQoIW1fYXV0aG9yaXphdGlvblByZXNl
bnRlcik7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyID0gbV9jbGllbnQucGF5bWVudENv
b3JkaW5hdG9yQXV0aG9yaXphdGlvblByZXNlbnRlcigqdGhpcywgcGF5bWVudFJlcXVlc3QuZ2V0
KCkpOworICAgIGlmICghbV9hdXRob3JpemF0aW9uUHJlc2VudGVyKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogCi0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25W
aWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTptX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZS5nZXQoKV07Ci0gICAgW21fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250
cm9sbGVyRGVsZWdhdGUuZ2V0KCldOwotCi0gICAgW3ByZXNlbnRpbmdWaWV3Q29udHJvbGxlciBw
cmVzZW50Vmlld0NvbnRyb2xsZXI6bV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVy
LmdldCgpIGFuaW1hdGVkOllFUyBjb21wbGV0aW9uOm51bGxwdHJdOwotCi0gICAgY29tcGxldGlv
bkhhbmRsZXIodHJ1ZSk7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5wcmVzZW50KG1f
Y2xpZW50LnBheW1lbnRDb29yZGluYXRvclByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigqdGhpcyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eTo6aGlkZVBheW1lbnRVSSgpCiB7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgQVNTRVJUKG1fcGF5bWVudEF1dGhvcml6YXRp
b25WaWV3Q29udHJvbGxlckRlbGVnYXRlKTsKLQotICAgIFtbbV9wYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyIHByZXNlbnRpbmdWaWV3Q29udHJvbGxlcl0gZGlzbWlzc1ZpZXdDb250
cm9sbGVyQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb246bnVsbHB0cl07Ci0gICAgW21fcGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlciBzZXREZWxlZ2F0ZTpuaWxdOwotICAgIFttX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOm5pbF07Ci0g
ICAgbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyID0gbnVsbHB0cjsKLQotICAg
IFttX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBpbnZhbGlkYXRl
XTsKLSAgICBtX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IG51
bGxwdHI7CisgICAgbV9hdXRob3JpemF0aW9uUHJlc2VudGVyLT5kaXNtaXNzKCk7CisgICAgbV9h
dXRob3JpemF0aW9uUHJlc2VudGVyID0gbnVsbHB0cjsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29y
ZGluYXRvclByb3h5TWFjLm1tCmluZGV4IGJkMjU2NGM0M2NjODI2NzViM2Y5MGY3YWYzNTI4YzAy
NmJiYWU1ZjQuLjZjY2Y5YzNiMTk2ZWU0Y2M3ZTE2OTg1ZjQ1MGM0YzQ4ZDY2NzQxZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29vcmRp
bmF0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KQEAgLTI4LDggKzI4LDggQEAKIAogI2lm
IFBMQVRGT1JNKE1BQykgJiYgRU5BQkxFKEFQUExFX1BBWSkKIAorI2ltcG9ydCAiUGF5bWVudEF1
dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCi0j
aW1wb3J0ICJXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNvY29hLmgiCiAjaW1wb3J0IDxwYWwv
Y29jb2EvUGFzc0tpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KIApAQCAt
NjQsMTIgKzY0LDcgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eTo6cGxhdGZvcm1T
aG93UGF5bWVudFVJKGNvbnN0IFVSTCYgb3JpZ2luYXRpbmdVUkwKIAogICAgICAgICBBU1NFUlQo
dmlld0NvbnRyb2xsZXIpOwogCi0gICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS1Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhQ
YXltZW50Q29vcmRpbmF0b3JQcm94eToqcGF5bWVudENvb3JkaW5hdG9yUHJveHldKTsKLSAgICAg
ICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29u
dHJvbGxlckRlbGVnYXRlLT5fcGF5bWVudFN1bW1hcnlJdGVtcyA9IFtwYXltZW50UmVxdWVzdCBw
YXltZW50U3VtbWFyeUl0ZW1zXTsKLSAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1f
cGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLT5fc2hpcHBpbmdNZXRo
b2RzID0gW3BheW1lbnRSZXF1ZXN0IHNoaXBwaW5nTWV0aG9kc107Ci0gICAgICAgIHBheW1lbnRD
b29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSB2
aWV3Q29udHJvbGxlcjsKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6cGF5bWVudENvb3JkaW5h
dG9yUHJveHktPm1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlLmdl
dCgpXTsKLSAgICAgICAgW3BheW1lbnRDb29yZGluYXRvclByb3h5LT5tX3BheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIgc2V0UHJpdmF0ZURlbGVnYXRlOnBheW1lbnRDb29yZGluYXRv
clByb3h5LT5tX3BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZS5nZXQo
KV07CisgICAgICAgIHBheW1lbnRDb29yZGluYXRvclByb3h5LT5tX2F1dGhvcml6YXRpb25QcmVz
ZW50ZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xs
ZXI+KCpwYXltZW50Q29vcmRpbmF0b3JQcm94eSwgcGF5bWVudFJlcXVlc3QuZ2V0KCksIHZpZXdD
b250cm9sbGVyKTsKIAogICAgICAgICBBU1NFUlQoIXBheW1lbnRDb29yZGluYXRvclByb3h5LT5t
X3NoZWV0V2luZG93KTsKICAgICAgICAgcGF5bWVudENvb3JkaW5hdG9yUHJveHktPm1fc2hlZXRX
aW5kb3cgPSBbTlNXaW5kb3cgd2luZG93V2l0aENvbnRlbnRWaWV3Q29udHJvbGxlcjp2aWV3Q29u
dHJvbGxlcl07CkBAIC05MCwyNiArODUsMjAgQEAgdm9pZCBXZWJQYXltZW50Q29vcmRpbmF0b3JQ
cm94eTo6aGlkZVBheW1lbnRVSSgpCiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkFjdGl2YXRp
bmcpIHsKICAgICAgICAgKyttX3Nob3dQYXltZW50VUlSZXF1ZXN0U2VlZDsKIAotICAgICAgICBB
U1NFUlQoIW1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlcik7Ci0gICAgICAgIEFT
U0VSVCghbV9wYXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAg
ICAgICBBU1NFUlQoIW1fYXV0aG9yaXphdGlvblByZXNlbnRlcik7CiAgICAgICAgIEFTU0VSVCgh
bV9zaGVldFdpbmRvdyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9w
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyKTsKLSAgICBBU1NFUlQobV9wYXltZW50
QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyRGVsZWdhdGUpOworICAgIEFTU0VSVChtX2F1dGhv
cml6YXRpb25QcmVzZW50ZXIpOwogICAgIEFTU0VSVChtX3NoZWV0V2luZG93KTsKIAogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9zaGVl
dFdpbmRvd1dpbGxDbG9zZU9ic2VydmVyLmdldCgpXTsKICAgICBtX3NoZWV0V2luZG93V2lsbENs
b3NlT2JzZXJ2ZXIgPSBudWxscHRyOwogCiAgICAgW1ttX3NoZWV0V2luZG93IHNoZWV0UGFyZW50
XSBlbmRTaGVldDptX3NoZWV0V2luZG93LmdldCgpXTsKLSAgICBbbV9wYXltZW50QXV0aG9yaXph
dGlvblZpZXdDb250cm9sbGVyIHNldERlbGVnYXRlOm5pbF07Ci0gICAgW21fcGF5bWVudEF1dGhv
cml6YXRpb25WaWV3Q29udHJvbGxlciBzZXRQcml2YXRlRGVsZWdhdGU6bmlsXTsKLSAgICBtX3Bh
eW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIgPSBudWxscHRyOwotCi0gICAgW21fcGF5
bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlIGludmFsaWRhdGVdOwotICAg
IG1fcGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlckRlbGVnYXRlID0gbnVsbHB0cjsK
KyAgICBtX2F1dGhvcml6YXRpb25QcmVzZW50ZXItPmRpc21pc3MoKTsKKyAgICBtX2F1dGhvcml6
YXRpb25QcmVzZW50ZXIgPSBudWxscHRyOwogCiAgICAgbV9zaGVldFdpbmRvdyA9IG51bGxwdHI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjczMWViMjlhNzgzNGJkMGJhNDk5MDYzNTA5
OTZlYjU0NGY1ZjlhZi4uYTczMGE1NWQxM2FhNzEzNGY2N2JjNTNiZDlkMTkwYTVhNWFlMjAwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMSw0ICsxLDQgQEAKLS8vIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIw
MTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLwogLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDggKzY1LDExIEBAIFBsYXRmb3JtL2NnL0NHVXRpbGl0aWVz
LmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9jb2NvYS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xh
c3NpZmllckNvY29hLmNwcAogUGxhdGZvcm0vY2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzQ2xhc3NpZmllci5jcHAKIAorUGxhdGZvcm0vY29jb2EvUGF5bWVudEF1dGhvcml6YXRpb25Q
cmVzZW50ZXIubW0KK1BsYXRmb3JtL2NvY29hL1BheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIubW0KIFBsYXRmb3JtL2NvY29hL1NoYXJlZE1lbW9yeUNvY29hLmNwcAogUGxhdGZvcm0v
Y29jb2EvV0tDcmFzaFJlcG9ydGVyLm1tCitQbGF0Zm9ybS9jb2NvYS9XS1BheW1lbnRBdXRob3Jp
emF0aW9uRGVsZWdhdGUubW0KIFBsYXRmb3JtL2NvY29hL1dlYktpdEFkZGl0aW9ucy5tbSBAbm8t
dW5pZnkKIAogUGxhdGZvcm0vZm91bmRhdGlvbi9Mb2dnaW5nRm91bmRhdGlvbi5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmNWIwYjE5NTU0NDMyM2E2YzU2ZTQ2
YjVmMTFjMWQ2ODkwYWM5N2IxLi5kMjEwODU5NjJjYWI2N2IxMjA5OTZkNmU4NTFjMWVkYmNiM2Ux
ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTk4Niw2ICsx
OTg2LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQVBQTEVfUEFZKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIFVJVmlld0NvbnRyb2xsZXIgKnBheW1lbnRDb29yZGluYXRvclByZXNlbnRp
bmdWaWV3Q29udHJvbGxlcihjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFs
OwogICAgIGNvbnN0IFN0cmluZyYgcGF5bWVudENvb3JkaW5hdG9yQ1REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlKGNvbnN0IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JikgZmluYWw7CisgICAg
c3RkOjp1bmlxdWVfcHRyPFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyPiBwYXltZW50Q29v
cmRpbmF0b3JBdXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5
JiwgUEtQYXltZW50UmVxdWVzdCAqKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShBUFBMRV9Q
QVkpICYmIFBMQVRGT1JNKE1BQykKICAgICBOU1dpbmRvdyAqcGF5bWVudENvb3JkaW5hdG9yUHJl
c2VudGluZ1dpbmRvdyhjb25zdCBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eSYpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXgg
MjBhYWQxMDQ1YjkyNzNjY2ZlYzNmZWNhZTE5YTUxOWY3ZDRkYzgxYi4uNTAxYzcyN2Y4NGJlYzUy
MGQyMGI3Y2I2NWE2NGYwN2FiNGMxMTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC0zOCw2ICszOCw3IEBACiAjaW1wb3J0ICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCiAjaW1wb3J0ICJOYXZpZ2F0aW9uU3RhdGUuaCIKICNpbXBv
cnQgIlBhZ2VDbGllbnQuaCIKKyNpbXBvcnQgIlBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRy
b2xsZXIuaCIKICNpbXBvcnQgIlByaW50SW5mby5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWFQcm94eS5oIgogI2ltcG9ydCAiUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFQ
cm94eU1lc3NhZ2VzLmgiCkBAIC0xMTc5LDYgKzExODAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmRpZFJlcXVlc3RQYXNzd29yZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVTaGFyZWQo
UmVmPFcKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAKK3N0ZDo6dW5pcXVlX3B0cjxQYXltZW50
QXV0aG9yaXphdGlvblByZXNlbnRlcj4gV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JB
dXRob3JpemF0aW9uUHJlc2VudGVyKFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5JiBwYXltZW50
Q29vcmRpbmF0b3JQcm94eSwgUEtQYXltZW50UmVxdWVzdCAqcGF5bWVudFJlcXVlc3QpCit7Cisg
ICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8UGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJv
bGxlcj4ocGF5bWVudENvb3JkaW5hdG9yUHJveHksIHBheW1lbnRSZXF1ZXN0KTsKK30KKwogVUlW
aWV3Q29udHJvbGxlciAqV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JQcmVzZW50aW5n
Vmlld0NvbnRyb2xsZXIoY29uc3QgV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkmKQogewogICAg
IHJldHVybiB1aUNsaWVudCgpLnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZTliMDc1Njg1
MGQ3ODBkNDU1YjVlMjcyMTNmNDE0ZjQ0OTQ3NzAxZi4uNzc5NWRkYTE0NzVjYTIwZGJjNDM1ZmJj
OTMyNzFiY2ZhNDNkZTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC0yOTMsNyArMjkzLDYgQEAKIAkJMUFCMTZBREUxNjQ4NTk4NDAw
MjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFEQzE2NDg1OTg0MDAyOTBENjIgLyog
UmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWEuaCAqLzsgfTsKIAkJMUFCMTZBRTIxNjQ4NjU2RDAw
MjkwRDYyIC8qIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQjE2QUUwMTY0ODY1NkQwMDI5MEQ2
MiAvKiBSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYVByb3h5LmggKi87IH07CiAJCTFBQjE2QUVB
MTY0QjNBODgwMDI5MEQ2MiAvKiBSZW1vdGVMYXllclRyZWVDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxNkFFODE2NEIzQTg4MDAyOTBE
NjIgLyogUmVtb3RlTGF5ZXJUcmVlQ29udGV4dC5oICovOyB9OwotCQkxQUIxRjc3RTFEMUIzMEE5
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFCMUY3NzgxRDFCMzBBOTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJMUFCMUY3
OEMxRDFCMzM1NTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIxRjc4OTFEMUIzMzU1
MDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCAqLzsgfTsKIAkJMUFCMUY3
OTYxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvck1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQUIx
Rjc5MjFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLzsgfTsKIAkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRD
b29yZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQUIxRjc5MzFEMUIzNjEzMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5h
dG9yTWVzc2FnZXMuaCAqLzsgfTsKQEAgLTEyODQsNiArMTI4MywxMCBAQAogCQlBMTNEQzY4MjIw
N0FBNkIyMDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTNEQzY4MDIwN0FBNkIy
MDA2NkVGNzIgLyogV0tBcHBsaWNhdGlvblN0YXRlVHJhY2tpbmdWaWV3LmggKi87IH07CiAJCUEx
NUVFREU2MUUzMDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE1RUVERTQxRTMwMUNFRTAwMDA2OUIw
IC8qIFdLUGFzc3dvcmRWaWV3LmggKi87IH07CiAJCUExNzVDNDRBMjFBQTMxNzEwMDAwMzdEMCAv
KiBBcmd1bWVudENvZGVyc0NvY29hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1lbnRDb2RlcnND
b2NvYS5oICovOyB9OworCQlBMTc5OEIzRTIyMkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhv
cml6YXRpb25QcmVzZW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExNzk4QjNEMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5oICovOyB9OworCQlBMTc5OEI0MzIyMkQ5OERGMDAwNzY0QkQgLyogUGF5bWVu
dEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRB
dXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJQTE3OThCNDkyMjJFNTMxRDAw
MDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNDcyMjJFNTMwQTAwMDc2NEJE
IC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovOyB9OworCQlBMTc5OEI0QzIy
MkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTE3OThCNEIyMjJGMUJE
NDAwMDc2NEJEIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLzsgfTsKIAkJ
QTE4MUE3OTgyMUFDQzc0QjAwNTlBMzE2IC8qIFdlYktpdEFkZGl0aW9ucy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExODFBNzk3MjFBQ0FDNjEwMDU5
QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi87IH07CiAJCUExODJENUI1MUJFNkJEMjUwMDg3
QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTgyRDVCMzFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0
eUlPUy5oICovOyB9OwogCQlBMTlERDNDMDFEMDdEMTY4MDBBQzgyM0IgLyogX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExOUREM0JGMUQwN0QxNjgwMEFDODIzQiAvKiBfV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXJJbnRlcm5hbC5oICovOyB9OwpAQCAtMjIyOCw3ICsyMjMxLDYgQEAKIAkJMUFCMUY3
NzExRDFCMkY3RTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3MjFEMUIyRjdFMDA3QzlCRDEgLyog
V2ViUGF5bWVudENvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBheW1lbnRDb29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
QUIxRjc3MzFEMUIyRjdFMDA3QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yLm1lc3NhZ2Vz
LmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvci5tZXNzYWdl
cy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMUFCMUY3NzgxRDFCMzBBOTAwN0M5
QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3OTFEMUIzMEE5MDA3QzlCRDEgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQjFGNzdCMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5SU9TLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUIxRjc3RDFEMUIzMEE5MDA3QzlCRDEgLyogV2ViUGF5bWVu
dENvb3JkaW5hdG9yUHJveHlNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTM4NTMsNiArMzg1NSwxMyBAQAogCQlBMTVFRURFNDFFMzAxQ0VFMDAw
MDY5QjAgLyogV0tQYXNzd29yZFZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tQYXNzd29yZFZpZXcuaDsgcGF0aCA9IGlvcy9XS1Bhc3N3b3JkVmlldy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMTc1QzQ0OTIxQUEzMTcwMDAwMDM3RDAgLyogQXJndW1l
bnRDb2RlcnNDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcmd1bWVu
dENvZGVyc0NvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExNzVDNDRCMjFB
QTMzMUIwMDAwMzdEMCAvKiBBcmd1bWVudENvZGVyc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQXJndW1lbnRDb2RlcnNDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTE3OThCM0QyMjJEOTdBMjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2Vu
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1lbnRBdXRob3JpemF0aW9uUHJlc2VudGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExNzk4QjNGMjIyRDk4QjYwMDA3NjRCRCAvKiBQ
YXltZW50QXV0aG9yaXphdGlvblZpZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBheW1l
bnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQTE3OThCNDAyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmll
d0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlv
blZpZXdDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0
NzIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50QXV0aG9yaXphdGlvbkRlbGVnYXRlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlBMTc5OEI0ODIyMkU1MzBBMDAwNzY0QkQgLyogV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tQYXltZW50
QXV0aG9yaXphdGlvbkRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
MTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXltZW50QXV0aG9yaXphdGlvblByZXNlbnRlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE3OThCNEIyMjJGMUJENDAwMDc2NEJE
IC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTgxQTc5NzIxQUNBQzYxMDA1OUEzMTYgLyogV2ViS2l0QWRkaXRpb25zLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViS2l0QWRkaXRpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMTgyRDVCMjFCRTZCRDI1MDA4N0E3Q0MgLyogQWNjZXNzaWJpbGl0eUlPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2liaWxpdHlJ
T1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExODJENUIzMUJFNkJEMjUwMDg3
QTdDQyAvKiBBY2Nlc3NpYmlsaXR5SU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFjY2Vzc2liaWxpdHlJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUy
NzIsNyArNTI4MSw3IEBACiAJCTFBQjFGNzc3MUQxQjMwQTkwMDdDOUJEMSAvKiBjb2NvYSAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCi0JCQkJMUFCMUY3NzgxRDFC
MzBBOTAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5Q29jb2EuaCAqLywKKwkJ
CQlBMTc5OEI0QjIyMkYxQkQ0MDAwNzY0QkQgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlD
b2NvYS5oICovLAogCQkJCTFBQjFGNzc5MUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eUNvY29hLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBjb2NvYTsKQEAgLTYz
ODksMTAgKzYzOTgsMTYgQEAKIAkJNDQ1MEFFQkUxREMzRkFBQzAwOTk0M0YyIC8qIGNvY29hICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBMTc5OEIzRDIy
MkQ5N0EyMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50ZXIuaCAqLywKKwkJ
CQlBMTc5OEI0QTIyMkYxMzNBMDAwNzY0QkQgLyogUGF5bWVudEF1dGhvcml6YXRpb25QcmVzZW50
ZXIubW0gKi8sCisJCQkJQTE3OThCM0YyMjJEOThCNjAwMDc2NEJEIC8qIFBheW1lbnRBdXRob3Jp
emF0aW9uVmlld0NvbnRyb2xsZXIuaCAqLywKKwkJCQlBMTc5OEI0MDIyMkQ5OEI2MDAwNzY0QkQg
LyogUGF5bWVudEF1dGhvcml6YXRpb25WaWV3Q29udHJvbGxlci5tbSAqLywKIAkJCQk0NDUwQUVC
RjFEQzNGQUU1MDA5OTQzRjIgLyogU2hhcmVkTWVtb3J5Q29jb2EuY3BwICovLAogCQkJCUExODFB
Nzk3MjFBQ0FDNjEwMDU5QTMxNiAvKiBXZWJLaXRBZGRpdGlvbnMubW0gKi8sCiAJCQkJQTFGQjY4
MjIxRjZFNTE4MjAwQzQzRjlGIC8qIFdLQ3Jhc2hSZXBvcnRlci5oICovLAogCQkJCUExRkI2ODIz
MUY2RTUxODIwMEM0M0Y5RiAvKiBXS0NyYXNoUmVwb3J0ZXIubW0gKi8sCisJCQkJQTE3OThCNDcy
MjJFNTMwQTAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5oICovLAor
CQkJCUExNzk4QjQ4MjIyRTUzMEEwMDA3NjRCRCAvKiBXS1BheW1lbnRBdXRob3JpemF0aW9uRGVs
ZWdhdGUubW0gKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTkyNTYsNiArOTI3MSw4IEBACiAJCQkJMUFDNzUzN0MxODNBOUZEQjAwNzJD
QjE1IC8qIFBhZ2VMb2FkU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBOEI2NkIwMUJDNDND
ODYwMDgyREY3NyAvKiBQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUM1NzRBNTgxMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCUExNzk4QjNFMjIyRDk3QTIwMDA3NjRCRCAvKiBQYXltZW50QXV0aG9yaXphdGlv
blByZXNlbnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3OThCNDMyMjJEOThERjAwMDc2NEJE
IC8qIFBheW1lbnRBdXRob3JpemF0aW9uVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMxRTEyM0JBMjBBMTE1NzMwMDI2NDZGNCAvKiBQREZDb250ZXh0TWVudS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTE5NTgyRDMxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCBp
biBIZWFkZXJzICovLAogCQkJCTJENkJGMTI0MjFBRjU2RTEwMDFFNzlDOSAvKiBQZW5jaWxLaXRT
b2Z0TGluay5oIGluIEhlYWRlcnMgKi8sCkBAIC05NTYwLDcgKzk1NzcsNyBAQAogCQkJCTdDNDY5
NENBMUE0QjRFQTEwMEFENTg0NSAvKiBXZWJQYXN0ZWJvYXJkUHJveHlNZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUFCMUY3OTcxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29y
ZGluYXRvck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUIxRjc4QzFEMUIzMzU1MDA3
QzlCRDEgLyogV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJ
CTFBQjFGNzdFMUQxQjMwQTkwMDdDOUJEMSAvKiBXZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eUNv
Y29hLmggaW4gSGVhZGVycyAqLywKKwkJCQlBMTc5OEI0QzIyMkYxQkQ0MDAwNzY0QkQgLyogV2Vi
UGF5bWVudENvb3JkaW5hdG9yUHJveHlDb2NvYS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFCMUY3
OTkxRDFCMzYxMzAwN0M5QkQxIC8qIFdlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBM0U3MzYxMTFDQzI2
NTkwMDdCRDUzOSAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovLApAQCAt
OTg3NCw2ICs5ODkxLDcgQEAKIAkJCQkxQUI4QTFGMjE4NDAwQjYyMDBFOUFFNjkgLyogV0tQYWdl
VUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAv
KiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUExNUVFREU2MUUz
MDFDRUUwMDAwNjlCMCAvKiBXS1Bhc3N3b3JkVmlldy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE3
OThCNDkyMjJFNTMxRDAwMDc2NEJEIC8qIFdLUGF5bWVudEF1dGhvcml6YXRpb25EZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ2QUI1NDExOTJCMUM0QTAwM0E5RkQxIC8qIFdLUERGUGFn
ZU51bWJlckluZGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTEwNDZFQTEyMDc5MjYzMTAw
RjBDNUQ4IC8qIFdLUERGVmlldy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxMzVBQTkxNzNCMEJD
QTAwNTg2QUUyIC8qIFdLUGx1Z2luSW5mb3JtYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAtMTA4
NjgsNiArMTA4ODYsNyBAQAogCQkJCTFCQkJFNEEwMTlCNjZDNTMwMDZCN0Q4MSAvKiBSZW1vdGVX
ZWJJbnNwZWN0b3JVSU1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMThF
NjkxNzE2OUI2NjdCMDA5QjY2NzAgLyogU2VjSXRlbVNoaW1Qcm94eU1lc3NhZ2VSZWNlaXZlci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk2MTdBNTJEODFGNDNBOURBMDBEQ0RDMEEgLyogU2Vydmlj
ZVdvcmtlckNsaWVudEZldGNoTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTQxREU3QzZDMjIyNzhGMUUwMDUzMkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTJEOTJBNzg3MjEyQjZBQjEwMEY0OTNGRCAvKiBTaGFyZWFibGVC
aXRtYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRFNjk0M0QxOEJEMkE2ODAwNUMxNUU1IC8q
IFNtYXJ0TWFnbmlmaWNhdGlvbkNvbnRyb2xsZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUEzMzRERUQxNkRFOEY4ODAwNkE4RTM4IC8qIFN0b3JhZ2VBcmVhTWFwTWVz
c2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTEwNTIsNyArMTEwNzEsNiBAQAog
CQkJCTJEODUwOEM2MjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlOTcuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMkQ4NTA4RDgyMTJFMzNFRDAwMEVGNDZDIC8qIFVuaWZpZWRTb3VyY2U5
OC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDg1MDhDNTIxMkUzM0VEMDAwRUY0NkMgLyogVW5p
ZmllZFNvdXJjZTk5LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxREU3QzZDMjIyNzhGMUUwMDUz
MkI2NSAvKiBTZXJ2aWNlV29ya2VyRmV0Y2hUYXNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJE
ODUwOEQyMjEyRTMzRUQwMDBFRjQ2QyAvKiBVbmlmaWVkU291cmNlMTAwLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUNENDkxQjBEMUU3MzJFNEQwMDAwOTA2NiAvKiBVc2VyTWVkaWFDYXB0dXJlTWFu
YWdlck1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDRDQ5MUIxNzFFNzM1
MjU1MDAwMDkwNjYgLyogVXNlck1lZGlhQ2FwdHVyZU1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>