<?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>229693</bug_id>
          
          <creation_ts>2021-08-30 16:36:36 -0700</creation_ts>
          <short_desc>[LFC][Integration] Make naming more consistent across Layout::Run and Integration::Run structs</short_desc>
          <delta_ts>2021-08-31 06:48:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1788723</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2021-08-30 16:36:36 -0700</bug_when>
    <thetext>This is preparation for merging these 2 structs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788727</commentid>
    <comment_count>1</comment_count>
      <attachid>436827</attachid>
    <who name="alan">zalan</who>
    <bug_when>2021-08-30 16:37:48 -0700</bug_when>
    <thetext>Created attachment 436827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788884</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-31 06:47:27 -0700</bug_when>
    <thetext>Committed r281800 (241137@main): &lt;https://commits.webkit.org/241137@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 436827.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788885</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-31 06:48:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/82577261&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436827</attachid>
            <date>2021-08-30 16:37:48 -0700</date>
            <delta_ts>2021-08-31 06:47:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229693-20210830163747.patch</filename>
            <type>text/plain</type>
            <size>57526</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmFlM2EzMzE5M2Y1Mzlj
OTY0NWQzNjZkMTY2MTNmNzM3MmRkMGZkMy4uMzUxNDg1ZDVkOWMzM2EzZTFhZmIyNjE1ZGRkYTZk
ZWJhOWU0ZTExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMS0wOC0zMCAgQWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25d
IE1ha2UgbmFtaW5nIG1vcmUgY29uc2lzdGVudCBhY3Jvc3MgTGF5b3V0OjpSdW4gYW5kIEludGVn
cmF0aW9uOjpSdW4gc3RydWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgbWVyZ2luZyB0aGVzZSAyIHN0
cnVjdHMuCisKKyAgICAgICAgKiBkaXNwbGF5L0Rpc3BsYXlUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUcmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVEaXNwbGF5VHJl
ZSk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheTo6Qm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclRleHRSdW4gY29u
c3QpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5Lmg6CisgICAgICAg
ICogZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheTo6VGV4dEJveDo6VGV4dEJveCk6CisgICAgICAgICogZGlzcGxheS9jc3MvRGlzcGxheVRl
eHRCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OmV4cGFuc2lvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUZXh0Qm94Ojp0ZXh0IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvVmVyaWZpY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Y2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6Y2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6b3V0cHV0TWlzbWF0Y2hpbmdDb21wbGV4TGluZUluZm9ybWF0aW9uSWZOZWVkZWQpOgorICAg
ICAgICAqIGxheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250
ZW50QnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZURpc3BsYXlD
b250ZW50QnVpbGRlcjo6YnVpbGQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVE
aXNwbGF5Q29udGVudEJ1aWxkZXI6OmNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVD
b250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRGlzcGxheUNvbnRlbnRC
dWlsZGVyOjpjcmVhdGVSdW5zQW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lU3Bhbm5pbmdJbmxpbmVC
b3hlcyk6CisgICAgICAgICogbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9zaXRpb25Gb3JPdXRPZkZs
b3dDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVGb3JtYXR0aW5nU3RhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5l
Rm9ybWF0dGluZ1N0YXRlOjpydW5zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpydW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ1N0YXRlOjphZGRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OmNsZWFyTGluZUFuZFJ1bnMpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGU6OnNocmlua1RvRml0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ1N0YXRlOjpsaW5lUnVucyBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdT
dGF0ZTo6bGluZVJ1bnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxp
bmVGb3JtYXR0aW5nU3RhdGU6OmFkZExpbmVSdW4pOiBEZWxldGVkLgorICAgICAgICAqIGxheW91
dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZTo6UnVuOjpleHBhbnNpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lOjpSdW46OnNldEV4cGFuc2lvbik6CisgICAgICAgICogbGF5b3V0L2Zv
cm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpSdW46OnN0eWxlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
UnVuOjpSdW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpSdW46OlRleHQ6OlRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjpUZXh0OjpzdGFydCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OlRleHQ6OmVuZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OlRleHQ6Omxl
bmd0aCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46
OlRleHQ6Om9yaWdpbmFsQ29udGVudCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVSdW46OlRleHQ6OnJlbmRlcmVkQ29udGVudCBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OlRleHQ6Omhhc0h5cGhlbiBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OmlzVGV4dCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OmlzU29m
dExpbmVCcmVhayBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVSdW46OmlzTGluZUJyZWFrQm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZVJ1bjo6aXNMaW5lQnJlYWsgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjppc0F0b21pY0lubGluZUxldmVsQm94IGNvbnN0KTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZVJ1bjo6aXNJbmxpbmVCb3gg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjppc05v
blJvb3RJbmxpbmVCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lUnVuOjppc1Jvb3RJbmxpbmVCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lUnVuOjppc0dlbmVyaWNJbmxpbmVMZXZlbEJveCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OmlzSW5saW5lTGV2ZWxC
b3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjpp
c05vblJvb3RJbmxpbmVMZXZlbEJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVSdW46OnR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lUnVuOjpoYXNDb250ZW50IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZVJ1bjo6aXNMaW5lU3Bhbm5pbmcgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjpsb2dpY2FsUmVjdCBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46Omlua092ZXJmbG93
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZVJ1bjo6bG9n
aWNhbFRvcCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVS
dW46OmxvZ2ljYWxCb3R0b20gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lUnVuOjpsb2dpY2FsTGVmdCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVSdW46OmxvZ2ljYWxSaWdodCBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OmxvZ2ljYWxXaWR0aCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OmxvZ2ljYWxIZWlnaHQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjptb3ZlVmVy
dGljYWxseSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVSdW46OnRl
eHQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lUnVuOjp0ZXh0IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZVJ1bjo6ZXhwYW5z
aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZVJ1bjo6
bGF5b3V0Qm94IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZVJ1bjo6bGluZUluZGV4IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZVJ1bjo6TGluZVJ1bik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkxpbmVSdW46OlRleHQ6OlRleHQpOiBEZWxldGVkLgorICAgICAgICAqIGxheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvdGFibGUvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OlRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZv
ckNlbGxzKToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25J
bmxpbmVDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJ
bmxpbmVDb250ZW50OjppdGVyYXRvckZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAqIGxheW91
dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpJbmxpbmVDb250ZW50QnVpbGRl
cjo6YnVpbGQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246Oklu
bGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVEaXNwbGF5UnVucyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURp
c3BsYXlMaW5lcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
SW5saW5lQ29udGVudEJ1aWxkZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgICogbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudEJ1aWxkZXIuaDoKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50
ZWdyYXRpb25MaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0
aW9uOjpMaW5lTGF5b3V0OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3Jh
dGlvbjo6TGluZUxheW91dDo6aGl0VGVzdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRl
Z3JhdGlvbjo6TGluZUxheW91dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVz
KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25QYWdpbmF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjptYWtlQWRqdXN0
ZWRDb250ZW50KToKKyAgICAgICAgKiBsYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25SdW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW46OmxvZ2lj
YWxSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW46
OnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6dGV4dCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjppc0xpbmVC
cmVhayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpS
dW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6VGV4dDo6VGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpUZXh0Q29udGVu
dDo6c3RhcnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdy
YXRpb246OlJ1bjo6VGV4dENvbnRlbnQ6OmVuZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuOjpUZXh0Q29udGVudDo6bGVuZ3RoIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW46OlRl
eHRDb250ZW50OjpvcmlnaW5hbENvbnRlbnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6VGV4dENvbnRlbnQ6OnJlbmRlcmVkQ29udGVu
dCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
UnVuOjpUZXh0Q29udGVudDo6aGFzSHlwaGVuIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW46OnJlY3QgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6dGV4dENvbnRlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bjo6dGV4dENvbnRl
bnQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246
OlJ1bjo6VGV4dENvbnRlbnQ6OlRleHRDb250ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlv
dXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBh
dGg6OmlzVGV4dCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6
UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjpyZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6Omhhc0h5cGhlbiBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5Q
YXRoOjp0ZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dEludGVncmF0aW9uOjpS
dW5JdGVyYXRvck1vZGVyblBhdGg6OnN0YXJ0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dEludGVncmF0aW9uOjpSdW5JdGVyYXRvck1vZGVyblBhdGg6OmVuZCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXRJbnRlZ3JhdGlvbjo6UnVuSXRlcmF0b3JNb2Rlcm5QYXRoOjps
ZW5ndGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0SW50ZWdyYXRpb246OlJ1bkl0
ZXJhdG9yTW9kZXJuUGF0aDo6dHJhdmVyc2VOZXh0VGV4dFJ1bik6CisgICAgICAgICogbGF5b3V0
L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpzaG93SW5saW5lVHJlZUFuZFJ1bnMpOgorCiAyMDIxLTA4LTMwICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXSB0cnlib3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Rpc3BsYXkvRGlzcGxheVRyZWVCdWlsZGVyLmNwcAppbmRleCBjYTNlNmJmZWRlNzY4Nzll
YzllYTRlYjA2MzUyY2U2ZTQyMmUwYTE0Li5iYTdlMjgzOGJkMjg3YTk5OTIyNzZlOWE5Y2I3YzEw
MzdiNDRlZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L0Rpc3BsYXlUcmVl
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9EaXNwbGF5VHJlZUJ1aWxk
ZXIuY3BwCkBAIC0zMDUsNyArMzA1LDcgQEAgdm9pZCBUcmVlQnVpbGRlcjo6YnVpbGRJbmxpbmVE
aXNwbGF5VHJlZShjb25zdCBMYXlvdXQ6OkxheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwKIHsKICAg
ICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZElu
bGluZUZvcm1hdHRpbmdTdGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7CiAKLSAgICBmb3IgKGF1
dG8mIHJ1biA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lUnVucygpKSB7CisgICAgZm9yIChh
dXRvJiBydW4gOiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUucnVucygpKSB7CiAgICAgICAgIGlmIChy
dW4uaXNSb290SW5saW5lQm94KCkpIHsKICAgICAgICAgICAgIC8vIE5vdCBzdXBwb3J0ZWQgeWV0
LgogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kaXNw
bGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5Qm94RmFjdG9yeS5jcHAKaW5kZXggMjM2YjllNzhhMWU4NmZkMzVhOTlkMjVhYmUx
MzA4NzUzYTRiNDllMi4uZTQ3MzNhMGE2NTY2OTZkNDdhNjg5OGNhYTVlYjhiYTFmMzcwMDdiNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3Rvcnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmNw
cApAQCAtMTQzLDcgKzE0Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IEJveEZhY3Rvcnk6OmRp
c3BsYXlCb3hGb3JMYXlvdXRCb3goY29uc3QgTGF5b3V0OjpCb3gmIGxheW91CiAgICAgcmV0dXJu
IG1ha2VVbmlxdWU8Qm94PihtX3RyZWVCdWlsZGVyLnRyZWUoKSwgcGl4ZWxTbmFwcGVkQm9yZGVy
Qm94UmVjdCwgV1RGTW92ZShzdHlsZSksIGZsYWdzKTsKIH0KIAotc3RkOjp1bmlxdWVfcHRyPEJv
eD4gQm94RmFjdG9yeTo6ZGlzcGxheUJveEZvclRleHRSdW4oY29uc3QgTGF5b3V0OjpMaW5lUnVu
JiBydW4sIGNvbnN0IExheW91dDo6TGluZUdlb21ldHJ5JiBsaW5lR2VvbWV0cnksIGNvbnN0IENv
bnRhaW5pbmdCbG9ja0NvbnRleHQmIGNvbnRhaW5pbmdCbG9ja0NvbnRleHQpIGNvbnN0CitzdGQ6
OnVuaXF1ZV9wdHI8Qm94PiBCb3hGYWN0b3J5OjpkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBM
YXlvdXQ6OlJ1biYgcnVuLCBjb25zdCBMYXlvdXQ6OkxpbmVHZW9tZXRyeSYgbGluZUdlb21ldHJ5
LCBjb25zdCBDb250YWluaW5nQmxvY2tDb250ZXh0JiBjb250YWluaW5nQmxvY2tDb250ZXh0KSBj
b25zdAogewogICAgIEFTU0VSVChydW4udGV4dCgpKTsKICAgICBhdXRvIGxpbmVSZWN0ID0gbGlu
ZUdlb21ldHJ5LmxpbmVCb3hMb2dpY2FsUmVjdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlCb3hGYWN0b3J5LmgKaW5kZXggNzA1Yjg3Y2Y4ZGIzNTMyOWY5MTk5ODA2
ZWQ4ODY5YzBjNDEyMDU4My4uYzllNjlkZGRlZjQwMDFhZDJhZjFlN2ZjOTAyNjY5ZGJlNzkzZGU3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheUJveEZhY3Rv
cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5Qm94RmFjdG9yeS5o
CkBAIC00MSw3ICs0MSw3IEBAIGNsYXNzIEJveDsKIGNsYXNzIEJveEdlb21ldHJ5OwogY2xhc3Mg
Q29udGFpbmVyQm94OwogY2xhc3MgTGluZUdlb21ldHJ5Owotc3RydWN0IExpbmVSdW47CitzdHJ1
Y3QgUnVuOwogfQogCiBuYW1lc3BhY2UgRGlzcGxheSB7CkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yQm9keUJveChjb25zdCBM
YXlvdXQ6OkJveCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWluaW5n
QmxvY2tDb250ZXh0JiwgUm9vdEJhY2tncm91bmRQcm9wYWdhdGlvbikgY29uc3Q7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEJveD4gZGlzcGxheUJveEZvckxheW91dEJveChjb25zdCBMYXlvdXQ6OkJv
eCYsIGNvbnN0IExheW91dDo6Qm94R2VvbWV0cnkmLCBjb25zdCBDb250YWluaW5nQmxvY2tDb250
ZXh0JikgY29uc3Q7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Qm94PiBkaXNwbGF5Qm94Rm9yVGV4
dFJ1bihjb25zdCBMYXlvdXQ6OkxpbmVSdW4mLCBjb25zdCBMYXlvdXQ6OkxpbmVHZW9tZXRyeSYs
IGNvbnN0IENvbnRhaW5pbmdCbG9ja0NvbnRleHQmKSBjb25zdDsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8Qm94PiBkaXNwbGF5Qm94Rm9yVGV4dFJ1bihjb25zdCBMYXlvdXQ6OlJ1biYsIGNvbnN0IExh
eW91dDo6TGluZUdlb21ldHJ5JiwgY29uc3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYpIGNvbnN0
OwogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxCb3g+IGRpc3BsYXlCb3hGb3JMYXlv
dXRCb3goY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBMYXlvdXQ6OkJveEdlb21ldHJ5JiwgY29u
c3QgQ29udGFpbmluZ0Jsb2NrQ29udGV4dCYsIGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZUZvckJh
Y2tncm91bmQsIFN0eWxlJiYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlz
cGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3Mv
RGlzcGxheVRleHRCb3guY3BwCmluZGV4IGJjZGRlOWViOWY4MWZlODIyZDc0MjU3MDk5ZDY3YmVi
M2YyZjczNmQuLmIwNDdiN2ZmYmFlMTZiYWQyYWFjZWU4MjI0OWZiZTY4ZmZiNTY5ZjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKQEAgLTM2LDcg
KzM2LDcgQEAgbmFtZXNwYWNlIERpc3BsYXkgewogCiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVB
UF9JREVOVElGSUVSKFRleHRCb3gpOwogCi1UZXh0Qm94OjpUZXh0Qm94KFRyZWUmIHRyZWUsIFVu
YWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYgZGlzcGxheVN0eWxl
LCBjb25zdCBMYXlvdXQ6OkxpbmVSdW4mIGxpbmVSdW4pCitUZXh0Qm94OjpUZXh0Qm94KFRyZWUm
IHRyZWUsIFVuYWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYgZGlz
cGxheVN0eWxlLCBjb25zdCBMYXlvdXQ6OlJ1biYgbGluZVJ1bikKICAgICA6IEJveCh0cmVlLCBi
b3JkZXJCb3gsIFdURk1vdmUoZGlzcGxheVN0eWxlKSwgeyBUeXBlRmxhZ3M6OlRleHRCb3ggfSkK
ICAgICAsIG1fZXhwYW5zaW9uKGxpbmVSdW4uZXhwYW5zaW9uKCkpCiAgICAgLCBtX3RleHQobGlu
ZVJ1bi50ZXh0KCkudmFsdWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkv
Y3NzL0Rpc3BsYXlUZXh0Qm94LmggYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5
VGV4dEJveC5oCmluZGV4IDgwYzJmMDRjODVjYmY5ZjlmOTgxNDE0MzEzMmI0Y2YxZjk1YmFkNTUu
LmM1MTgyZTg2OWI3MTY0ODMzM2RjMTQ0Njg2ZWQxMjBhYTcxYjJlMjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guaApAQCAtMzgsMTcgKzM4LDE3IEBAIERF
Q0xBUkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVSKFRleHRCb3gpOwogY2xhc3MgVGV4
dEJveCA6IHB1YmxpYyBCb3ggewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEX1dJVEhfSEVB
UF9JREVOVElGSUVSKFRleHRCb3gpOwogcHVibGljOgotICAgIFRleHRCb3goVHJlZSYsIFVuYWRq
dXN0ZWRBYnNvbHV0ZUZsb2F0UmVjdCBib3JkZXJCb3gsIFN0eWxlJiYsIGNvbnN0IExheW91dDo6
TGluZVJ1biYpOworICAgIFRleHRCb3goVHJlZSYsIFVuYWRqdXN0ZWRBYnNvbHV0ZUZsb2F0UmVj
dCBib3JkZXJCb3gsIFN0eWxlJiYsIGNvbnN0IExheW91dDo6UnVuJik7CiAKLSAgICBMYXlvdXQ6
OkxpbmVSdW46OkV4cGFuc2lvbiBleHBhbnNpb24oKSBjb25zdCB7IHJldHVybiBtX2V4cGFuc2lv
bjsgfQotICAgIGNvbnN0IExheW91dDo6TGluZVJ1bjo6VGV4dCYgdGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGV4dDsgfQorICAgIExheW91dDo6UnVuOjpFeHBhbnNpb24gZXhwYW5zaW9uKCkgY29u
c3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KKyAgICBjb25zdCBMYXlvdXQ6OlJ1bjo6VGV4dCYg
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dDsgfQogCiBwcml2YXRlOgogICAgIGNvbnN0IGNo
YXIqIGJveE5hbWUoKSBjb25zdCBmaW5hbDsKICAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigp
IGNvbnN0IGZpbmFsOwogICAgIAotICAgIExheW91dDo6TGluZVJ1bjo6RXhwYW5zaW9uIG1fZXhw
YW5zaW9uOwotICAgIExheW91dDo6TGluZVJ1bjo6VGV4dCBtX3RleHQ7CisgICAgTGF5b3V0OjpS
dW46OkV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAgICBMYXlvdXQ6OlJ1bjo6VGV4dCBtX3RleHQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBEaXNwbGF5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvVmVyaWZpY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmlj
YXRpb24uY3BwCmluZGV4IDJkN2JhMWRlYThiMDQ5ZjlhMjg1YzIxNDlkODZlNDViZmZkMTk3OTku
LmNlNDExMWViZDk0NDlmMTkwNzcyNmJkYTM0OTdjZWQyMTI3NGM4ZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9WZXJpZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9WZXJpZmljYXRpb24uY3BwCkBAIC03MCwyNCArNzAsMjQgQEAgc3RhdGljIGJvb2wg
YXJlRXNzZW50aWFsbHlFcXVhbChMYXlvdXRSZWN0IGEsIExheW91dFJlY3QgYikKICAgICAgICAg
JiYgYXJlRXNzZW50aWFsbHlFcXVhbChhLmhlaWdodCgpLCBiLmhlaWdodCgpKTsKIH0KIAotc3Rh
dGljIGJvb2wgY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IExpbmVSdW4mIGxpbmVS
dW4sIGNvbnN0IFdlYkNvcmU6OkxlZ2FjeUlubGluZUJveCYgaW5saW5lQm94KQorc3RhdGljIGJv
b2wgY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKGNvbnN0IFJ1biYgcnVuLCBjb25zdCBXZWJD
b3JlOjpMZWdhY3lJbmxpbmVCb3gmIGlubGluZUJveCkKIHsKLSAgICByZXR1cm4gYXJlRXNzZW50
aWFsbHlFcXVhbChpbmxpbmVCb3gubGVmdCgpLCBsaW5lUnVuLmxvZ2ljYWxMZWZ0KCkpCi0gICAg
ICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnJpZ2h0KCksIGxpbmVSdW4ubG9n
aWNhbFJpZ2h0KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lQm94LnRv
cCgpLCBsaW5lUnVuLmxvZ2ljYWxUb3AoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVh
bChpbmxpbmVCb3guYm90dG9tKCksIGxpbmVSdW4ubG9naWNhbEJvdHRvbSgpKTsKKyAgICByZXR1
cm4gYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gubGVmdCgpLCBydW4ubG9naWNhbExlZnQo
KSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVCb3gucmlnaHQoKSwgcnVu
LmxvZ2ljYWxSaWdodCgpKQorICAgICAgICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZUJv
eC50b3AoKSwgcnVuLmxvZ2ljYWxUb3AoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVh
bChpbmxpbmVCb3guYm90dG9tKCksIHJ1bi5sb2dpY2FsQm90dG9tKCkpOwogfQogCiAKLXN0YXRp
YyBib29sIGNoZWNrRm9yTWF0Y2hpbmdUZXh0UnVucyhjb25zdCBMaW5lUnVuJiBsaW5lUnVuLCBj
b25zdCBXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQorc3RhdGlj
IGJvb2wgY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGNvbnN0IFJ1biYgcnVuLCBjb25zdCBXZWJD
b3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94JiBpbmxpbmVUZXh0Qm94KQogewotICAgIGlmICghbGlu
ZVJ1bi50ZXh0KCkpCisgICAgaWYgKCFydW4udGV4dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5sZWZ0KCksIGxp
bmVSdW4ubG9naWNhbExlZnQoKSkKLSAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxp
bmVUZXh0Qm94LnJpZ2h0KCksIGxpbmVSdW4ubG9naWNhbFJpZ2h0KCkpCi0gICAgICAgICYmIGFy
ZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC50b3AoKSwgbGluZVJ1bi5sb2dpY2FsVG9w
KCkpCi0gICAgICAgICYmIGFyZUVzc2VudGlhbGx5RXF1YWwoaW5saW5lVGV4dEJveC5ib3R0b20o
KSwgbGluZVJ1bi5sb2dpY2FsQm90dG9tKCkpCi0gICAgICAgICYmIChpbmxpbmVUZXh0Qm94Lmlz
TGluZUJyZWFrKCkgfHwgKGlubGluZVRleHRCb3guc3RhcnQoKSA9PSBsaW5lUnVuLnRleHQoKS0+
c3RhcnQoKSAmJiBpbmxpbmVUZXh0Qm94LmVuZCgpID09IGxpbmVSdW4udGV4dCgpLT5lbmQoKSkp
OworICAgIHJldHVybiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3gubGVmdCgpLCBy
dW4ubG9naWNhbExlZnQoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50aWFsbHlFcXVhbChpbmxpbmVU
ZXh0Qm94LnJpZ2h0KCksIHJ1bi5sb2dpY2FsUmlnaHQoKSkKKyAgICAgICAgJiYgYXJlRXNzZW50
aWFsbHlFcXVhbChpbmxpbmVUZXh0Qm94LnRvcCgpLCBydW4ubG9naWNhbFRvcCgpKQorICAgICAg
ICAmJiBhcmVFc3NlbnRpYWxseUVxdWFsKGlubGluZVRleHRCb3guYm90dG9tKCksIHJ1bi5sb2dp
Y2FsQm90dG9tKCkpCisgICAgICAgICYmIChpbmxpbmVUZXh0Qm94LmlzTGluZUJyZWFrKCkgfHwg
KGlubGluZVRleHRCb3guc3RhcnQoKSA9PSBydW4udGV4dCgpLT5zdGFydCgpICYmIGlubGluZVRl
eHRCb3guZW5kKCkgPT0gcnVuLnRleHQoKS0+ZW5kKCkpKTsKIH0KIAogc3RhdGljIHZvaWQgY29s
bGVjdEZsb3dCb3hTdWJ0cmVlKGNvbnN0IExlZ2FjeUlubGluZUZsb3dCb3gmIGZsb3dib3gsIFZl
Y3RvcjxXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gqPiYgaW5saW5lQm94ZXMpCkBAIC0xMTgsNyAr
MTE4LDcgQEAgc3RhdGljIHZvaWQgY29sbGVjdElubGluZUJveGVzKGNvbnN0IFJlbmRlckJsb2Nr
RmxvdyYgcm9vdCwgVmVjdG9yPFdlYkNvcmU6OkxlZ2EKIHN0YXRpYyBib29sIG91dHB1dE1pc21h
dGNoaW5nQ29tcGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwg
Y29uc3QgTGF5b3V0U3RhdGUmIGxheW91dFN0YXRlLCBjb25zdCBSZW5kZXJCbG9ja0Zsb3cmIGJs
b2NrRmxvdywgY29uc3QgQ29udGFpbmVyQm94JiBpbmxpbmVGb3JtYXR0aW5nUm9vdCkKIHsKICAg
ICBhdXRvJiBpbmxpbmVGb3JtYXR0aW5nU3RhdGUgPSBsYXlvdXRTdGF0ZS5lc3RhYmxpc2hlZEZv
cm1hdHRpbmdTdGF0ZShpbmxpbmVGb3JtYXR0aW5nUm9vdCk7Ci0gICAgYXV0byYgbGluZVJ1bnMg
PSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGlubGluZUZvcm1hdHRpbmdTdGF0ZSku
bGluZVJ1bnMoKTsKKyAgICBhdXRvJiBydW5zID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihpbmxpbmVGb3JtYXR0aW5nU3RhdGUpLnJ1bnMoKTsKICAgICAvLyBDb2xsZWN0IGlubGlu
ZWJveGVzLgogICAgIFZlY3RvcjxXZWJDb3JlOjpMZWdhY3lJbmxpbmVCb3gqPiBpbmxpbmVCb3hl
czsKICAgICBjb2xsZWN0SW5saW5lQm94ZXMoYmxvY2tGbG93LCBpbmxpbmVCb3hlcyk7CkBAIC0x
MjYsMTYgKzEyNiwxNiBAQCBzdGF0aWMgYm9vbCBvdXRwdXRNaXNtYXRjaGluZ0NvbXBsZXhMaW5l
SW5mb3JtYXRpb25JZk5lZWRlZChUZXh0U3RyZWFtJiBzdHJlYW0sCiAgICAgYXV0byBtaXNtYXRj
aGVkID0gZmFsc2U7CiAgICAgdW5zaWduZWQgcnVuSW5kZXggPSAwOwogCi0gICAgaWYgKGlubGlu
ZUJveGVzLnNpemUoKSAhPSBsaW5lUnVucy5zaXplKCkpIHsKLSAgICAgICAgc3RyZWFtIDw8ICJX
YXJuaW5nOiBtaXNtYXRjaGluZyBudW1iZXIgb2YgcnVuczogaW5saW5lYm94ZXMoIiA8PCBpbmxp
bmVCb3hlcy5zaXplKCkgPDwgIikgdnMuIGlubGluZSBydW5zKCIgPDwgbGluZVJ1bnMuc2l6ZSgp
IDw8ICIpIjsKKyAgICBpZiAoaW5saW5lQm94ZXMuc2l6ZSgpICE9IHJ1bnMuc2l6ZSgpKSB7Cisg
ICAgICAgIHN0cmVhbSA8PCAiV2FybmluZzogbWlzbWF0Y2hpbmcgbnVtYmVyIG9mIHJ1bnM6IGlu
bGluZWJveGVzKCIgPDwgaW5saW5lQm94ZXMuc2l6ZSgpIDw8ICIpIHZzLiBpbmxpbmUgcnVucygi
IDw8IHJ1bnMuc2l6ZSgpIDw8ICIpIjsKICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7CiAgICAg
fQogCi0gICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4
IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgbGluZVJ1bnMuc2l6ZSgpOyArK2lu
bGluZUJveEluZGV4KSB7Ci0gICAgICAgIGF1dG8mIGxpbmVSdW4gPSBsaW5lUnVuc1tydW5JbmRl
eF07CisgICAgZm9yICh1bnNpZ25lZCBpbmxpbmVCb3hJbmRleCA9IDA7IGlubGluZUJveEluZGV4
IDwgaW5saW5lQm94ZXMuc2l6ZSgpICYmIHJ1bkluZGV4IDwgcnVucy5zaXplKCk7ICsraW5saW5l
Qm94SW5kZXgpIHsKKyAgICAgICAgYXV0byYgcnVuID0gcnVuc1tydW5JbmRleF07CiAgICAgICAg
IGF1dG8qIGlubGluZUJveCA9IGlubGluZUJveGVzW2lubGluZUJveEluZGV4XTsKICAgICAgICAg
YXV0byogaW5saW5lVGV4dEJveCA9IGlzPFdlYkNvcmU6OkxlZ2FjeUlubGluZVRleHRCb3g+KGlu
bGluZUJveCkgPyBkb3duY2FzdDxXZWJDb3JlOjpMZWdhY3lJbmxpbmVUZXh0Qm94PihpbmxpbmVC
b3gpIDogbnVsbHB0cjsKLSAgICAgICAgYm9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94
ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRSdW5zKGxpbmVSdW4sICppbmxpbmVUZXh0Qm94KSA6IGNo
ZWNrRm9yTWF0Y2hpbmdOb25UZXh0UnVucyhsaW5lUnVuLCAqaW5saW5lQm94KTsKKyAgICAgICAg
Ym9vbCBtYXRjaGluZ1J1bnMgPSBpbmxpbmVUZXh0Qm94ID8gY2hlY2tGb3JNYXRjaGluZ1RleHRS
dW5zKHJ1biwgKmlubGluZVRleHRCb3gpIDogY2hlY2tGb3JNYXRjaGluZ05vblRleHRSdW5zKHJ1
biwgKmlubGluZUJveCk7CiAKICAgICAgICAgaWYgKCFtYXRjaGluZ1J1bnMpIHsKICAgICAgICAg
ICAgIApAQCAtMTUzLDkgKzE1Myw5IEBAIHN0YXRpYyBib29sIG91dHB1dE1pc21hdGNoaW5nQ29t
cGxleExpbmVJbmZvcm1hdGlvbklmTmVlZGVkKFRleHRTdHJlYW0mIHN0cmVhbSwKICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiICgiIDw8IGlubGluZUJveC0+bG9naWNhbExlZnQoKSA8PCAiLCAiIDw8
IGlubGluZUJveC0+bG9naWNhbFRvcCgpIDw8ICIpICgiIDw8IGlubGluZUJveC0+bG9naWNhbFdp
ZHRoKCkgPDwgIngiIDw8IGlubGluZUJveC0+bG9naWNhbEhlaWdodCgpIDw8ICIpIjsKIAogICAg
ICAgICAgICAgc3RyZWFtIDw8ICIgaW5saW5lIHJ1biI7Ci0gICAgICAgICAgICBpZiAobGluZVJ1
bi50ZXh0KCkpCi0gICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgbGluZVJ1bi50ZXh0
KCktPnN0YXJ0KCkgPDwgIiwgIiA8PCBsaW5lUnVuLnRleHQoKS0+ZW5kKCkgPDwgIikiOwotICAg
ICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgbGluZVJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIg
PDwgbGluZVJ1bi5sb2dpY2FsVG9wKCkgPDwgIikgKCIgPDwgbGluZVJ1bi5sb2dpY2FsV2lkdGgo
KSA8PCAieCIgPDwgbGluZVJ1bi5sb2dpY2FsSGVpZ2h0KCkgPDwgIikiOworICAgICAgICAgICAg
aWYgKHJ1bi50ZXh0KCkpCisgICAgICAgICAgICAgICAgc3RyZWFtIDw8ICIgKCIgPDwgcnVuLnRl
eHQoKS0+c3RhcnQoKSA8PCAiLCAiIDw8IHJ1bi50ZXh0KCktPmVuZCgpIDw8ICIpIjsKKyAgICAg
ICAgICAgIHN0cmVhbSA8PCAiICgiIDw8IHJ1bi5sb2dpY2FsTGVmdCgpIDw8ICIsICIgPDwgcnVu
LmxvZ2ljYWxUb3AoKSA8PCAiKSAoIiA8PCBydW4ubG9naWNhbFdpZHRoKCkgPDwgIngiIDw8IHJ1
bi5sb2dpY2FsSGVpZ2h0KCkgPDwgIikiOwogICAgICAgICAgICAgc3RyZWFtLm5leHRMaW5lKCk7
CiAgICAgICAgICAgICBtaXNtYXRjaGVkID0gdHJ1ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlz
cGxheUNvbnRlbnRCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5n
Q29udGV4dHMvaW5saW5lL0lubGluZURpc3BsYXlDb250ZW50QnVpbGRlci5jcHAKaW5kZXggNjZh
ZGQyMTM0NTIxZjVjMzRlNmUwOGM1NmNmOGMxNmUxZjAzY2U0Yi4uNDMyMDEwYjZlYjhjYmZiOGVh
NTFlMTM0YjYyNTU2N2ZhZDVkOGIzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9J
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXIuY3BwCkBAIC01MCwxMCArNTAsMTAgQEAgdm9pZCBJ
bmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmJ1aWxkKGNvbnN0IExpbmVCdWlsZGVyOjpMaW5l
Q29udGVudCYgbGluZUNvbnQKICAgICAvLyBFdmVyeSBsaW5lIHN0YXJ0cyB3aXRoIGEgcm9vdCBy
dW4sIGV2ZW4gdGhlIGVtcHR5IG9uZXMuCiAgICAgYXV0byByb290SW5saW5lQm94UmVjdCA9IGxp
bmVCb3gubG9naWNhbFJlY3RGb3JSb290SW5saW5lQm94KCk7CiAgICAgcm9vdElubGluZUJveFJl
Y3QubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmFk
ZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6OlJvb3RJbmxpbmVCb3gsIHJvb3Qo
KSwgcm9vdElubGluZUJveFJlY3QsIHJvb3RJbmxpbmVCb3hSZWN0LCB7IH0sIHsgfSwgIGxpbmVC
b3gucm9vdElubGluZUJveCgpLmhhc0NvbnRlbnQoKX0pOworICAgIGZvcm1hdHRpbmdTdGF0ZS5h
ZGRSdW4oeyBsaW5lSW5kZXgsIFJ1bjo6VHlwZTo6Um9vdElubGluZUJveCwgcm9vdCgpLCByb290
SW5saW5lQm94UmVjdCwgcm9vdElubGluZUJveFJlY3QsIHsgfSwgeyB9LCAgbGluZUJveC5yb290
SW5saW5lQm94KCkuaGFzQ29udGVudCgpfSk7CiAKICAgICAvLyBTcGFubmluZyBpbmxpbmUgYm94
ZXMgc3RhcnQgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBsaW5lLgotICAgIGF1dG8gbGlu
ZVNwYW5uaW5nSW5saW5lQm94SW5kZXggPSBmb3JtYXR0aW5nU3RhdGUubGluZVJ1bnMoKS5zaXpl
KCk7CisgICAgYXV0byBsaW5lU3Bhbm5pbmdJbmxpbmVCb3hJbmRleCA9IGZvcm1hdHRpbmdTdGF0
ZS5ydW5zKCkuc2l6ZSgpOwogICAgIGNyZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVD
b250ZW50KGxpbmVDb250ZW50LCBsaW5lQm94LCBsaW5lQm94TG9naWNhbFRvcExlZnQsIGxpbmVJ
bmRleCk7CiAgICAgY3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5s
aW5lQm94ZXMobGluZUJveCwgbGluZUJveExvZ2ljYWxUb3BMZWZ0LCBsaW5lSW5kZXgsIGxpbmVT
cGFubmluZ0lubGluZUJveEluZGV4KTsKIH0KQEAgLTk0LDEzICs5NCwxMyBAQCB2b2lkIElubGlu
ZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVwZGF0ZUdlb21ldHJ5Rm9yTGlu
ZUNvbnRlbnQoY29ucwogICAgICAgICAgICAgYXV0byBhZGp1c3RlZENvbnRlbnRUb1JlbmRlciA9
IFsmXSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQtPm5lZWRzSHlwaGVuID8gbWFrZVN0
cmluZyhjb250ZW50LnN1YnN0cmluZyh0ZXh0LT5zdGFydCwgdGV4dC0+bGVuZ3RoKSwgc3R5bGUu
aHlwaGVuU3RyaW5nKCkpIDogU3RyaW5nKCk7CiAgICAgICAgICAgICB9OwotICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgKLSAgICAgICAgICAgICAgICAs
IExpbmVSdW46OlR5cGU6OlRleHQKKyAgICAgICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5hZGRSdW4o
eyBsaW5lSW5kZXgKKyAgICAgICAgICAgICAgICAsIFJ1bjo6VHlwZTo6VGV4dAogICAgICAgICAg
ICAgICAgICwgbGF5b3V0Qm94CiAgICAgICAgICAgICAgICAgLCB0ZXh0UnVuUmVjdAogICAgICAg
ICAgICAgICAgICwgaW5rT3ZlcmZsb3coKQogICAgICAgICAgICAgICAgICwgbGluZVJ1bi5leHBh
bnNpb24oKQotICAgICAgICAgICAgICAgICwgTGluZVJ1bjo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0
ZXh0LT5sZW5ndGgsIGNvbnRlbnQsIGFkanVzdGVkQ29udGVudFRvUmVuZGVyKCksIHRleHQtPm5l
ZWRzSHlwaGVuIH0gfSk7CisgICAgICAgICAgICAgICAgLCBSdW46OlRleHQgeyB0ZXh0LT5zdGFy
dCwgdGV4dC0+bGVuZ3RoLCBjb250ZW50LCBhZGp1c3RlZENvbnRlbnRUb1JlbmRlcigpLCB0ZXh0
LT5uZWVkc0h5cGhlbiB9IH0pOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBJbmxpbmVJdGVtOjpUeXBlOjpTb2Z0TGluZUJyZWFrOiB7CkBAIC0xMDksMjAgKzEw
OSwyMCBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVw
ZGF0ZUdlb21ldHJ5Rm9yTGluZUNvbnRlbnQoY29ucwogCiAgICAgICAgICAgICBBU1NFUlQobGlu
ZVJ1bi50ZXh0Q29udGVudCgpICYmIGlzPElubGluZVRleHRCb3g+KGxheW91dEJveCkpOwogICAg
ICAgICAgICAgYXV0byYgdGV4dCA9IGxpbmVSdW4udGV4dENvbnRlbnQoKTsKLSAgICAgICAgICAg
IGZvcm1hdHRpbmdTdGF0ZS5hZGRMaW5lUnVuKHsgbGluZUluZGV4Ci0gICAgICAgICAgICAgICAg
LCBMaW5lUnVuOjpUeXBlOjpTb2Z0TGluZUJyZWFrCisgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkUnVuKHsgbGluZUluZGV4CisgICAgICAgICAgICAgICAgLCBSdW46OlR5cGU6OlNvZnRM
aW5lQnJlYWsKICAgICAgICAgICAgICAgICAsIGxheW91dEJveAogICAgICAgICAgICAgICAgICwg
c29mdExpbmVCcmVha1J1blJlY3QKICAgICAgICAgICAgICAgICAsIHNvZnRMaW5lQnJlYWtSdW5S
ZWN0CiAgICAgICAgICAgICAgICAgLCBsaW5lUnVuLmV4cGFuc2lvbigpCi0gICAgICAgICAgICAg
ICAgLCBMaW5lUnVuOjpUZXh0IHsgdGV4dC0+c3RhcnQsIHRleHQtPmxlbmd0aCwgZG93bmNhc3Q8
SW5saW5lVGV4dEJveD4obGF5b3V0Qm94KS5jb250ZW50KCkgfSB9KTsKKyAgICAgICAgICAgICAg
ICAsIFJ1bjo6VGV4dCB7IHRleHQtPnN0YXJ0LCB0ZXh0LT5sZW5ndGgsIGRvd25jYXN0PElubGlu
ZVRleHRCb3g+KGxheW91dEJveCkuY29udGVudCgpIH0gfSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIElubGluZUl0ZW06OlR5cGU6OkhhcmRMaW5lQnJlYWs6
IHsKICAgICAgICAgICAgIC8vIE9ubHkgaGFyZCBsaW5lYnJlYWtzIGhhdmUgYXNzb2NpYXRlZCBs
YXlvdXQgYm94ZXMuCiAgICAgICAgICAgICBhdXRvIGxpbmVCcmVha0JveFJlY3QgPSBsaW5lQm94
LmxvZ2ljYWxSZWN0Rm9yTGluZUJyZWFrQm94KGxheW91dEJveCk7CiAgICAgICAgICAgICBsaW5l
QnJlYWtCb3hSZWN0Lm1vdmVCeShsaW5lQm94TG9naWNhbFRvcExlZnQpOwotICAgICAgICAgICAg
Zm9ybWF0dGluZ1N0YXRlLmFkZExpbmVSdW4oeyBsaW5lSW5kZXgsIExpbmVSdW46OlR5cGU6Okxp
bmVCcmVha0JveCwgbGF5b3V0Qm94LCBsaW5lQnJlYWtCb3hSZWN0LCBsaW5lQnJlYWtCb3hSZWN0
LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CisgICAgICAgICAgICBmb3JtYXR0aW5nU3Rh
dGUuYWRkUnVuKHsgbGluZUluZGV4LCBSdW46OlR5cGU6OkxpbmVCcmVha0JveCwgbGF5b3V0Qm94
LCBsaW5lQnJlYWtCb3hSZWN0LCBsaW5lQnJlYWtCb3hSZWN0LCBsaW5lUnVuLmV4cGFuc2lvbigp
LCB7IH0gfSk7CiAKICAgICAgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0
YXRlLmJveEdlb21ldHJ5KGxheW91dEJveCk7CiAgICAgICAgICAgICBib3hHZW9tZXRyeS5zZXRM
b2dpY2FsVG9wTGVmdCh0b0xheW91dFBvaW50KGxpbmVCcmVha0JveFJlY3QudG9wTGVmdCgpKSk7
CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBJbmxpbmVEaXNwbGF5Q29udGVudEJ1aWxkZXI6OmNy
ZWF0ZVJ1bnNBbmRVcGRhdGVHZW9tZXRyeUZvckxpbmVDb250ZW50KGNvbnMKICAgICAgICAgICAg
IGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ1N0YXRlLmJveEdlb21ldHJ5KGxheW91dEJv
eCk7CiAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxCb3JkZXJCb3ggPSBsaW5lQm94LmxvZ2ljYWxC
b3JkZXJCb3hGb3JBdG9taWNJbmxpbmVMZXZlbEJveChsYXlvdXRCb3gsIGJveEdlb21ldHJ5KTsK
ICAgICAgICAgICAgIGxvZ2ljYWxCb3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVm
dCk7Ci0gICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGluZVJ1bih7IGxpbmVJbmRleCwg
TGluZVJ1bjo6VHlwZTo6QXRvbWljSW5saW5lTGV2ZWxCb3gsIGxheW91dEJveCwgbG9naWNhbEJv
cmRlckJveCwgbG9naWNhbEJvcmRlckJveCwgbGluZVJ1bi5leHBhbnNpb24oKSwgeyB9IH0pOwor
ICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZFJ1bih7IGxpbmVJbmRleCwgUnVuOjpUeXBl
OjpBdG9taWNJbmxpbmVMZXZlbEJveCwgbGF5b3V0Qm94LCBsb2dpY2FsQm9yZGVyQm94LCBsb2dp
Y2FsQm9yZGVyQm94LCBsaW5lUnVuLmV4cGFuc2lvbigpLCB7IH0gfSk7CiAKICAgICAgICAgICAg
IGF1dG8gYm9yZGVyQm94TG9naWNhbFRvcExlZnQgPSBsb2dpY2FsQm9yZGVyQm94LnRvcExlZnQo
KTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBpbmxpbmUgYm94ZXMgYXJlIHJlbGF0aXZlIHRv
IHRoZSBsaW5lIGFuZCB0aGVpciB0b3AgcG9zaXRpb24gY2FuIGJlIG5lZ2F0aXZlLgpAQCAtMTUy
LDcgKzE1Miw3IEBAIHZvaWQgSW5saW5lRGlzcGxheUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVSdW5z
QW5kVXBkYXRlR2VvbWV0cnlGb3JMaW5lQ29udGVudChjb25zCiAgICAgICAgICAgICBpbmxpbmVC
b3hCb3JkZXJCb3gubW92ZUJ5KGxpbmVCb3hMb2dpY2FsVG9wTGVmdCk7CiAgICAgICAgICAgICBp
ZiAobGluZUJveC5oYXNDb250ZW50KCkpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXQn
cyBleHBlY3RlZCB0byBub3QgaGF2ZSBhbnkgcnVucyBvbiBlbXB0eSBsaW5lcy4gV2Ugc2hvdWxk
IHJlY29uc2lkZXIgdGhpcy4KLSAgICAgICAgICAgICAgICBmb3JtYXR0aW5nU3RhdGUuYWRkTGlu
ZVJ1bih7IGxpbmVJbmRleCwgTGluZVJ1bjo6VHlwZTo6Tm9uUm9vdElubGluZUJveCwgbGF5b3V0
Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlubGluZUJveEJvcmRlckJveCwgeyB9LCB7IH0sIGxp
bmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94KS5oYXNDb250ZW50KCkg
fSk7CisgICAgICAgICAgICAgICAgZm9ybWF0dGluZ1N0YXRlLmFkZFJ1bih7IGxpbmVJbmRleCwg
UnVuOjpUeXBlOjpOb25Sb290SW5saW5lQm94LCBsYXlvdXRCb3gsIGlubGluZUJveEJvcmRlckJv
eCwgaW5saW5lQm94Qm9yZGVyQm94LCB7IH0sIHsgfSwgbGluZUJveC5pbmxpbmVMZXZlbEJveEZv
ckxheW91dEJveChsYXlvdXRCb3gpLmhhc0NvbnRlbnQoKSB9KTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgYXV0byBpbmxpbmVCb3hTaXplID0gTGF5b3V0U2l6ZSB7IExheW91dFVuaXQ6
OmZyb21GbG9hdENlaWwoaW5saW5lQm94Qm9yZGVyQm94LndpZHRoKCkpLCBMYXlvdXRVbml0Ojpm
cm9tRmxvYXRDZWlsKGlubGluZUJveEJvcmRlckJveC5oZWlnaHQoKSkgfTsKQEAgLTIwMiw3ICsy
MDIsNyBAQCB2b2lkIElubGluZURpc3BsYXlDb250ZW50QnVpbGRlcjo6Y3JlYXRlUnVuc0FuZFVw
ZGF0ZUdlb21ldHJ5Rm9yTGluZVNwYW5uaW5nSW5saQogICAgICAgICBhdXRvIGlubGluZUJveEJv
cmRlckJveCA9IGxpbmVCb3gubG9naWNhbEJvcmRlckJveEZvcklubGluZUJveChsYXlvdXRCb3gs
IGJveEdlb21ldHJ5KTsKICAgICAgICAgaW5saW5lQm94Qm9yZGVyQm94Lm1vdmVCeShsaW5lQm94
TG9naWNhbFRvcExlZnQpOwogCi0gICAgICAgIGZvcm1hdHRpbmdTdGF0ZS5saW5lUnVucygpLmlu
c2VydChsaW5lU3Bhbm5pbmdJbmxpbmVCb3hJbmRleCsrLCB7IGxpbmVJbmRleCwgTGluZVJ1bjo6
VHlwZTo6Tm9uUm9vdElubGluZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlu
bGluZUJveEJvcmRlckJveCwgeyB9LCB7IH0sIGlubGluZUxldmVsQm94Lmhhc0NvbnRlbnQoKSwg
dHJ1ZSB9KTsKKyAgICAgICAgZm9ybWF0dGluZ1N0YXRlLnJ1bnMoKS5pbnNlcnQobGluZVNwYW5u
aW5nSW5saW5lQm94SW5kZXgrKywgeyBsaW5lSW5kZXgsIFJ1bjo6VHlwZTo6Tm9uUm9vdElubGlu
ZUJveCwgbGF5b3V0Qm94LCBpbmxpbmVCb3hCb3JkZXJCb3gsIGlubGluZUJveEJvcmRlckJveCwg
eyB9LCB7IH0sIGlubGluZUxldmVsQm94Lmhhc0NvbnRlbnQoKSwgdHJ1ZSB9KTsKIAogICAgICAg
ICBhdXRvIGlubGluZUJveFNpemUgPSBMYXlvdXRTaXplIHsgTGF5b3V0VW5pdDo6ZnJvbUZsb2F0
Q2VpbChpbmxpbmVCb3hCb3JkZXJCb3gud2lkdGgoKSksIExheW91dFVuaXQ6OmZyb21GbG9hdENl
aWwoaW5saW5lQm94Qm9yZGVyQm94LmhlaWdodCgpKSB9OwogICAgICAgICBhdXRvIGxvZ2ljYWxS
ZWN0ID0gUmVjdCB7IExheW91dFBvaW50IHsgaW5saW5lQm94Qm9yZGVyQm94LnRvcExlZnQoKSB9
LCBpbmxpbmVCb3hTaXplIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggOWFhYWE0ZDdkYmJiNWU4NjEyYjRkMDg3MTlmNTI5NjAwMDcy
NzFjZS4uMjNjZGI1OGNmODQ4NjA4MTM2MWIxNjE5ODIyYWRhNTg4ZDNiZDM0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5l
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0
aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTgxLDcg
KzE4MSw3IEBAIExheW91dFVuaXQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnVzZWRDb250ZW50
SGVpZ2h0KCkgY29uc3QKIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQo
SW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIG5l
ZWRzTGF5b3V0UmFuZ2UsIGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3Ry
YWludHMpCiB7CiAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gdGhpcy0+Zm9ybWF0dGluZ1N0
YXRlKCk7Ci0gICAgZm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCkucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShmb3JtYXR0aW5nU3RhdGUuaW5saW5lSXRlbXMoKS5zaXplKCkpOworICAgIGZvcm1hdHRp
bmdTdGF0ZS5ydW5zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShmb3JtYXR0aW5nU3RhdGUuaW5s
aW5lSXRlbXMoKS5zaXplKCkpOwogICAgIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxUb3Ag
PSBjb25zdHJhaW50cy5sb2dpY2FsVG9wKCk7CiAgICAgc3RydWN0IFByZXZpb3VzTGluZSB7CiAg
ICAgICAgIExpbmVCdWlsZGVyOjpJbmxpbmVJdGVtUmFuZ2UgcmFuZ2U7CkBAIC0yNjYsNyArMjY2
LDcgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9u
Rm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBGb3IKICAgICAvLyBwbGFjZSB0aGUgb3V0LW9mLWZs
b3cgYm94IGF0IHRoZSBsb2dpY2FsIHJpZ2h0IHBvc2l0aW9uLgogICAgIGF1dG8mIGZvcm1hdHRp
bmdTdGF0ZSA9IHRoaXMtPmZvcm1hdHRpbmdTdGF0ZSgpOwogICAgIGF1dG8mIGxpbmVzID0gZm9y
bWF0dGluZ1N0YXRlLmxpbmVzKCk7Ci0gICAgYXV0byYgbGluZVJ1bnMgPSBmb3JtYXR0aW5nU3Rh
dGUubGluZVJ1bnMoKTsKKyAgICBhdXRvJiBydW5zID0gZm9ybWF0dGluZ1N0YXRlLnJ1bnMoKTsK
IAogICAgIGZvciAoYXV0byYgb3V0T2ZGbG93Qm94IDogb3V0T2ZGbG93Qm94ZXMpIHsKICAgICAg
ICAgYXV0byYgb3V0T2ZGbG93R2VvbWV0cnkgPSBmb3JtYXR0aW5nU3RhdGUuYm94R2VvbWV0cnko
Km91dE9mRmxvd0JveCk7CkBAIC0yODYsOCArMjg2LDggQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5n
Q29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uRm9yT3V0T2ZGbG93Q29udGVudChjb25zdCBG
b3IKICAgICAgICAgaWYgKCFwcmV2aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0cykgewogICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgZmlyc3QgKG5vbi1mbG9hdCljaGlsZC4gTGV0J3MgcGxhY2Ug
aXQgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IHJ1bi4KICAgICAgICAgICAgIC8vIDxkaXY+PGlt
ZyBzdHlsZT0icG9zaXRpb246IGFic29sdXRlIj50ZXh0IGNvbnRlbnQ8L2Rpdj4KLSAgICAgICAg
ICAgIEFTU0VSVChsaW5lUnVucy5zaXplKCkpOwotICAgICAgICAgICAgb3V0T2ZGbG93R2VvbWV0
cnkuc2V0TG9naWNhbFRvcExlZnQoeyBsaW5lUnVuc1swXS5sb2dpY2FsTGVmdCgpLCBsaW5lc1sw
XS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9KTsKKyAgICAgICAgICAgIEFTU0VSVChydW5z
LnNpemUoKSk7CisgICAgICAgICAgICBvdXRPZkZsb3dHZW9tZXRyeS5zZXRMb2dpY2FsVG9wTGVm
dCh7IHJ1bnNbMF0ubG9naWNhbExlZnQoKSwgbGluZXNbMF0ubGluZUJveExvZ2ljYWxSZWN0KCku
dG9wKCkgfSk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCkBAIC0zMDMsMTcg
KzMwMywxNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlU3RhdGljUG9z
aXRpb25Gb3JPdXRPZkZsb3dDb250ZW50KGNvbnN0IEZvcgogICAgICAgICAgICAgLy8gVGhlIG91
dC1vZi1mbG93IGJveCBzaG91bGQgYmUgcGxhY2VkIGFmdGVyIHRoaXMgaW5mbG93IGJveC4KICAg
ICAgICAgICAgIC8vIFNraXAgdG8gdGhlIGxhc3QgcnVuIG9mIHRoaXMgbGF5b3V0IGJveC4gVGhl
IGxhc3QgcnVuJ3MgZ2VvbWV0cnkgaXMgdXNlZCB0byBjb21wdXRlIHRoZSBvdXQtb2YtZmxvdyBi
b3gncyBzdGF0aWMgcG9zaXRpb24uCiAgICAgICAgICAgICBzaXplX3QgbGFzdFJ1bkluZGV4T25Q
cmV2aW91c0xheW91dEJveCA9IDA7Ci0gICAgICAgICAgICBmb3IgKDsgbGFzdFJ1bkluZGV4T25Q
cmV2aW91c0xheW91dEJveCA8IGxpbmVSdW5zLnNpemUoKSAmJiAmbGluZVJ1bnNbbGFzdFJ1bklu
ZGV4T25QcmV2aW91c0xheW91dEJveF0ubGF5b3V0Qm94KCkgIT0gcHJldmlvdXNDb250ZW50U2tp
cHBpbmdGbG9hdHM7ICsrbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9Ci0gICAg
ICAgICAgICBpZiAobGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCA9PSBsaW5lUnVucy5z
aXplKCkpIHsKKyAgICAgICAgICAgIGZvciAoOyBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0
Qm94IDwgcnVucy5zaXplKCkgJiYgJnJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJv
eF0ubGF5b3V0Qm94KCkgIT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsrbGFzdFJ1
bkluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9CisgICAgICAgICAgICBpZiAobGFzdFJ1bklu
ZGV4T25QcmV2aW91c0xheW91dEJveCA9PSBydW5zLnNpemUoKSkgewogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBJbiB2ZXJ5IHJhcmUgY2FzZXMsIHRoZSBwcmV2aW91cyBib3gncyBjb250ZW50
IG1pZ2h0IGhhdmUgYmVlbiBjb21wbGV0ZWx5IGNvbGxhcHNlZCBhbmQgbGVmdCB1cyB3aXRoIG5v
IHJ1bi4KICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAoOyBs
YXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94IDwgbGluZVJ1bnMuc2l6ZSgpICYmICZsaW5l
UnVuc1tsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XS5sYXlvdXRCb3goKSA9PSBwcmV2
aW91c0NvbnRlbnRTa2lwcGluZ0Zsb2F0czsgKytsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0
Qm94KSB7IH0KKyAgICAgICAgICAgIGZvciAoOyBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0
Qm94IDwgcnVucy5zaXplKCkgJiYgJnJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJv
eF0ubGF5b3V0Qm94KCkgPT0gcHJldmlvdXNDb250ZW50U2tpcHBpbmdGbG9hdHM7ICsrbGFzdFJ1
bkluZGV4T25QcmV2aW91c0xheW91dEJveCkgeyB9CiAgICAgICAgICAgICAgICAgLS1sYXN0UnVu
SW5kZXhPblByZXZpb3VzTGF5b3V0Qm94OwogICAgICAgICAgICAgLy8gTGV0J3MgY2hlY2sgaWYg
dGhlIHByZXZpb3VzIHJ1biBpcyB0aGUgbGFzdCBydW4gb24gdGhlIGN1cnJlbnQgbGluZSBhbmQg
dXNlIHRoZSBuZXh0IHJ1bidzIGxlZnQgaW5zdGVhZC4KLSAgICAgICAgICAgIGF1dG8mIHByZXZp
b3VzUnVuID0gbGluZVJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveF07Ci0gICAg
ICAgICAgICBhdXRvKiBuZXh0UnVuID0gbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCAr
IDEgPCBsaW5lUnVucy5zaXplKCkgPyAmbGluZVJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xh
eW91dEJveCArIDFdIDogbnVsbHB0cjsKKyAgICAgICAgICAgIGF1dG8mIHByZXZpb3VzUnVuID0g
cnVuc1tsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94XTsKKyAgICAgICAgICAgIGF1dG8q
IG5leHRSdW4gPSBsYXN0UnVuSW5kZXhPblByZXZpb3VzTGF5b3V0Qm94ICsgMSA8IHJ1bnMuc2l6
ZSgpID8gJnJ1bnNbbGFzdFJ1bkluZGV4T25QcmV2aW91c0xheW91dEJveCArIDFdIDogbnVsbHB0
cjsKIAogICAgICAgICAgICAgaWYgKG5leHRSdW4gJiYgbmV4dFJ1bi0+bGluZUluZGV4KCkgPT0g
cHJldmlvdXNSdW4ubGluZUluZGV4KCkpIHsKICAgICAgICAgICAgICAgICAvLyBQcmV2aW91cyBh
bmQgbmV4dCBydW5zIGFyZSBvbiB0aGUgc2FtZSBsaW5lLiBUaGUgb3V0LW9mLWZsb3cgYm94IGlz
IHJpZ2h0IGF0IHRoZSBwcmV2aW91cyBydW4ncyBsb2dpY2FsIHJpZ2h0LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lRm9y
bWF0dGluZ1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAppbmRleCBiOTQ4MzNmOThhYjY1YmNjMzQ0
MTk5YmIxMjViNmQxZjFlYmVlYjhkLi44YjQ1NDZlNzA1NmIzOTY1ZDE2ZDVmMmQyNWU1OGNmMDRk
NmIzMGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRl
eHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVGb3JtYXR0aW5nU3RhdGUuaApA
QCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgTGF5b3V0IHsKIHVzaW5nIElubGluZUl0ZW1zID0g
VmVjdG9yPElubGluZUl0ZW0+OwogdXNpbmcgSW5saW5lTGluZXMgPSBWZWN0b3I8TGluZUdlb21l
dHJ5PjsKIHVzaW5nIElubGluZUxpbmVCb3hlcyA9IFZlY3RvcjxMaW5lQm94PjsKLXVzaW5nIElu
bGluZUxpbmVSdW5zID0gVmVjdG9yPExpbmVSdW4+OwordXNpbmcgSW5saW5lUnVucyA9IFZlY3Rv
cjxSdW4+OwogCiAvLyBJbmxpbmVGb3JtYXR0aW5nU3RhdGUgaG9sZHMgdGhlIHN0YXRlIGZvciBh
IHBhcnRpY3VsYXIgaW5saW5lIGZvcm1hdHRpbmcgY29udGV4dCB0cmVlLgogY2xhc3MgSW5saW5l
Rm9ybWF0dGluZ1N0YXRlIDogcHVibGljIEZvcm1hdHRpbmdTdGF0ZSB7CkBAIC02MCw5ICs2MCw5
IEBAIHB1YmxpYzoKICAgICBjb25zdCBJbmxpbmVMaW5lQm94ZXMmIGxpbmVCb3hlcygpIGNvbnN0
IHsgcmV0dXJuIG1fbGluZUJveGVzOyB9CiAgICAgdm9pZCBhZGRMaW5lQm94KExpbmVCb3gmJiBs
aW5lQm94KSB7IG1fbGluZUJveGVzLmFwcGVuZChXVEZNb3ZlKGxpbmVCb3gpKTsgfQogCi0gICAg
Y29uc3QgSW5saW5lTGluZVJ1bnMmIGxpbmVSdW5zKCkgY29uc3QgeyByZXR1cm4gbV9saW5lUnVu
czsgfQotICAgIElubGluZUxpbmVSdW5zJiBsaW5lUnVucygpIHsgcmV0dXJuIG1fbGluZVJ1bnM7
IH0KLSAgICB2b2lkIGFkZExpbmVSdW4oTGluZVJ1biYmIHJ1bikgeyBtX2xpbmVSdW5zLmFwcGVu
ZChXVEZNb3ZlKHJ1bikpOyB9CisgICAgY29uc3QgSW5saW5lUnVucyYgcnVucygpIGNvbnN0IHsg
cmV0dXJuIG1fcnVuczsgfQorICAgIElubGluZVJ1bnMmIHJ1bnMoKSB7IHJldHVybiBtX3J1bnM7
IH0KKyAgICB2b2lkIGFkZFJ1bihSdW4mJiBydW4pIHsgbV9ydW5zLmFwcGVuZChXVEZNb3ZlKHJ1
bikpOyB9CiAKICAgICB2b2lkIHNldENsZWFyR2FwQWZ0ZXJMYXN0TGluZShJbmxpbmVMYXlvdXRV
bml0IHZlcnRpY2FsR2FwKTsKICAgICBJbmxpbmVMYXlvdXRVbml0IGNsZWFyR2FwQWZ0ZXJMYXN0
TGluZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2xlYXJHYXBBZnRlckxhc3RMaW5lOyB9CkBAIC03NSw3
ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgSW5saW5lSXRlbXMgbV9pbmxpbmVJdGVtczsKICAgICBJ
bmxpbmVMaW5lcyBtX2xpbmVzOwogICAgIElubGluZUxpbmVCb3hlcyBtX2xpbmVCb3hlczsKLSAg
ICBJbmxpbmVMaW5lUnVucyBtX2xpbmVSdW5zOworICAgIElubGluZVJ1bnMgbV9ydW5zOwogICAg
IElubGluZUxheW91dFVuaXQgbV9jbGVhckdhcEFmdGVyTGFzdExpbmUgeyAwIH07CiB9OwogCkBA
IC04OSw3ICs4OSw3IEBAIGlubGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6Y2xlYXJM
aW5lQW5kUnVucygpCiB7CiAgICAgbV9saW5lcy5jbGVhcigpOwogICAgIG1fbGluZUJveGVzLmNs
ZWFyKCk7Ci0gICAgbV9saW5lUnVucy5jbGVhcigpOworICAgIG1fcnVucy5jbGVhcigpOwogICAg
IG1fY2xlYXJHYXBBZnRlckxhc3RMaW5lID0geyB9OwogfQogCkBAIC05OCw3ICs5OCw3IEBAIGlu
bGluZSB2b2lkIElubGluZUZvcm1hdHRpbmdTdGF0ZTo6c2hyaW5rVG9GaXQoKQogICAgIG1faW5s
aW5lSXRlbXMuc2hyaW5rVG9GaXQoKTsKICAgICBtX2xpbmVzLnNocmlua1RvRml0KCk7CiAgICAg
bV9saW5lQm94ZXMuc2hyaW5rVG9GaXQoKTsKLSAgICBtX2xpbmVSdW5zLnNocmlua1RvRml0KCk7
CisgICAgbV9ydW5zLnNocmlua1RvRml0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmUu
aAppbmRleCBjYjBiYWI3MzhjOWM5ZjQ2OTUyNjRmNmQ2OWU5YTBhMzk1YzJiODQ3Li5iYmJlZTM0
YmU4MTFiMzc4ZWVhZGIwYjIzZjE5YzEzZTE4MDg0YmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRpbmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGlu
ZS5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbExlZnQ7IH0KICAgICAgICAgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgp
ICsgbG9naWNhbFdpZHRoKCk7IH0KIAotICAgICAgICBjb25zdCBMaW5lUnVuOjpFeHBhbnNpb24m
IGV4cGFuc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhwYW5zaW9uOyB9CisgICAgICAgIGNvbnN0
IDo6V2ViQ29yZTo6TGF5b3V0OjpSdW46OkV4cGFuc2lvbiYgZXhwYW5zaW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9leHBhbnNpb247IH0KIAogICAgICAgICBib29sIGhhc1RyYWlsaW5nV2hpdGVzcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlVHlwZSAhPSBUcmFpbGluZ1do
aXRlc3BhY2U6Ok5vbmU7IH0KICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmFpbGluZ1doaXRl
c3BhY2VXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7IH0K
QEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgICAgICB2b2lkIGV4cGFuZChjb25zdCBJbmxp
bmVUZXh0SXRlbSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICAgICAgdm9p
ZCBtb3ZlSG9yaXpvbnRhbGx5KElubGluZUxheW91dFVuaXQgb2Zmc2V0KSB7IG1fbG9naWNhbExl
ZnQgKz0gb2Zmc2V0OyB9CiAgICAgICAgIHZvaWQgc2hyaW5rSG9yaXpvbnRhbGx5KElubGluZUxh
eW91dFVuaXQgd2lkdGgpIHsgbV9sb2dpY2FsV2lkdGggLT0gd2lkdGg7IH0KLSAgICAgICAgdm9p
ZCBzZXRFeHBhbnNpb24oTGluZVJ1bjo6RXhwYW5zaW9uIGV4cGFuc2lvbikgeyBtX2V4cGFuc2lv
biA9IGV4cGFuc2lvbjsgfQorICAgICAgICB2b2lkIHNldEV4cGFuc2lvbig6OldlYkNvcmU6Okxh
eW91dDo6UnVuOjpFeHBhbnNpb24gZXhwYW5zaW9uKSB7IG1fZXhwYW5zaW9uID0gZXhwYW5zaW9u
OyB9CiAgICAgICAgIHZvaWQgc2V0TmVlZHNIeXBoZW4oSW5saW5lTGF5b3V0VW5pdCBoeXBoZW5M
b2dpY2FsV2lkdGgpOwogCiAgICAgICAgIGVudW0gY2xhc3MgVHJhaWxpbmdXaGl0ZXNwYWNlIHsK
QEAgLTEyNCw3ICsxMjQsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRyYWlsaW5nV2hpdGVzcGFjZSBt
X3RyYWlsaW5nV2hpdGVzcGFjZVR5cGUgeyBUcmFpbGluZ1doaXRlc3BhY2U6Ok5vbmUgfTsKICAg
ICAgICAgSW5saW5lTGF5b3V0VW5pdCBtX3RyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIHsgMCB9Owog
ICAgICAgICBzdGQ6Om9wdGlvbmFsPFRleHQ+IG1fdGV4dENvbnRlbnQ7Ci0gICAgICAgIExpbmVS
dW46OkV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKKyAgICAgICAgOjpXZWJDb3JlOjpMYXlvdXQ6OlJ1
bjo6RXhwYW5zaW9uIG1fZXhwYW5zaW9uOwogICAgIH07CiAgICAgdXNpbmcgUnVuTGlzdCA9IFZl
Y3RvcjxSdW4sIDEwPjsKICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4g
bV9ydW5zOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0Nv
bnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9y
bWF0dGluZ0NvbnRleHRzL2lubGluZS9JbmxpbmVMaW5lUnVuLmgKaW5kZXggMDRlODQwNTdlYjQ1
Nzc3M2IyOTQzZTc4NjM1YTM5MmQ5NGYwYTE4Mi4uMDJhYWI3NWMyZTE0NWJiNTFhYTI3NjIwNTIy
ZDE5NWJhODI3ZWYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Zvcm1hdHRp
bmdDb250ZXh0cy9pbmxpbmUvSW5saW5lTGluZVJ1bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9mb3JtYXR0aW5nQ29udGV4dHMvaW5saW5lL0lubGluZUxpbmVSdW4uaApAQCAtMzQsNyAr
MzQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIExheW91dCB7CiAKLXN0cnVj
dCBMaW5lUnVuIHsKK3N0cnVjdCBSdW4gewogICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9D
QVRFRDsKICAgICBzdHJ1Y3QgVGV4dCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FM
TE9DQVRFRDsKQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IExpbmVSdW4gewogICAgICAgICBHZW5l
cmljSW5saW5lTGV2ZWxCb3gKICAgICB9OwogICAgIHN0cnVjdCBFeHBhbnNpb247Ci0gICAgTGlu
ZVJ1bihzaXplX3QgbGluZUluZGV4LCBUeXBlLCBjb25zdCBCb3gmLCBjb25zdCBJbmxpbmVSZWN0
JiwgY29uc3QgSW5saW5lUmVjdCYgaW5rT3ZlcmZsb3csIEV4cGFuc2lvbiwgc3RkOjpvcHRpb25h
bDxUZXh0PiA9IHN0ZDo6bnVsbG9wdCwgYm9vbCBoYXNDb250ZW50ID0gdHJ1ZSwgYm9vbCBpc0xp
bmVTcGFubmluZyA9IGZhbHNlKTsKKyAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgVHlwZSwgY29u
c3QgQm94JiwgY29uc3QgSW5saW5lUmVjdCYsIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJmbG93
LCBFeHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBzdGQ6Om51bGxvcHQsIGJvb2wgaGFz
Q29udGVudCA9IHRydWUsIGJvb2wgaXNMaW5lU3Bhbm5pbmcgPSBmYWxzZSk7CiAKICAgICBib29s
IGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpUZXh0OyB9CiAgICAgYm9v
bCBpc1NvZnRMaW5lQnJlYWsoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6U29mdExp
bmVCcmVhazsgfQpAQCAtMTA3LDYgKzEwNyw4IEBAIHN0cnVjdCBMaW5lUnVuIHsKICAgICBFeHBh
bnNpb24gZXhwYW5zaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHBhbnNpb247IH0KIAogICAgIGNv
bnN0IEJveCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CisgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0Qm94KCkuc3R5
bGUoKTsgfQorCiAgICAgc2l6ZV90IGxpbmVJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUlu
ZGV4OyB9CiAKIHByaXZhdGU6CkBAIC0xMjIsNyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
Om9wdGlvbmFsPFRleHQ+IG1fdGV4dDsKIH07CiAKLWlubGluZSBMaW5lUnVuOjpMaW5lUnVuKHNp
emVfdCBsaW5lSW5kZXgsIFR5cGUgdHlwZSwgY29uc3QgTGF5b3V0OjpCb3gmIGxheW91dEJveCwg
Y29uc3QgSW5saW5lUmVjdCYgbG9naWNhbFJlY3QsIGNvbnN0IElubGluZVJlY3QmIGlua092ZXJm
bG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+IHRleHQsIGJvb2wg
aGFzQ29udGVudCwgYm9vbCBpc0xpbmVTcGFubmluZykKK2lubGluZSBSdW46OlJ1bihzaXplX3Qg
bGluZUluZGV4LCBUeXBlIHR5cGUsIGNvbnN0IExheW91dDo6Qm94JiBsYXlvdXRCb3gsIGNvbnN0
IElubGluZVJlY3QmIGxvZ2ljYWxSZWN0LCBjb25zdCBJbmxpbmVSZWN0JiBpbmtPdmVyZmxvdywg
RXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0PiB0ZXh0LCBib29sIGhhc0Nv
bnRlbnQsIGJvb2wgaXNMaW5lU3Bhbm5pbmcpCiAgICAgOiBtX2xpbmVJbmRleChsaW5lSW5kZXgp
CiAgICAgLCBtX3R5cGUodHlwZSkKICAgICAsIG1fbGF5b3V0Qm94KG1ha2VXZWFrUHRyKGxheW91
dEJveCkpCkBAIC0xMzUsNyArMTM3LDcgQEAgaW5saW5lIExpbmVSdW46OkxpbmVSdW4oc2l6ZV90
IGxpbmVJbmRleCwgVHlwZSB0eXBlLCBjb25zdCBMYXlvdXQ6OkJveCYgbGF5b3V0Qm8KIHsKIH0K
IAotaW5saW5lIExpbmVSdW46OlRleHQ6OlRleHQoc2l6ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3Ro
LCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRv
UmVuZGVyLCBib29sIGhhc0h5cGhlbikKK2lubGluZSBSdW46OlRleHQ6OlRleHQoc2l6ZV90IHN0
YXJ0LCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5n
IGFkanVzdGVkQ29udGVudFRvUmVuZGVyLCBib29sIGhhc0h5cGhlbikKICAgICA6IG1fc3RhcnQo
c3RhcnQpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX2hhc0h5cGhlbihoYXNIeXBo
ZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZm9ybWF0dGluZ0NvbnRleHRz
L3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Zvcm1hdHRpbmdDb250ZXh0cy90YWJsZS9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRl
eCA2MTgwN2Q0MDIzZGI3N2YzYjcxMjdiZjg0NjQxZTVhNDIwNDU1NmZkLi5kY2EwYTQ0YzY3N2Jj
ZDZhZTZlYjRjOGE1ZDY2N2ZjYzAxY2NjMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvZm9ybWF0dGluZ0NvbnRleHRzL3RhYmxlL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mb3JtYXR0aW5nQ29udGV4dHMvdGFibGUvVGFi
bGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCB2b2lkIFRhYmxlRm9y
bWF0dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxh
YmxlSG9yaXpvbgogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGlm
IChjZWxsQm94LmVzdGFibGlzaGVzSW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byYgaW5saW5lRm9ybWF0dGluZ1N0YXRlZSA9IGxheW91dFN0
YXRlKCkuZXN0YWJsaXNoZWRJbmxpbmVGb3JtYXR0aW5nU3RhdGUoY2VsbEJveCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IGlubGluZUZvcm1hdHRpbmdTdGF0ZWUu
bGluZVJ1bnMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcnVuIDogaW5s
aW5lRm9ybWF0dGluZ1N0YXRlZS5ydW5zKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVuLm1vdmVWZXJ0aWNhbGx5KGludHJpbnNpY1BhZGRpbmdUb3ApOwogICAgICAgICAgICAgICAg
ICAgICAgICAgZm9yIChhdXRvJiBsaW5lIDogaW5saW5lRm9ybWF0dGluZ1N0YXRlZS5saW5lcygp
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUubW92ZVZlcnRpY2FsbHkoaW50cmlu
c2ljUGFkZGluZ1RvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdy
YXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwCmlu
ZGV4IDI5MmY0MzExNjY5MGUzYjQyZDEzYWY0NGUxMTJmZTY1ODIwMWU3YWEuLmZkYjc0YjQ1M2Ez
NDNiNTc1YmJmYjE1NjI3Y2EzMjFhNjc4MjY1MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklu
bGluZUNvbnRlbnQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFJ1bkl0ZXJhdG9yIElubGluZUNvbnRl
bnQ6Oml0ZXJhdG9yRm9yUnVuKGNvbnN0IFJ1biYgcnVuKSBjb25zdAogCiBUZXh0UnVuSXRlcmF0
b3IgSW5saW5lQ29udGVudDo6aXRlcmF0b3JGb3JUZXh0UnVuKGNvbnN0IFJ1biYgcnVuKSBjb25z
dAogewotICAgIEFTU0VSVChydW4udGV4dENvbnRlbnQoKSk7CisgICAgQVNTRVJUKHJ1bi50ZXh0
KCkpOwogICAgIHJldHVybiB7IFJ1bkl0ZXJhdG9yTW9kZXJuUGF0aCB7ICp0aGlzLCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KCZydW4gLSBydW5zLmJlZ2luKCkpIH0gfTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uSW5saW5l
Q29udGVudEJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuY3BwCmluZGV4IDE4NThjZTcwOTgy
ZjUyNGE1MTQ2ZDY1ODdkZDE5OTBkODUyM2IwYjguLmU0MDE1NjI4ZTFjYTI3NmFmYmM4MDNiOWJk
ZjMxZjAxMjE0YTEwODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3Jh
dGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNvbnRlbnRCdWlsZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250
ZW50QnVpbGRlci5jcHAKQEAgLTY3LDM4ICs2NywzOCBAQCBJbmxpbmVDb250ZW50QnVpbGRlcjo6
SW5saW5lQ29udGVudEJ1aWxkZXIoY29uc3QgTGF5b3V0OjpMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dAogCiB2b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpidWlsZChjb25zdCBMYXlvdXQ6OklubGlu
ZUZvcm1hdHRpbmdTdGF0ZSYgaW5saW5lRm9ybWF0dGluZ1N0YXRlLCBJbmxpbmVDb250ZW50JiBp
bmxpbmVDb250ZW50KSBjb25zdAogewotICAgIGNyZWF0ZURpc3BsYXlMaW5lUnVucyhpbmxpbmVG
b3JtYXR0aW5nU3RhdGUubGluZXMoKSwgaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCks
IGlubGluZUNvbnRlbnQpOworICAgIGNyZWF0ZURpc3BsYXlSdW5zKGlubGluZUZvcm1hdHRpbmdT
dGF0ZS5saW5lcygpLCBpbmxpbmVGb3JtYXR0aW5nU3RhdGUucnVucygpLCBpbmxpbmVDb250ZW50
KTsKICAgICBjcmVhdGVEaXNwbGF5TGluZXMoaW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCks
IGlubGluZUNvbnRlbnQpOwogfQogCi12b2lkIElubGluZUNvbnRlbnRCdWlsZGVyOjpjcmVhdGVE
aXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZXMsIGNvbnN0IExh
eW91dDo6SW5saW5lTGluZVJ1bnMmIGxpbmVSdW5zLCBJbmxpbmVDb250ZW50JiBpbmxpbmVDb250
ZW50KSBjb25zdAordm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxheVJ1bnMo
Y29uc3QgTGF5b3V0OjpJbmxpbmVMaW5lcyYgbGluZXMsIGNvbnN0IExheW91dDo6SW5saW5lUnVu
cyYgcnVucywgSW5saW5lQ29udGVudCYgaW5saW5lQ29udGVudCkgY29uc3QKIHsKLSAgICBpZiAo
bGluZVJ1bnMuaXNFbXB0eSgpKQorICAgIGlmIChydW5zLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byBjcmVhdGVEaXNwbGF5Qm94UnVuID0gWyZdKGF1dG8mIGxpbmVSdW4p
IHsKLSAgICAgICAgaWYgKGxpbmVSdW4uaXNSb290SW5saW5lQm94KCkpIHsKKyAgICBhdXRvIGNy
ZWF0ZURpc3BsYXlCb3hSdW4gPSBbJl0oYXV0byYgcnVuKSB7CisgICAgICAgIGlmIChydW4uaXNS
b290SW5saW5lQm94KCkpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBUZWFjaCB0aGUgcnVuIGl0
ZXJhdG9ycyB0byBpZ25vcmUgdGhlIHJvb3QgaW5saW5lIGJveCBydW5zLgogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5
b3V0Qm94KCk7Ci0gICAgICAgIGF1dG8gbGluZUluZGV4ID0gbGluZVJ1bi5saW5lSW5kZXgoKTsK
LSAgICAgICAgYXV0byBydW5SZWN0ID0gRmxvYXRSZWN0IHsgbGluZVJ1bi5sb2dpY2FsUmVjdCgp
IH07Ci0gICAgICAgIGF1dG8gaW5rT3ZlcmZsb3cgPSBGbG9hdFJlY3QgeyBsaW5lUnVuLmlua092
ZXJmbG93KCkgfTsKKyAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gcnVuLmxheW91dEJveCgpOwor
ICAgICAgICBhdXRvIGxpbmVJbmRleCA9IHJ1bi5saW5lSW5kZXgoKTsKKyAgICAgICAgYXV0byBy
dW5SZWN0ID0gRmxvYXRSZWN0IHsgcnVuLmxvZ2ljYWxSZWN0KCkgfTsKKyAgICAgICAgYXV0byBp
bmtPdmVyZmxvdyA9IEZsb2F0UmVjdCB7IHJ1bi5pbmtPdmVyZmxvdygpIH07CiAgICAgICAgIGF1
dG8mIGdlb21ldHJ5ID0gbV9sYXlvdXRTdGF0ZS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwog
ICAgICAgICBydW5SZWN0LnNldFNpemUoeyBnZW9tZXRyeS5ib3JkZXJCb3hXaWR0aCgpLCBnZW9t
ZXRyeS5ib3JkZXJCb3hIZWlnaHQoKSB9KTsKICAgICAgICAgaWYgKGxpbmVzW2xpbmVJbmRleF0u
bmVlZHNJbnRlZ3JhbFBvc2l0aW9uKCkpIHsKICAgICAgICAgICAgIHJ1blJlY3Quc2V0WShyb3Vu
ZFRvSW50KHJ1blJlY3QueSgpKSk7CiAgICAgICAgICAgICBpbmtPdmVyZmxvdy5zZXRZKHJvdW5k
VG9JbnQoaW5rT3ZlcmZsb3cueSgpKSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxpbmVSdW4u
aXNJbmxpbmVCb3goKSkgewotICAgICAgICAgICAgYXV0byBsaW5lUnVuUmVjdCA9IGxpbmVSdW4u
bG9naWNhbFJlY3QoKTsKKyAgICAgICAgaWYgKHJ1bi5pc0lubGluZUJveCgpKSB7CisgICAgICAg
ICAgICBhdXRvIHJ1blJlY3QgPSBydW4ubG9naWNhbFJlY3QoKTsKICAgICAgICAgICAgIGF1dG8g
aGFzU2Nyb2xsYWJsZUNvbnRlbnQgPSBbJl0gewogICAgICAgICAgICAgICAgIC8vIEluIHN0YW5k
YXJkcyBtb2RlLCBpbmxpbmUgYm94ZXMgYWx3YXlzIHN0YXJ0IHdpdGggYW4gaW1hZ2luYXJ5IHN0
cnV0LgotICAgICAgICAgICAgICAgIHJldHVybiBtX2xheW91dFN0YXRlLmluU3RhbmRhcmRzTW9k
ZSgpIHx8IGxpbmVSdW4uaGFzQ29udGVudCgpIHx8IGdlb21ldHJ5Lmhvcml6b250YWxCb3JkZXIo
KSB8fCAoZ2VvbWV0cnkuaG9yaXpvbnRhbFBhZGRpbmcoKSAmJiBnZW9tZXRyeS5ob3Jpem9udGFs
UGFkZGluZygpLnZhbHVlKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBtX2xheW91dFN0YXRl
LmluU3RhbmRhcmRzTW9kZSgpIHx8IHJ1bi5oYXNDb250ZW50KCkgfHwgZ2VvbWV0cnkuaG9yaXpv
bnRhbEJvcmRlcigpIHx8IChnZW9tZXRyeS5ob3Jpem9udGFsUGFkZGluZygpICYmIGdlb21ldHJ5
Lmhvcml6b250YWxQYWRkaW5nKCkudmFsdWUoKSk7CiAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgaW5saW5lQ29udGVudC5ub25Sb290SW5saW5lQm94ZXMuYXBwZW5kKHsgbGluZUluZGV4LCBs
YXlvdXRCb3gsIGxpbmVSdW5SZWN0LCBoYXNTY3JvbGxhYmxlQ29udGVudCgpIH0pOwotICAgICAg
ICAgICAgaWYgKCFsaW5lUnVuLmlzTGluZVNwYW5uaW5nKCkpIHsKKyAgICAgICAgICAgIGlubGlu
ZUNvbnRlbnQubm9uUm9vdElubGluZUJveGVzLmFwcGVuZCh7IGxpbmVJbmRleCwgbGF5b3V0Qm94
LCBydW5SZWN0LCBoYXNTY3JvbGxhYmxlQ29udGVudCgpIH0pOworICAgICAgICAgICAgaWYgKCFy
dW4uaXNMaW5lU3Bhbm5pbmcoKSkgewogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBSdW4gaXRl
cmF0b3JzIHdpdGggKHRleHQpcnVucyBzcGFubmluZyBvdmVyIG11bHRpcGxlIGxpbmVzIGV4cGVj
dCBubyAiaW4tYmV0d2VlbiIgcnVucyAoZS5nLiBsaW5lIHNwYW5uaW5nIG9yIHJvb3QgaW5saW5l
IGJveGVzKS4KICAgICAgICAgICAgICAgICBpbmxpbmVDb250ZW50LnJ1bnMuYXBwZW5kKHsgbGlu
ZUluZGV4LCBsYXlvdXRCb3gsIHJ1blJlY3QsIGlua092ZXJmbG93LCB7IH0sIHsgfSB9KTsKICAg
ICAgICAgICAgIH0KQEAgLTEwNiwzMSArMTA2LDMxIEBAIHZvaWQgSW5saW5lQ29udGVudEJ1aWxk
ZXI6OmNyZWF0ZURpc3BsYXlMaW5lUnVucyhjb25zdCBMYXlvdXQ6OklubGluZUxpbmVzJiBsaW5l
CiAgICAgICAgICAgICBpbmxpbmVDb250ZW50LnJ1bnMuYXBwZW5kKHsgbGluZUluZGV4LCBsYXlv
dXRCb3gsIHJ1blJlY3QsIGlua092ZXJmbG93LCB7IH0sIHsgfSB9KTsKICAgICB9OwogCi0gICAg
YXV0byBjcmVhdGVEaXNwbGF5VGV4dFJ1biA9IFsmXShhdXRvJiBsaW5lUnVuKSB7Ci0gICAgICAg
IGF1dG8mIGxheW91dEJveCA9IGxpbmVSdW4ubGF5b3V0Qm94KCk7Ci0gICAgICAgIGF1dG8gbGlu
ZUluZGV4ID0gbGluZVJ1bi5saW5lSW5kZXgoKTsKLSAgICAgICAgYXV0byBydW5SZWN0ID0gRmxv
YXRSZWN0IHsgbGluZVJ1bi5sb2dpY2FsUmVjdCgpIH07Ci0gICAgICAgIGF1dG8gaW5rT3ZlcmZs
b3cgPSBGbG9hdFJlY3QgeyBsaW5lUnVuLmlua092ZXJmbG93KCkgfTsKKyAgICBhdXRvIGNyZWF0
ZURpc3BsYXlUZXh0UnVuID0gWyZdKGF1dG8mIHJ1bikgeworICAgICAgICBhdXRvJiBsYXlvdXRC
b3ggPSBydW4ubGF5b3V0Qm94KCk7CisgICAgICAgIGF1dG8gbGluZUluZGV4ID0gcnVuLmxpbmVJ
bmRleCgpOworICAgICAgICBhdXRvIHJ1blJlY3QgPSBGbG9hdFJlY3QgeyBydW4ubG9naWNhbFJl
Y3QoKSB9OworICAgICAgICBhdXRvIGlua092ZXJmbG93ID0gRmxvYXRSZWN0IHsgcnVuLmlua092
ZXJmbG93KCkgfTsKICAgICAgICAgaWYgKGxpbmVzW2xpbmVJbmRleF0ubmVlZHNJbnRlZ3JhbFBv
c2l0aW9uKCkpIHsKICAgICAgICAgICAgIHJ1blJlY3Quc2V0WShyb3VuZFRvSW50KHJ1blJlY3Qu
eSgpKSk7CiAgICAgICAgICAgICBpbmtPdmVyZmxvdy5zZXRZKHJvdW5kVG9JbnQoaW5rT3ZlcmZs
b3cueSgpKSk7CiAgICAgICAgIH0KIAotICAgICAgICBhdXRvIHRleHQgPSBsaW5lUnVuLnRleHQo
KTsKKyAgICAgICAgYXV0byB0ZXh0ID0gcnVuLnRleHQoKTsKICAgICAgICAgaW5saW5lQ29udGVu
dC5ydW5zLmFwcGVuZCh7IGxpbmVJbmRleAogICAgICAgICAgICAgLCBsYXlvdXRCb3gKICAgICAg
ICAgICAgICwgcnVuUmVjdAogICAgICAgICAgICAgLCBpbmtPdmVyZmxvdwotICAgICAgICAgICAg
LCBSdW46OkV4cGFuc2lvbiB7IGxpbmVSdW4uZXhwYW5zaW9uKCkuYmVoYXZpb3IsIGxpbmVSdW4u
ZXhwYW5zaW9uKCkuaG9yaXpvbnRhbEV4cGFuc2lvbiB9Ci0gICAgICAgICAgICAsIFJ1bjo6VGV4
dENvbnRlbnQgeyB0ZXh0LT5zdGFydCgpLCB0ZXh0LT5sZW5ndGgoKSwgdGV4dC0+b3JpZ2luYWxD
b250ZW50KCksIHRleHQtPnJlbmRlcmVkQ29udGVudCgpLCB0ZXh0LT5oYXNIeXBoZW4oKSB9IH0p
OworICAgICAgICAgICAgLCBSdW46OkV4cGFuc2lvbiB7IHJ1bi5leHBhbnNpb24oKS5iZWhhdmlv
ciwgcnVuLmV4cGFuc2lvbigpLmhvcml6b250YWxFeHBhbnNpb24gfQorICAgICAgICAgICAgLCBS
dW46OlRleHQgeyB0ZXh0LT5zdGFydCgpLCB0ZXh0LT5sZW5ndGgoKSwgdGV4dC0+b3JpZ2luYWxD
b250ZW50KCksIHRleHQtPnJlbmRlcmVkQ29udGVudCgpLCB0ZXh0LT5oYXNIeXBoZW4oKSB9IH0p
OwogICAgIH07CiAKLSAgICBpbmxpbmVDb250ZW50LnJ1bnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShsaW5lUnVucy5zaXplKCkpOwotICAgIGZvciAoYXV0byYgbGluZVJ1biA6IGxpbmVSdW5zKSB7
Ci0gICAgICAgIGlmIChsaW5lUnVuLnRleHQoKSkKLSAgICAgICAgICAgIGNyZWF0ZURpc3BsYXlU
ZXh0UnVuKGxpbmVSdW4pOworICAgIGlubGluZUNvbnRlbnQucnVucy5yZXNlcnZlSW5pdGlhbENh
cGFjaXR5KHJ1bnMuc2l6ZSgpKTsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IHJ1bnMpIHsKKyAgICAg
ICAgaWYgKHJ1bi50ZXh0KCkpCisgICAgICAgICAgICBjcmVhdGVEaXNwbGF5VGV4dFJ1bihydW4p
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjcmVhdGVEaXNwbGF5Qm94UnVuKGxpbmVSdW4p
OworICAgICAgICAgICAgY3JlYXRlRGlzcGxheUJveFJ1bihydW4pOwogICAgIH0KIH0KIApAQCAt
MTYwLDEzICsxNjAsMTQgQEAgdm9pZCBJbmxpbmVDb250ZW50QnVpbGRlcjo6Y3JlYXRlRGlzcGxh
eUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5lTGluZXMmIGxpbmVzLAogCiAgICAgICAgICAgICAv
LyBTaW1pbGFyIHRvIExlZ2FjeUlubGluZUZsb3dCb3g6OmFkZFJlcGxhY2VkQ2hpbGRPdmVyZmxv
dy4KICAgICAgICAgICAgIGF1dG8mIGJveCA9IGRvd25jYXN0PFJlbmRlckJveD4obV9ib3hUcmVl
LnJlbmRlcmVyRm9yTGF5b3V0Qm94KGxheW91dEJveCkpOworICAgICAgICAgICAgYXV0byBydW5M
b2dpY2FsUmVjdCA9IHJ1bi5sb2dpY2FsUmVjdCgpOwogICAgICAgICAgICAgaWYgKCFib3guaGFz
U2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAgICAgICAgICAgICAgIGF1dG8gY2hpbGRJbmtPdmVy
ZmxvdyA9IGJveC5sb2dpY2FsVmlzdWFsT3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oJmJveC5w
YXJlbnQoKS0+c3R5bGUoKSk7Ci0gICAgICAgICAgICAgICAgY2hpbGRJbmtPdmVyZmxvdy5tb3Zl
KHJ1bi5yZWN0KCkueCgpLCBydW4ucmVjdCgpLnkoKSk7CisgICAgICAgICAgICAgICAgY2hpbGRJ
bmtPdmVyZmxvdy5tb3ZlKHJ1bkxvZ2ljYWxSZWN0LngoKSwgcnVuTG9naWNhbFJlY3QueSgpKTsK
ICAgICAgICAgICAgICAgICBsaW5lSW5rT3ZlcmZsb3dSZWN0LnVuaXRlKGNoaWxkSW5rT3ZlcmZs
b3cpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byBjaGlsZFNjcm9sbGFibGVPdmVy
ZmxvdyA9IGJveC5sb2dpY2FsTGF5b3V0T3ZlcmZsb3dSZWN0Rm9yUHJvcGFnYXRpb24oJmJveC5w
YXJlbnQoKS0+c3R5bGUoKSk7Ci0gICAgICAgICAgICBjaGlsZFNjcm9sbGFibGVPdmVyZmxvdy5t
b3ZlKHJ1bi5yZWN0KCkueCgpLCBydW4ucmVjdCgpLnkoKSk7CisgICAgICAgICAgICBjaGlsZFNj
cm9sbGFibGVPdmVyZmxvdy5tb3ZlKHJ1bkxvZ2ljYWxSZWN0LngoKSwgcnVuTG9naWNhbFJlY3Qu
eSgpKTsKICAgICAgICAgICAgIHNjcm9sbGFibGVPdmVyZmxvd1JlY3QudW5pdGUoY2hpbGRTY3Jv
bGxhYmxlT3ZlcmZsb3cpOwogICAgICAgICB9CiAgICAgICAgIC8vIENvbGxlY3Qgc2Nyb2xsYWJs
ZSBvdmVyZmxvdyBmcm9tIGlubGluZSBib3hlcy4gQWxsIG90aGVyIGlubGluZSBsZXZlbCBib3hl
cyAoZS5nIGF0b21pYyBpbmxpbmUgbGV2ZWwgYm94ZXMpIHN0cmV0Y2ggdGhlIGxpbmUuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRp
b25JbmxpbmVDb250ZW50QnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uSW5saW5lQ29udGVudEJ1aWxkZXIuaAppbmRleCA2MjlhZmEw
NTI4MWU1ZjVhZWMwY2ZmZmFjMjM5YzYyN2FhYzUwOTM1Li4xNmI1ODc0YjYzOTFhODI3ZDU1MWUz
YzM5ZTFjNjc1NTQyMmM3NDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50
ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25JbmxpbmVDb250ZW50QnVpbGRlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvbklubGluZUNv
bnRlbnRCdWlsZGVyLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgYnVpbGQo
Y29uc3QgTGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nU3RhdGUmLCBJbmxpbmVDb250ZW50JikgY29u
c3Q7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjcmVhdGVEaXNwbGF5TGluZVJ1bnMoY29uc3QgTGF5
b3V0OjpJbmxpbmVMaW5lcyYsIGNvbnN0IExheW91dDo6SW5saW5lTGluZVJ1bnMmLCBJbmxpbmVD
b250ZW50JikgY29uc3Q7CisgICAgdm9pZCBjcmVhdGVEaXNwbGF5UnVucyhjb25zdCBMYXlvdXQ6
OklubGluZUxpbmVzJiwgY29uc3QgTGF5b3V0OjpJbmxpbmVSdW5zJiwgSW5saW5lQ29udGVudCYp
IGNvbnN0OwogICAgIHZvaWQgY3JlYXRlRGlzcGxheUxpbmVzKGNvbnN0IExheW91dDo6SW5saW5l
TGluZXMmLCBJbmxpbmVDb250ZW50JikgY29uc3Q7CiAKICAgICBjb25zdCBMYXlvdXQ6OkxheW91
dFN0YXRlJiBtX2xheW91dFN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcApp
bmRleCAwNjU1MGI3MTM4ODNlYjVmNWE3OThhOTgyYjFlNTJiOTA3YmE4NTlhLi5lZTIwZDRiZmY2
ZDBhMTU1N2VjOWFlYjM4YzI0YTdjMDZiZTc5MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5lTGF5b3V0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24vTGF5b3V0SW50ZWdyYXRpb25MaW5l
TGF5b3V0LmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZnNldCkKICAgICBw
YWludFJlY3QubW92ZUJ5KC1wYWludE9mZnNldCk7CiAKICAgICBmb3IgKGF1dG8mIHJ1biA6IG1f
aW5saW5lQ29udGVudC0+cnVuc0ZvclJlY3QocGFpbnRSZWN0KSkgewotICAgICAgICBpZiAocnVu
LnRleHRDb250ZW50KCkpCisgICAgICAgIGlmIChydW4udGV4dCgpKQogICAgICAgICAgICAgcGFp
bnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKHBhaW50SW5mbywgcGFpbnRPZmZzZXQs
IG1faW5saW5lQ29udGVudC0+bGluZUZvclJ1bihydW4pLCBydW4pOwogICAgICAgICBlbHNlIGlm
IChhdXRvJiByZW5kZXJlciA9IG1fYm94VHJlZS5yZW5kZXJlckZvckxheW91dEJveChydW4ubGF5
b3V0Qm94KCkpOyBpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSAmJiByZW5kZXJlci5pc1JlcGxhY2Vk
KCkpIHsKICAgICAgICAgICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
cmVuZGVyZXIpOwpAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgTGluZUxheW91dDo6aGl0VGVzdChj
b25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0LCBjCiAg
ICAgICAgIGF1dG8mIHJlbmRlcmVyID0gbV9ib3hUcmVlLnJlbmRlcmVyRm9yTGF5b3V0Qm94KHJ1
bi5sYXlvdXRCb3goKSk7CiAKICAgICAgICAgaWYgKGlzPFJlbmRlclRleHQ+KHJlbmRlcmVyKSkg
ewotICAgICAgICAgICAgYXV0byBydW5SZWN0ID0gTGF5b3V0Ojp0b0xheW91dFJlY3QocnVuLnJl
Y3QoKSk7CisgICAgICAgICAgICBhdXRvIHJ1blJlY3QgPSBMYXlvdXQ6OnRvTGF5b3V0UmVjdChy
dW4ubG9naWNhbFJlY3QoKSk7CiAgICAgICAgICAgICBydW5SZWN0Lm1vdmVCeShhY2N1bXVsYXRl
ZE9mZnNldCk7CiAKICAgICAgICAgICAgIGlmICghbG9jYXRpb25JbkNvbnRhaW5lci5pbnRlcnNl
Y3RzKHJ1blJlY3QpKQpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnRU
ZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVzKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
CiAgICAgaWYgKHJ1bi5zdHlsZSgpLnZpc2liaWxpdHkoKSAhPSBWaXNpYmlsaXR5OjpWaXNpYmxl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiB0ZXh0Q29udGVudCA9ICpydW4udGV4dENv
bnRlbnQoKTsKKyAgICBhdXRvJiB0ZXh0Q29udGVudCA9ICpydW4udGV4dCgpOwogICAgIGlmICgh
dGV4dENvbnRlbnQubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtNTYwLDcgKzU2MCw3
IEBAIHZvaWQgTGluZUxheW91dDo6cGFpbnRUZXh0UnVuVXNpbmdQaHlzaWNhbENvb3JkaW5hdGVz
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zCiAgICAgYXV0byBwaHlzaWNhbFBhaW50T2Zmc2V0
ID0gcGFpbnRPZmZzZXQ7CiAgICAgaWYgKCFibG9ja0lzSG9yaXpvbnRhbFdyaXRpbmcpIHsKICAg
ICAgICAgLy8gRklYTUU6IEZpZ3VyZSBvdXQgd2h5IHRoaXMgdHJhbnNsYXRlIGlzIHJlcXVpcmVk
LgotICAgICAgICBwaHlzaWNhbFBhaW50T2Zmc2V0Lm1vdmUoeyAwLCAtcnVuLnJlY3QoKS5oZWln
aHQoKSB9KTsKKyAgICAgICAgcGh5c2ljYWxQYWludE9mZnNldC5tb3ZlKHsgMCwgLXJ1bi5sb2dp
Y2FsUmVjdCgpLmhlaWdodCgpIH0pOwogICAgIH0KIAogICAgIGF1dG8gcGh5c2ljYWxSZWN0ID0g
WyZdKGNvbnN0IGF1dG8mIHJlY3QpIHsKQEAgLTU5Miw3ICs1OTIsNyBAQCB2b2lkIExpbmVMYXlv
dXQ6OnBhaW50VGV4dFJ1blVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8mIHBhaW50
SW5mbywgY29ucwogICAgIC8vIFRleHRSdW4gZXhwZWN0cyB0aGUgeFBvcyB0byBiZSBhZGp1c3Rl
ZCB3aXRoIHRoZSBhbGlnbWVudCBvZmZzZXQgKGUuZy4gd2hlbiB0aGUgbGluZSBpcyBjZW50ZXIg
YWxpZ25lZAogICAgIC8vIGFuZCB0aGUgcnVuIHN0YXJ0cyBhdCAxMDBweCwgZHVlIHRvIHRoZSBo
b3Jpem9udGFsIGFsaWdtZW50LCB0aGUgeHBvcyBpcyBzdXBwb3NlZCB0byBiZSBhdCAwcHgpLgog
ICAgIGF1dG8mIGZvbnRDYXNjYWRlID0gc3R5bGUuZm9udENhc2NhZGUoKTsKLSAgICBhdXRvIHhQ
b3MgPSBydW4ucmVjdCgpLngoKSAtIChsaW5lLmxpbmVCb3hMZWZ0KCkgKyBsaW5lLmNvbnRlbnRM
ZWZ0KCkpOworICAgIGF1dG8geFBvcyA9IHJ1bi5sb2dpY2FsUmVjdCgpLngoKSAtIChsaW5lLmxp
bmVCb3hMZWZ0KCkgKyBsaW5lLmNvbnRlbnRMZWZ0KCkpOwogICAgIGF1dG8gdGV4dFJ1biA9IFdl
YkNvcmU6OlRleHRSdW4geyB0ZXh0Q29udGVudC5yZW5kZXJlZENvbnRlbnQoKSwgeFBvcywgZXhw
YW5zaW9uLmhvcml6b250YWxFeHBhbnNpb24sIGV4cGFuc2lvbi5iZWhhdmlvciB9OwogICAgIHRl
eHRSdW4uc2V0VGFiU2l6ZSghc3R5bGUuY29sbGFwc2VXaGl0ZVNwYWNlKCksIHN0eWxlLnRhYlNp
emUoKSk7CiAKQEAgLTYwMyw3ICs2MDMsNyBAQCB2b2lkIExpbmVMYXlvdXQ6OnBhaW50VGV4dFJ1
blVzaW5nUGh5c2ljYWxDb29yZGluYXRlcyhQYWludEluZm8mIHBhaW50SW5mbywgY29ucwogCiAg
ICAgLy8gUGFpbnRpbmcgdXNlcyBvbmx5IHBoeXNpY2FsIGNvb3JkaW5hdGVzLgogICAgIHsKLSAg
ICAgICAgYXV0byBydW5SZWN0ID0gcGh5c2ljYWxSZWN0KHJ1bi5yZWN0KCkpOworICAgICAgICBh
dXRvIHJ1blJlY3QgPSBwaHlzaWNhbFJlY3QocnVuLmxvZ2ljYWxSZWN0KCkpOwogICAgICAgICBh
dXRvIGJveFJlY3QgPSBGbG9hdFJlY3QgeyBGbG9hdFBvaW50IHsgcGh5c2ljYWxQYWludE9mZnNl
dC54KCkgKyBydW5SZWN0LngoKSwgcGh5c2ljYWxQYWludE9mZnNldC55KCkgKyBydW5SZWN0Lnko
KSB9LCBydW5SZWN0LnNpemUoKSB9OwogICAgICAgICBhdXRvIHRleHRPcmlnaW4gPSBGbG9hdFBv
aW50IHsgYm94UmVjdC54KCksIHJvdW5kVG9EZXZpY2VQaXhlbChib3hSZWN0LnkoKSArIGZvbnRD
YXNjYWRlLmZvbnRNZXRyaWNzKCkuYXNjZW50KCksIGZvcm1hdHRpbmdDb250ZXh0Um9vdC5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblBhZ2luYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5h
dGlvbi5jcHAKaW5kZXggNGFlY2I0N2UzOTQzODdiODFhOGRhNGU0ODkxOWRmOGEwYzIzOTM5MS4u
NThlN2ZjMzgyMWFmZWIyNzJkMGRhMTEzYWRkNWYzNjk2YmRiOGZkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUGFnaW5hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xheW91dEludGVn
cmF0aW9uUGFnaW5hdGlvbi5jcHAKQEAgLTE0NSwxMCArMTQ1LDEwIEBAIHN0YXRpYyBSZWY8SW5s
aW5lQ29udGVudD4gbWFrZUFkanVzdGVkQ29udGVudChjb25zdCBJbmxpbmVDb250ZW50JiBpbmxp
bmVDb250ZW50CiAgICAgICAgIHJldHVybiBSdW4gewogICAgICAgICAgICAgcnVuLmxpbmVJbmRl
eCgpLAogICAgICAgICAgICAgcnVuLmxheW91dEJveCgpLAotICAgICAgICAgICAgbW92ZVZlcnRp
Y2FsbHkocnVuLnJlY3QoKSwgb2Zmc2V0KSwKKyAgICAgICAgICAgIG1vdmVWZXJ0aWNhbGx5KHJ1
bi5sb2dpY2FsUmVjdCgpLCBvZmZzZXQpLAogICAgICAgICAgICAgbW92ZVZlcnRpY2FsbHkocnVu
Lmlua092ZXJmbG93KCksIG9mZnNldCksCiAgICAgICAgICAgICBydW4uZXhwYW5zaW9uKCksCi0g
ICAgICAgICAgICBydW4udGV4dENvbnRlbnQoKQorICAgICAgICAgICAgcnVuLnRleHQoKQogICAg
ICAgICB9OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRl
Z3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bi5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
dGVncmF0aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKaW5kZXggNWE5NTRiMjgxM2NjMmE1NDg5
MDA1Y2NlNTU3YWM3NjZjZTU5NGFjNC4uZWUxZTQ1MGY3YmE0OWMyMDUzMzY3MmJhOTAyNmY2MmI1
MmE5MDgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0aW9uL0xh
eW91dEludGVncmF0aW9uUnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ludGVncmF0
aW9uL0xheW91dEludGVncmF0aW9uUnVuLmgKQEAgLTQwLDEwICs0MCwxMCBAQCBuYW1lc3BhY2Ug
TGF5b3V0SW50ZWdyYXRpb24gewogCiBzdHJ1Y3QgUnVuIHsKICAgICBXVEZfTUFLRV9TVFJVQ1Rf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgc3RydWN0IFRleHRDb250ZW50IHsKKyAgICBzdHJ1Y3QgVGV4
dCB7CiAgICAgICAgIFdURl9NQUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKICAgICBwdWJsaWM6
Ci0gICAgICAgIFRleHRDb250ZW50KHNpemVfdCBwb3NpdGlvbiwgc2l6ZV90IGxlbmd0aCwgY29u
c3QgU3RyaW5nJiwgU3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyLCBib29sIGhhc0h5cGhl
bik7CisgICAgICAgIFRleHQoc2l6ZV90IHBvc2l0aW9uLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmLCBTdHJpbmcgYWRqdXN0ZWRDb250ZW50VG9SZW5kZXIsIGJvb2wgaGFzSHlwaGVuKTsK
IAogICAgICAgICBzaXplX3Qgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CiAgICAg
ICAgIHNpemVfdCBlbmQoKSBjb25zdCB7IHJldHVybiBzdGFydCgpICsgbGVuZ3RoKCk7IH0KQEAg
LTYxLDE1ICs2MSwxNSBAQCBzdHJ1Y3QgUnVuIHsKICAgICB9OwogCiAgICAgc3RydWN0IEV4cGFu
c2lvbjsKLSAgICBSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIHN0
ZDo6b3B0aW9uYWw8VGV4dENvbnRlbnQ+ID0gc3RkOjpudWxsb3B0KTsKKyAgICBSdW4oc2l6ZV90
IGxpbmVJbmRleCwgY29uc3QgTGF5b3V0OjpCb3gmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFJlY3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24sIHN0ZDo6b3B0aW9uYWw8VGV4dD4gPSBz
dGQ6Om51bGxvcHQpOwogCi0gICAgY29uc3QgRmxvYXRSZWN0JiByZWN0KCkgY29uc3QgeyByZXR1
cm4gbV9yZWN0OyB9CisgICAgY29uc3QgRmxvYXRSZWN0JiBsb2dpY2FsUmVjdCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdDsgfQogICAgIGNvbnN0IEZsb2F0UmVjdCYgaW5rT3ZlcmZsb3coKSBjb25z
dCB7IHJldHVybiBtX2lua092ZXJmbG93OyB9CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFRleHRDb250
ZW50PiYgdGV4dENvbnRlbnQoKSB7IHJldHVybiBtX3RleHRDb250ZW50OyB9Ci0gICAgY29uc3Qg
c3RkOjpvcHRpb25hbDxUZXh0Q29udGVudD4mIHRleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
bV90ZXh0Q29udGVudDsgfQorICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4mIHRleHQoKSB7IHJldHVy
biBtX3RleHQ7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFRleHQ+JiB0ZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV90ZXh0OyB9CiAgICAgLy8gRklYTUU6IFRoaXMgaW5mb3JtYXRpb24gc2hvdWxk
IGJlIHByZXNlcnZlZCBhdCBSdW4gY29uc3RydWN0aW9uIHRpbWUuCi0gICAgYm9vbCBpc0xpbmVC
cmVhaygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLmlzTGluZUJyZWFrQm94KCkgfHwgKHRl
eHRDb250ZW50KCkgJiYgdGV4dENvbnRlbnQoKS0+b3JpZ2luYWxDb250ZW50KCkgPT0gIlxuIiAm
JiBzdHlsZSgpLnByZXNlcnZlTmV3bGluZSgpKTsgfQorICAgIGJvb2wgaXNMaW5lQnJlYWsoKSBj
b25zdCB7IHJldHVybiBsYXlvdXRCb3goKS5pc0xpbmVCcmVha0JveCgpIHx8ICh0ZXh0KCkgJiYg
dGV4dCgpLT5vcmlnaW5hbENvbnRlbnQoKSA9PSAiXG4iICYmIHN0eWxlKCkucHJlc2VydmVOZXds
aW5lKCkpOyB9CiAKICAgICBzdHJ1Y3QgRXhwYW5zaW9uIHsKICAgICAgICAgRXhwYW5zaW9uQmVo
YXZpb3IgYmVoYXZpb3IgeyBEZWZhdWx0RXhwYW5zaW9uIH07CkBAIC05MiwyMCArOTIsMjAgQEAg
cHJpdmF0ZToKICAgICBGbG9hdFJlY3QgbV9yZWN0OwogICAgIEZsb2F0UmVjdCBtX2lua092ZXJm
bG93OwogICAgIEV4cGFuc2lvbiBtX2V4cGFuc2lvbjsKLSAgICBzdGQ6Om9wdGlvbmFsPFRleHRD
b250ZW50PiBtX3RleHRDb250ZW50OworICAgIHN0ZDo6b3B0aW9uYWw8VGV4dD4gbV90ZXh0Owog
fTsKIAotaW5saW5lIFJ1bjo6UnVuKHNpemVfdCBsaW5lSW5kZXgsIGNvbnN0IExheW91dDo6Qm94
JiBsYXlvdXRCb3gsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRSZWN0JiBpbmtP
dmVyZmxvdywgRXhwYW5zaW9uIGV4cGFuc2lvbiwgc3RkOjpvcHRpb25hbDxUZXh0Q29udGVudD4g
dGV4dENvbnRlbnQpCitpbmxpbmUgUnVuOjpSdW4oc2l6ZV90IGxpbmVJbmRleCwgY29uc3QgTGF5
b3V0OjpCb3gmIGxheW91dEJveCwgY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGlua092ZXJmbG93LCBFeHBhbnNpb24gZXhwYW5zaW9uLCBzdGQ6Om9wdGlvbmFsPFRleHQ+
IHRleHQpCiAgICAgOiBtX2xpbmVJbmRleChsaW5lSW5kZXgpCiAgICAgLCBtX2xheW91dEJveCht
YWtlV2Vha1B0cihsYXlvdXRCb3gpKQogICAgICwgbV9yZWN0KHJlY3QpCiAgICAgLCBtX2lua092
ZXJmbG93KGlua092ZXJmbG93KQogICAgICwgbV9leHBhbnNpb24oZXhwYW5zaW9uKQotICAgICwg
bV90ZXh0Q29udGVudCh0ZXh0Q29udGVudCkKKyAgICAsIG1fdGV4dCh0ZXh0KQogewogfQogCi1p
bmxpbmUgUnVuOjpUZXh0Q29udGVudDo6VGV4dENvbnRlbnQoc2l6ZV90IHN0YXJ0LCBzaXplX3Qg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwgU3RyaW5nIGFkanVzdGVkQ29u
dGVudFRvUmVuZGVyLCBib29sIGhhc0h5cGhlbikKK2lubGluZSBSdW46OlRleHQ6OlRleHQoc2l6
ZV90IHN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsQ29udGVudCwg
U3RyaW5nIGFkanVzdGVkQ29udGVudFRvUmVuZGVyLCBib29sIGhhc0h5cGhlbikKICAgICA6IG1f
c3RhcnQoc3RhcnQpCiAgICAgLCBtX2xlbmd0aChsZW5ndGgpCiAgICAgLCBtX2hhc0h5cGhlbiho
YXNIeXBoZW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW50ZWdyYXRpb24v
TGF5b3V0SW50ZWdyYXRpb25SdW5JdGVyYXRvck1vZGVyblBhdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0
aC5oCmluZGV4IDNiZGQ3MDdmYzhiNWZhNmJkNjdjMjEwZjYwYWE2MzljZTkxZGQ5MWEuLjVjZGRh
M2JjZjA1Nzc5YWJjYjQyY2JlYjM5YjMxNThmZTM3N2ZmZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJbnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9k
ZXJuUGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbnRlZ3JhdGlvbi9MYXlvdXRJ
bnRlZ3JhdGlvblJ1bkl0ZXJhdG9yTW9kZXJuUGF0aC5oCkBAIC00OCw5ICs0OCw5IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgfQogCi0gICAgYm9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiAhIXJ1
bigpLnRleHRDb250ZW50KCk7IH0KKyAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsgcmV0dXJuICEh
cnVuKCkudGV4dCgpOyB9CiAKLSAgICBGbG9hdFJlY3QgcmVjdCgpIGNvbnN0IHsgcmV0dXJuIHJ1
bigpLnJlY3QoKTsgfQorICAgIEZsb2F0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gcnVuKCku
bG9naWNhbFJlY3QoKTsgfQogCiAgICAgYm9vbCBpc0hvcml6b250YWwoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAgICAgYm9vbCBkaXJPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CkBAIC02MSwxMSArNjEsMTEgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgY2hhciBiaWRpTGV2
ZWwoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICBib29sIGhhc0h5cGhlbigpIGNvbnN0IHsg
cmV0dXJuIHJ1bigpLnRleHRDb250ZW50KCktPmhhc0h5cGhlbigpOyB9Ci0gICAgU3RyaW5nVmll
dyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dENvbnRlbnQoKS0+b3JpZ2luYWxDb250
ZW50KCk7IH0KLSAgICB1bnNpZ25lZCBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIHJ1bigpLnRleHRD
b250ZW50KCktPnN0YXJ0KCk7IH0KLSAgICB1bnNpZ25lZCBlbmQoKSBjb25zdCB7IHJldHVybiBy
dW4oKS50ZXh0Q29udGVudCgpLT5lbmQoKTsgfQotICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
IHsgcmV0dXJuIHJ1bigpLnRleHRDb250ZW50KCktPmxlbmd0aCgpOyB9CisgICAgYm9vbCBoYXNI
eXBoZW4oKSBjb25zdCB7IHJldHVybiBydW4oKS50ZXh0KCktPmhhc0h5cGhlbigpOyB9CisgICAg
U3RyaW5nVmlldyB0ZXh0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4dCgpLT5vcmlnaW5hbENv
bnRlbnQoKTsgfQorICAgIHVuc2lnbmVkIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gcnVuKCkudGV4
dCgpLT5zdGFydCgpOyB9CisgICAgdW5zaWduZWQgZW5kKCkgY29uc3QgeyByZXR1cm4gcnVuKCku
dGV4dCgpLT5lbmQoKTsgfQorICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIHJ1
bigpLnRleHQoKS0+bGVuZ3RoKCk7IH0KIAogICAgIC8vIEZJWE1FOiBNYWtlIGEgc2hhcmVkIGdl
bmVyaWMgdmVyc2lvbiBvZiB0aGlzLgogICAgIGlubGluZSB1bnNpZ25lZCBvZmZzZXRGb3JQb3Np
dGlvbihmbG9hdCB4KSBjb25zdApAQCAtMTM3LDcgKzEzNyw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRyYXZlcnNlTmV4dFRleHRSdW4oKQogICAgIHsKICAgICAgICAgQVNTRVJUKCFhdEVuZCgpKTsK
LSAgICAgICAgQVNTRVJUKHJ1bigpLnRleHRDb250ZW50KCkpOworICAgICAgICBBU1NFUlQocnVu
KCkudGV4dCgpKTsKIAogICAgICAgICBhdXRvJiBsYXlvdXRCb3ggPSBydW4oKS5sYXlvdXRCb3go
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
VHJlZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0
VHJlZUJ1aWxkZXIuY3BwCmluZGV4IDJhODAyZDNkMjk1NWI1N2VjNGE3NTZiZGNjZTBiYTUyNWUx
YWM0MDcuLjY5ZjA5NWVhNjhiNWI3NmJhMmQwNGRlOGU5YzFiZDc5ZDJiOWYzNjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRl
ci5jcHAKQEAgLTM4Nyw3ICszODcsNyBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0
U3RyZWFtJiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogewogICAg
IGF1dG8mIGlubGluZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5s
aW5lRm9ybWF0dGluZ1N0YXRlKGlubGluZUZvcm1hdHRpbmdSb290KTsKICAgICBhdXRvJiBsaW5l
cyA9IGlubGluZUZvcm1hdHRpbmdTdGF0ZS5saW5lcygpOwotICAgIGF1dG8mIGxpbmVSdW5zID0g
aW5saW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVSdW5zKCk7CisgICAgYXV0byYgcnVucyA9IGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZS5ydW5zKCk7CiAKICAgICBmb3IgKHNpemVfdCBsaW5lSW5kZXggPSAw
OyBsaW5lSW5kZXggPCBsaW5lcy5zaXplKCk7ICsrbGluZUluZGV4KSB7CiAgICAgICAgIGF1dG8g
YWRkU3BhY2luZyA9IFsmXSB7CkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBzaG93SW5saW5lVHJl
ZUFuZFJ1bnMoVGV4dFN0cmVhbSYgc3RyZWFtLCBjb25zdCBMYXlvdXRTdGF0ZSYgbGF5b3V0U3Rh
dGUsIGMKICAgICAgICAgICAgICAgICA8PCAiIHNpemUgKCIgPDwgbG9naWNhbFJlY3Qud2lkdGgo
KSA8PCAieCIgPDwgbG9naWNhbFJlY3QuaGVpZ2h0KCkgPDwgIikiOwogICAgICAgICAgICAgc3Ry
ZWFtLm5leHRMaW5lKCk7CiAgICAgICAgIH07Ci0gICAgICAgIGZvciAoYXV0byYgcnVuIDogbGlu
ZVJ1bnMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBydW4gOiBydW5zKSB7CiAgICAgICAgICAgICBp
ZiAocnVuLmxpbmVJbmRleCgpICE9IGxpbmVJbmRleCkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgIGlmICghcnVuLmxheW91dEJveCgpLmlzSW5saW5lTGV2ZWxCb3goKSkK
QEAgLTQzNyw3ICs0MzcsNyBAQCB2b2lkIHNob3dJbmxpbmVUcmVlQW5kUnVucyhUZXh0U3RyZWFt
JiBzdHJlYW0sIGNvbnN0IExheW91dFN0YXRlJiBsYXlvdXRTdGF0ZSwgYwogICAgICAgICBhZGRT
cGFjaW5nKCk7CiAgICAgICAgIHN0cmVhbSA8PCAiICBSdW5zOiI7CiAgICAgICAgIHN0cmVhbS5u
ZXh0TGluZSgpOwotICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IGxpbmVSdW5zKSB7CisgICAgICAg
IGZvciAoYXV0byYgcnVuIDogcnVucykgewogICAgICAgICAgICAgaWYgKHJ1bi5saW5lSW5kZXgo
KSAhPSBsaW5lSW5kZXgpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBh
ZGRTcGFjaW5nKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>