<?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>215048</bug_id>
          
          <creation_ts>2020-07-31 18:27:44 -0700</creation_ts>
          <short_desc>[LFC][IFC] Move LineBox out of LineBuilder</short_desc>
          <delta_ts>2020-08-27 06:42:54 -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>
          
          <blocked>215087</blocked>
    
    <blocked>215752</blocked>
          <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>1677067</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-07-31 18:27:44 -0700</bug_when>
    <thetext>LineBuilder just builds the line, no need for LineBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1677068</commentid>
    <comment_count>1</comment_count>
      <attachid>405765</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-07-31 18:29:20 -0700</bug_when>
    <thetext>Created attachment 405765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678856</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-07 18:28:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/66709575&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683342</commentid>
    <comment_count>3</comment_count>
      <attachid>407390</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-27 04:51:40 -0700</bug_when>
    <thetext>Created attachment 407390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683348</commentid>
    <comment_count>4</comment_count>
      <attachid>407392</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-08-27 05:54:26 -0700</bug_when>
    <thetext>Created attachment 407392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683353</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-27 06:42:54 -0700</bug_when>
    <thetext>Committed r266231: &lt;https://trac.webkit.org/changeset/266231&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407392.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>405765</attachid>
            <date>2020-07-31 18:29:20 -0700</date>
            <delta_ts>2020-08-27 04:51:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215048-20200731182920.patch</filename>
            <type>text/plain</type>
            <size>28078</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QyZjA1OTk1YTA5MTRj
YWMyMDRlNjRhZmYzYzhjYTExYmJjYzQ5MC4uODFjNGE3OGU5MGFkNmEwMGY0ZTRmOWJiMzFiZjlm
MTFiNTk3YmQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIwLTA3LTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExp
bmVCb3ggb3V0IG9mIExpbmVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGluIGlzIHByZXBhcmF0aW9uIGZvciBkZWNvdXBsaW5nIExp
bmVCdWlsZGVyIGFuZCBMaW5lQm94LgorCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRp
bmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQ29udGVudEFsaWduZXI6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVkSW50cmluc2ljV2lkdGhGb3JDb25zdHJhaW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0cmFpbnRzRm9yTGluZSk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrczo6aW5pdGlhbExpbmVIZWln
aHQgY29uc3QpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
b3guaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6aGFsZkxlYWRpbmdNZXRy
aWNzKToKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpvcGVuKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNsZWFyQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjbG9zZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpyZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6dmlzdWFsbHlDb2xsYXBz
ZVByZVdyYXBPdmVyZmxvd0NvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5l
QnVpbGRlcjo6bW92ZUxvZ2ljYWxMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OmFwcGVuZFdpdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6YXBwZW5kTm9uQnJlYWthYmxlU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQnVpbGRlcjo6YXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFwcGVuZFRleHRDb250ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmlzUnVuVmlzdWFsbHlOb25F
bXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppbml0
aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6
OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6
OmlzVmlzdWFsbHlOb25FbXB0eSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MpOiBEZWxldGVkLgorICAgICAg
ICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpzZXRIYXNJbnRydXNpdmVGbG9hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpoYXNJbnRydXNpdmVGbG9hdCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjppc1Zpc3VhbGx5
RW1wdHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y29u
dGVudExvZ2ljYWxXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVC
dWlsZGVyOjpjb250ZW50TG9naWNhbFJpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUJ1aWxkZXI6OmxpbmVCb3ggY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGluZUJveCk6IERlbGV0ZWQuCisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0SW5saW5lQ29udGVudCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0Ojpjb21taXRGbG9h
dHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lTGF5b3V0Q29udGV4dDo6cmVidWls
ZExpbmUpOgorCiAyMDIwLTA3LTMxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW0xGQ11bSUZDXSBMaW5lQnVpbGRlciBzaG91bGQgbm90IGFsaWduIHRoZSBydW5z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9Jbmxp
bmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggOGJkNGVmYTg5MWIxOTMz
NTVkYWMxMjhkN2NmYzU3Nzc1YzI2MjdmMS4uODRlNjU0YzBiYTM1MDc4YzE1Zjc4NTg5M2YzMDZh
NzNmYzk4NTdhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMjk0
LDcgKzI5NCw3IEBAIHZvaWQgTGluZUNvbnRlbnRBbGlnbmVyOjphZGp1c3RCYXNlbGluZUFuZExp
bmVIZWlnaHQoKQogICAgICAgICAgICAgaGFzU2VlbkRpcmVjdFRleHRPckxpbmVCcmVhayA9IHRy
dWU7CiAgICAgICAgICAgICAvLyBXZSBhcmUgaW4gcXVpcmtzIG1vZGUgd2hlcmUgdGhlIGZvbnQt
bWV0cmljcyBtaWdodCBjaGFuZ2UgdGhlIGxpbmUgbGluZSBoZWlnaHQvYmFzZWxpbmUgYW5kIHRo
aXMgaXMgdGhlIGZpcnN0IHRleHQgY29udGVudCBvbiB0aGUgbGluZQogICAgICAgICAgICAgLy8g
b3V0c2lkZSBvZiBhbiBpbmxpbmUgY29udGFpbmVyLgotICAgICAgICAgICAgYXV0byBoYWxmTGVh
ZGluZyA9IExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3Moc3R5bGUuZm9udE1ldHJpY3Mo
KSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgYXV0byBoYWxmTGVh
ZGluZyA9IExpbmVCb3g6OmhhbGZMZWFkaW5nTWV0cmljcyhzdHlsZS5mb250TWV0cmljcygpLCBz
dHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CiAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNj
ZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmFzY2VudCk7CiAgICAgICAgICAgICBtX2xpbmVCb3gu
c2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5kZXNjZW50KTsKICAgICAgICAgICAgIG1f
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmhlaWdodCgpKTsK
QEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIExpbmVDb250ZW50QWxpZ25lcjo6YWRqdXN0QmFzZWxp
bmVBbmRMaW5lSGVpZ2h0KCkKICAgICAgICAgICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMsIHBhZGRp
bmdzIGFuZCBib3JkZXJzIGRvbid0IGNvbnRyaWJ1dGUgdG8gdGhlIGxpbmUgaGVpZ2h0LgogICAg
ICAgICAgICAgYXV0byYgZm9udE1ldHJpY3MgPSBzdHlsZS5mb250TWV0cmljcygpOwogICAgICAg
ICAgICAgaWYgKHN0eWxlLnZlcnRpY2FsQWxpZ24oKSA9PSBWZXJ0aWNhbEFsaWduOjpCYXNlbGlu
ZSkgewotICAgICAgICAgICAgICAgIGF1dG8gaGFsZkxlYWRpbmcgPSBMaW5lQnVpbGRlcjo6aGFs
ZkxlYWRpbmdNZXRyaWNzKGZvbnRNZXRyaWNzLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7
CisgICAgICAgICAgICAgICAgYXV0byBoYWxmTGVhZGluZyA9IExpbmVCb3g6OmhhbGZMZWFkaW5n
TWV0cmljcyhmb250TWV0cmljcywgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOwogICAgICAg
ICAgICAgICAgIC8vIEJvdGggaGFsZmxlYWRpbmcgYXNjZW50IGFuZCBkZXNjZW50IGNvdWxkIGJl
IG5lZ2F0aXZlICh0YWxsIGZvbnQgdnMuIHNtYWxsIGxpbmUtaGVpZ2h0IHZhbHVlKQogICAgICAg
ICAgICAgICAgIGlmIChoYWxmTGVhZGluZy5kZXNjZW50ID4gMCkKICAgICAgICAgICAgICAgICAg
ICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVzY2VudCk7CkBA
IC00NzgsMTMgKzQ3OCwxNiBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5
b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUxheW91dENvbgogICAgIGF1dG8gbGlu
ZUxheW91dENvbnRleHQgPSBMaW5lTGF5b3V0Q29udGV4dCB7ICp0aGlzLCByb290KCksIGlubGlu
ZUl0ZW1zIH07CiAKICAgICB3aGlsZSAoIW5lZWRzTGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIGxpbmUuaW5pdGlhbGl6ZShjb25zdHJhaW50c0ZvckxpbmUoY29uc3RyYWludHMuaG9y
aXpvbnRhbCwgbGluZUxvZ2ljYWxUb3ApKTsKKyAgICAgICAgYXV0byBsaW5lQ29uc3RyYWludHMg
PSBjb25zdHJhaW50c0ZvckxpbmUoY29uc3RyYWludHMuaG9yaXpvbnRhbCwgbGluZUxvZ2ljYWxU
b3ApOworICAgICAgICBsaW5lLm9wZW4obGluZUNvbnN0cmFpbnRzLmF2YWlsYWJsZUxvZ2ljYWxX
aWR0aCk7CisgICAgICAgIGxpbmUuc2V0SGFzSW50cnVzaXZlRmxvYXQobGluZUNvbnN0cmFpbnRz
LmxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdCk7CiAgICAgICAgIC8vIFR1cm4gcHJldmlvdXMgbGlu
ZSdzIG92ZXJmbG93IGNvbnRlbnQgbGVuZ3RoIGludG8gdGhlIG5leHQgbGluZSdzIGxlYWRpbmcg
Y29udGVudCBwYXJ0aWFsIGxlbmd0aC4KICAgICAgICAgLy8gInNwWzwtbGluZSBicmVhay0+XWxp
dF9jb250ZW50IiAtPiBvdmVyZmxvdyBsZW5ndGg6IDExIC0+IGxlYWRpbmcgcGFydGlhbCBjb250
ZW50IGxlbmd0aDogMTEuCiAgICAgICAgIGF1dG8gcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3Ro
ID0gcHJldmlvdXNMaW5lID8gcHJldmlvdXNMaW5lLT5vdmVyZmxvd0NvbnRlbnRMZW5ndGggOiBX
VEY6Om51bGxvcHQ7CiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnQgPSBsaW5lTGF5b3V0Q29udGV4
dC5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmUsIG5lZWRzTGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFk
aW5nQ29udGVudExlbmd0aCk7Ci0gICAgICAgIGF1dG8mIGxpbmVCb3ggPSBsaW5lLmxpbmVCb3go
KTsKKwogICAgICAgICBhdXRvIGxpbmVDb250ZW50UmFuZ2UgPSBsaW5lQ29udGVudC5pbmxpbmVJ
dGVtUmFuZ2U7CisgICAgICAgIGF1dG8gbGluZUJveCA9IExpbmVCb3ggeyBEaXNwbGF5OjpJbmxp
bmVSZWN0IHsgbGluZUNvbnN0cmFpbnRzLmxvZ2ljYWxUb3BMZWZ0LCAwX2x1LCBsaW5lQ29uc3Ry
YWludHMubGluZUhlaWdodCB9LCBMaW5lQm94OjpoYWxmTGVhZGluZ01ldHJpY3Mocm9vdCgpLnN0
eWxlKCkuZm9udE1ldHJpY3MoKSwgbGluZUNvbnN0cmFpbnRzLmxpbmVIZWlnaHQpIH07CiAKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGV2ZW50dWFsbHkgZ2V0
IG1lcmdlZCB0byBMaW5lQm94LgogICAgICAgICBhdXRvIGFsaWduTGluZUNvbnRlbnQgPSBbJl0g
ewpAQCAtNTI1LDExICs1MjgsMTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGlu
ZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVMYXlvdXRDb24KICAgICAgICAg
fTsKIAogICAgICAgICBhbGlnbkxpbmVDb250ZW50KCk7Ci0gICAgICAgIHNldERpc3BsYXlCb3hl
c0ZvckxpbmUobGluZSwgbGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAg
ICAgICBzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGxpbmUsIGxpbmVCb3gsIGxpbmVDb250ZW50LCBj
b25zdHJhaW50cy5ob3Jpem9udGFsKTsKIAogICAgICAgICBpZiAoIWxpbmVDb250ZW50UmFuZ2Uu
aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBBU1NFUlQobmVlZHNMYXlvdXRSYW5nZS5zdGFydCA8
IGxpbmVDb250ZW50UmFuZ2UuZW5kKTsKLSAgICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGlu
ZS5saW5lQm94KCkubG9naWNhbEJvdHRvbSgpOworICAgICAgICAgICAgbGluZUxvZ2ljYWxUb3Ag
PSBsaW5lQm94LmxvZ2ljYWxCb3R0b20oKTsKICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHRyYWls
aW5nIGNvbnRlbnQgaXMgcGFydGlhbCwgd2UgbmVlZCB0byByZXVzZSB0aGUgbGFzdCBJbmxpbmVU
ZXh0SXRlbS4KICAgICAgICAgICAgIGF1dG8gbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlv
dXQgPSBsaW5lQ29udGVudC5wYXJ0aWFsQ29udGVudC5oYXNWYWx1ZSgpOwogICAgICAgICAgICAg
aWYgKGxhc3RJbmxpbmVJdGVtTmVlZHNQYXJ0aWFsTGF5b3V0KSB7CkBAIC01NTMsNyArNTU2LDcg
QEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYg
aW5saW5lSXRlbXMsIExpbmVMYXlvdXRDb24KICAgICAgICAgQVNTRVJUKGxpbmUuaGFzSW50cnVz
aXZlRmxvYXQoKSk7CiAgICAgICAgIC8vIE1vdmUgdGhlIG5leHQgbGluZSBiZWxvdyB0aGUgaW50
cnVzaXZlIGZsb2F0LgogICAgICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29u
dGV4dCB7IHJvb3QoKSwgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9
OwotICAgICAgICBhdXRvIGZsb2F0Q29uc3RyYWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3Ry
YWludHMobGluZUxvZ2ljYWxUb3AsIHRvTGF5b3V0VW5pdChsaW5lLmxpbmVCb3goKS5sb2dpY2Fs
Qm90dG9tKCkpKTsKKyAgICAgICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRpbmdDb250
ZXh0LmNvbnN0cmFpbnRzKGxpbmVMb2dpY2FsVG9wLCB0b0xheW91dFVuaXQobGluZUJveC5sb2dp
Y2FsQm90dG9tKCkpKTsKICAgICAgICAgQVNTRVJUKGZsb2F0Q29uc3RyYWludHMubGVmdCB8fCBm
bG9hdENvbnN0cmFpbnRzLnJpZ2h0KTsKICAgICAgICAgc3RhdGljIGF1dG8gaW5pZml0ZVBvaW50
ID0gUG9pbnRJbkNvbnRleHRSb290OjptYXgoKTsKICAgICAgICAgLy8gSW4gY2FzZSBvZiBsZWZ0
IGFuZCByaWdodCBjb25zdHJhaW50cywgd2UgbmVlZCB0byBwaWNrIHRoZSBvbmUgdGhhdCdzIGNs
b3NlciB0byB0aGUgY3VycmVudCBsaW5lLgpAQCAtNjI5LDExICs2MzIsMTEgQEAgSW5saW5lTGF5
b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZv
ckNvbnN0cmFpbnQoSW4KICAgICBhdXRvIGxheW91dFJhbmdlID0gTGluZUxheW91dENvbnRleHQ6
OklubGluZUl0ZW1SYW5nZSB7IDAgLCBpbmxpbmVJdGVtcy5zaXplKCkgfTsKICAgICB3aGlsZSAo
IWxheW91dFJhbmdlLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBPbmx5IHRoZSBob3JpenRvbmFs
IGF2YWlsYWJsZSB3aWR0aCBpcyBjb25zdHJhaW5lZCB3aGVuIGNvbXB1dGluZyBpbnRyaW5zaWMg
d2lkdGguCi0gICAgICAgIGxpbmUuaW5pdGlhbGl6ZShMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMg
eyB7IH0sIGF2YWlsYWJsZVdpZHRoLCB7IH0sIGZhbHNlIH0pOworICAgICAgICBsaW5lLm9wZW4o
YXZhaWxhYmxlV2lkdGgpOwogICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUxheW91dENv
bnRleHQubGF5b3V0SW5saW5lQ29udGVudChsaW5lLCBsYXlvdXRSYW5nZSwgeyB9KTsKICAgICAg
ICAgbGF5b3V0UmFuZ2Uuc3RhcnQgPSBsaW5lQ29udGVudC5pbmxpbmVJdGVtUmFuZ2UuZW5kOwog
ICAgICAgICAvLyBGSVhNRTogVXNlIGxpbmUgbG9naWNhbCBsZWZ0IGFuZCByaWdodCB0byB0YWtl
IGZsb2F0cyBpbnRvIGFjY291bnQuCi0gICAgICAgIG1heGltdW1MaW5lV2lkdGggPSBzdGQ6Om1h
eChtYXhpbXVtTGluZVdpZHRoLCBsaW5lLmxpbmVCb3goKS5sb2dpY2FsV2lkdGgoKSk7CisgICAg
ICAgIG1heGltdW1MaW5lV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBsaW5lLmNv
bnRlbnRMb2dpY2FsV2lkdGgoKSk7CiAgICAgfQogICAgIHJldHVybiBtYXhpbXVtTGluZVdpZHRo
OwogfQpAQCAtNzY3LDcgKzc3MCw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bGxlY3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKQogICAgIH0KIH0KIAotTGluZUJ1aWxkZXI6OkNv
bnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApCitJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUNv
bnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29u
c3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApCiB7CiAgICAgYXV0byBsaW5lTG9naWNhbExlZnQgPSBo
b3Jpem9udGFsQ29uc3RyYWludHMubG9naWNhbExlZnQ7CiAgICAgYXV0byBsaW5lTG9naWNhbFJp
Z2h0ID0gbGluZUxvZ2ljYWxMZWZ0ICsgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0
aDsKQEAgLTgzNCwxMyArODM3LDEyIEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyBJbmxpbmVG
b3JtYXR0aW5nQ29udGV4dDo6Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6CiAgICAgICAg
IHJldHVybiBnZW9tZXRyeSgpLmNvbXB1dGVkVGV4dEluZGVudChyb290LCBob3Jpem9udGFsQ29u
c3RyYWludHMpLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCB7IH0pOwogICAgIH07CiAgICAgbGlu
ZUxvZ2ljYWxMZWZ0ICs9IGNvbXB1dGVkVGV4dEluZGVudCgpOwotICAgIHJldHVybiBMaW5lQnVp
bGRlcjo6Q29uc3RyYWludHMgeyB7IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwg
bGluZUxvZ2ljYWxSaWdodCAtIGxpbmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxp
bmVJc0NvbnN0cmFpbmVkQnlGbG9hdCB9OworICAgIHJldHVybiBMaW5lQ29uc3RyYWludHMgeyB7
IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwgbGluZUxvZ2ljYWxSaWdodCAtIGxp
bmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9h
dCB9OwogfQogCi12b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNG
b3JMaW5lKGNvbnN0IExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6
TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhv
cml6b250YWxDb25zdHJhaW50cykKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERp
c3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExpbmVCb3gm
IGxpbmVCb3gsICBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmIGxpbmVDb250
ZW50LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykK
IHsKICAgICBhdXRvJiBmb3JtYXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsK
LSAgICBhdXRvJiBsaW5lQm94ID0gbGluZS5saW5lQm94KCk7CiAKICAgICBpZiAoIWxpbmVDb250
ZW50LmZsb2F0cy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBG
bG9hdGluZ0NvbnRleHQgeyByb290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdT
dGF0ZSgpIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBkYjNiYTcxOGM0
NjMzNTM4YjNhZTExYTNiODcxMTcwYWI2OTAyNTdjLi4xYjZkYjI4NWNlZTQ4NzQ0MGY2NTAxNTk4
MmJhNDI5MTFkNzc5MmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg2
LDggKzg2LDE0IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29u
c3QgQm94JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAKICAgICB2b2lkIGNvbGxl
Y3RJbmxpbmVDb250ZW50SWZOZWVkZWQoKTsKLSAgICBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMg
Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIElubGluZUxh
eW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApOwotICAgIHZvaWQgc2V0RGlzcGxheUJveGVzRm9yTGlu
ZShjb25zdCBMaW5lQnVpbGRlciYsIGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVu
dCYsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYpOworICAgIHN0cnVjdCBMaW5lQ29uc3Ry
YWludHMgeworICAgICAgICBJbmxpbmVMYXlvdXRQb2ludCBsb2dpY2FsVG9wTGVmdDsKKyAgICAg
ICAgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggeyAwIH07CisgICAgICAg
IElubGluZUxheW91dFVuaXQgbGluZUhlaWdodCB7IDAgfTsKKyAgICAgICAgYm9vbCBsaW5lSXND
b25zdHJhaW5lZEJ5RmxvYXQgeyBmYWxzZSB9OworICAgIH07CisgICAgTGluZUNvbnN0cmFpbnRz
IGNvbnN0cmFpbnRzRm9yTGluZShjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBJbmxpbmVM
YXlvdXRVbml0IGxpbmVMb2dpY2FsVG9wKTsKKyAgICB2b2lkIHNldERpc3BsYXlCb3hlc0Zvckxp
bmUoY29uc3QgTGluZUJ1aWxkZXImLCBjb25zdCBMaW5lQm94JiwgY29uc3QgTGluZUxheW91dENv
bnRleHQ6OkxpbmVDb250ZW50JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAgICAg
dm9pZCBpbnZhbGlkYXRlRm9ybWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRhdGlvblN0YXRlJik7
CiAKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0Nv
bnRleHQ6OmZvcm1hdHRpbmdTdGF0ZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHRRdWlya3MuY3BwCmluZGV4IDVlZTJhMmM0NDRiNmIwNzIwYWM1NDQ0YjQzYjk3NzIx
NmQ3ZTc0OTEuLmQ4NGE4YmVkOGNiZGIyMmZiN2JlY2RlMDhiMjcxYTgwZDQ1NmU0ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0UXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjpp
bml0aWFsTGluZUhlaWdodChjb25zdCBDb250YWkKICAgICBpZiAobGF5b3V0U3RhdGUoKS5pbk5v
UXVpcmtzTW9kZSgpIHx8ICFmb3JtYXR0aW5nUm9vdC5zdHlsZSgpLmxpbmVIZWlnaHQoKS5pc05l
Z2F0aXZlKCkpCiAgICAgICAgIHJldHVybiBjb21wdXRlZExpbmVIZWlnaHQ7CiAKLSAgICByZXR1
cm4gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5nTWV0cmljcyhmb3JtYXR0aW5nUm9vdC5zdHlsZSgp
LmZvbnRNZXRyaWNzKCksIDBfbHUpLmhlaWdodCgpOworICAgIHJldHVybiBMaW5lQm94OjpoYWxm
TGVhZGluZ01ldHJpY3MoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCAwX2x1
KS5oZWlnaHQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCmluZGV4IDYzZTFkZTIwYmZjYzIyMDE4NjAw
MjU4MDUwYjYxNWM0ZjE2ODMwMGUuLmZlYzQ5ZjJjMmEwNjFjOWQ5NTc5ZDBjMGQ1ZmQxNjE3OTlh
NTIxZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmgKQEAgLTExMyw2ICsxMTMsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0NvbnNpZGVyZWRFbXB0eSA9IHRydWU7IH0K
ICAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5
ID0gZmFsc2U7IH0KIAorICAgIHN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGhhbGZMZWFkaW5nTWV0
cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWln
aHQpOworCiBwcml2YXRlOgogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBtX2hhc1ZhbGlk
QWxpZ25tZW50QmFzZWxpbmUgeyBmYWxzZSB9OwpAQCAtMTg1LDYgKzE4NywxOCBAQCBpbmxpbmUg
dm9pZCBMaW5lQm94OjpyZXNldEFsaWdubWVudEJhc2VsaW5lKCkKICAgICBtX3Jvb3RJbmxpbmVC
b3guYXNjZW50QW5kRGVzY2VudC5hc2NlbnQgPSB7IH07CiB9CiAKK2lubGluZSBBc2NlbnRBbmRE
ZXNjZW50IExpbmVCb3g6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9u
dE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCit7CisgICAgYXV0
byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKKyAgICBhdXRvIGRlc2NlbnQgPSBmb250
TWV0cmljcy5kZXNjZW50KCk7CisgICAgLy8gMTAuOC4xIExlYWRpbmcgYW5kIGhhbGYtbGVhZGlu
ZworICAgIGF1dG8gaGFsZkxlYWRpbmcgPSAobGluZUxvZ2ljYWxIZWlnaHQgLSAoYXNjZW50ICsg
ZGVzY2VudCkpIC8gMjsKKyAgICAvLyBJbmxpbmUgdHJlZSBoZWlnaHQgaXMgYWxsIGludGVnZXIg
YmFzZWQuCisgICAgYXV0byBhZGp1c3RlZEFzY2VudCA9IHN0ZDo6bWF4PElubGluZUxheW91dFVu
aXQ+KGZsb29yZihhc2NlbnQgKyBoYWxmTGVhZGluZyksIDApOworICAgIGF1dG8gYWRqdXN0ZWRE
ZXNjZW50ID0gc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oY2VpbGYoZGVzY2VudCArIGhhbGZM
ZWFkaW5nKSwgMCk7CisgICAgcmV0dXJuIHsgYWRqdXN0ZWRBc2NlbnQsIGFkanVzdGVkRGVzY2Vu
dCB9OworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAppbmRleCBiNmZmZmJkMDc1
MmUwZjJkYThlMzgxYmJhZDUwNDFmM2FmYmNhODdkLi42ODc4YmU5OTBjZTJhMWQyNzBiYmNkZWE3
MmQyZTBjMDNjZDAzYjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCkBAIC01NCwyMyArNTQs
MTkgQEAgTGluZUJ1aWxkZXI6On5MaW5lQnVpbGRlcigpCiB7CiB9CiAKLXZvaWQgTGluZUJ1aWxk
ZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQotewotICAgIG1f
bGluZUxvZ2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmF2YWlsYWJsZUxvZ2ljYWxXaWR0aDsKLSAg
ICBtX2hhc0ludHJ1c2l2ZUZsb2F0ID0gY29uc3RyYWludHMubGluZUlzQ29uc3RyYWluZWRCeUZs
b2F0OwotICAgIGF1dG8gaW5pdGlhbExpbmVIZWlnaHQgPSBjb25zdHJhaW50cy5saW5lSGVpZ2h0
OwotICAgIGF1dG8gbGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVSZWN0IHsgY29uc3RyYWludHMu
bG9naWNhbFRvcExlZnQsIDBfbHUsIGluaXRpYWxMaW5lSGVpZ2h0IH07Ci0gICAgbV9saW5lQm94
ID0gTGluZUJveCB7IGxpbmVSZWN0LCBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZv
cm1hdHRpbmdDb250ZXh0KCkucm9vdCgpLnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlhbExp
bmVIZWlnaHQpIH07Ci0gICAgY2xlYXIoKTsKK3ZvaWQgTGluZUJ1aWxkZXI6Om9wZW4oSW5saW5l
TGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCkKK3sKKyAgICBtX2xpbmVMb2dpY2FsV2lkdGggPSBh
dmFpbGFibGVXaWR0aDsKKyAgICBjbGVhckNvbnRlbnQoKTsKICNpZiBBU1NFUlRfRU5BQkxFRAog
ICAgIG1faXNDbG9zZWQgPSBmYWxzZTsKICNlbmRpZgogfQogCi12b2lkIExpbmVCdWlsZGVyOjpj
bGVhcigpCit2b2lkIExpbmVCdWlsZGVyOjpjbGVhckNvbnRlbnQoKQogewotICAgIG1fbGluZUJv
eC5zZXRMb2dpY2FsV2lkdGgoeyB9KTsKLSAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkRW1w
dHkoKTsKKyAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggPSB7IH07CisgICAgbV9pc1Zpc3VhbGx5
RW1wdHkgPSB0cnVlOwogICAgIG1fcnVucy5jbGVhcigpOwogICAgIG1fdHJpbW1hYmxlVHJhaWxp
bmdDb250ZW50LnJlc2V0KCk7CiAgICAgbV9saW5lSXNWaXN1YWxseUVtcHR5QmVmb3JlVHJpbW1h
YmxlVHJhaWxpbmdDb250ZW50ID0geyB9OwpAQCAtODEsOCArNzcsNiBAQCB2b2lkIExpbmVCdWls
ZGVyOjpjbG9zZSgpCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzQ2xvc2VkID0gdHJ1ZTsK
ICNlbmRpZgotICAgIC8vIDEuIFJlbW92ZSB0cmltbWFibGUgdHJhaWxpbmcgY29udGVudC4KLSAg
ICAvLyAyLiBBbGlnbiBtZXJnZWQgcnVucyBib3RoIHZlcnRpY2FsbHkgYW5kIGhvcml6b250YWxs
eS4KICAgICByZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoKTsKICAgICB2aXN1YWxseUNv
bGxhcHNlUHJlV3JhcE92ZXJmbG93Q29udGVudCgpOwogfQpAQCAtMTA3LDIxICsxMDEsMjAgQEAg
dm9pZCBMaW5lQnVpbGRlcjo6cmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCkKICAgICAg
ICAgfQogICAgIH0KIAotICAgIG1fbGluZUJveC5zaHJpbmtIb3Jpem9udGFsbHkobV90cmltbWFi
bGVUcmFpbGluZ0NvbnRlbnQucmVtb3ZlKCkpOworICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCAt
PSBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5yZW1vdmUoKTsKICAgICAvLyBJZiB3ZSByZW1v
dmVkIHRoZSBmaXJzdCB2aXNpYmxlIHJ1biBvbiB0aGUgbGluZSwgd2UgbmVlZCB0byByZS1jaGVj
ayB0aGUgdmlzaWJpbGl0eSBzdGF0dXMuCiAgICAgaWYgKG1fbGluZUlzVmlzdWFsbHlFbXB0eUJl
Zm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCkgewogICAgICAgICAvLyBKdXN0IGJlY2F1c2Ug
dGhlIGxpbmUgd2FzIHZpc3VhbGx5IGVtcHR5IGJlZm9yZSB0aGUgcmVtb3ZlZCBjb250ZW50LCBp
dCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGl0IGlzIHN0aWxsIHZpc3VhbGx5IGVtcHR5Lgog
ICAgICAgICAvLyA8c3Bhbj4gIDwvc3Bhbj48c3BhbiBzdHlsZT0icGFkZGluZy1sZWZ0OiAxMHB4
Ij48L3NwYW4+ICA8LSBub24tZW1wdHkKICAgICAgICAgYXV0byBsaW5lSXNWaXN1YWxseUVtcHR5
ID0gWyZdIHsKICAgICAgICAgICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5zKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGlzVmlzdWFsbHlOb25FbXB0eShydW4pKQorICAgICAgICAgICAgICAgIGlm
IChpc1J1blZpc3VhbGx5Tm9uRW1wdHkocnVuKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH07CiAgICAgICAgIC8vIFdlIGNvdWxkIG9ubHkgZ28gZnJvbSB2aXN1YWxseSBub24gZW1wdHkg
LT4gdG8gdmlzdWFsbHkgZW1wdHkuIFRyaW1tZWQgcnVucyBzaG91bGQgbmV2ZXIgbWFrZSB0aGUg
bGluZSB2aXNpYmxlLgotICAgICAgICBpZiAobGluZUlzVmlzdWFsbHlFbXB0eSgpKQotICAgICAg
ICAgICAgbV9saW5lQm94LnNldElzQ29uc2lkZXJlZEVtcHR5KCk7CisgICAgICAgIG1faXNWaXN1
YWxseUVtcHR5ID0gbGluZUlzVmlzdWFsbHlFbXB0eSgpOwogICAgICAgICBtX2xpbmVJc1Zpc3Vh
bGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgPSB7IH07CiAgICAgfQogfQpA
QCAtMTYyLDcgKzE1NSw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OnZpc3VhbGx5Q29sbGFwc2VQcmVX
cmFwT3ZlcmZsb3dDb250ZW50KCkKICAgICAgICAgaWYgKG92ZXJmbG93V2lkdGggPD0gMCkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBtX2xpbmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5
KHRyaW1tZWRDb250ZW50V2lkdGgpOworICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCAtPSB0cmlt
bWVkQ29udGVudFdpZHRoOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjptb3ZlTG9naWNhbExlZnQo
SW5saW5lTGF5b3V0VW5pdCBkZWx0YSkKQEAgLTE3MCw3ICsxNjMsNyBAQCB2b2lkIExpbmVCdWls
ZGVyOjptb3ZlTG9naWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCBkZWx0YSkKICAgICBpZiAoIWRl
bHRhKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGRlbHRhID4gMCk7Ci0gICAgbV9saW5l
Qm94Lm1vdmVIb3Jpem9udGFsbHkoZGVsdGEpOworICAgIG1fbGluZUxvZ2ljYWxMZWZ0ICs9IGRl
bHRhOwogICAgIG1fbGluZUxvZ2ljYWxXaWR0aCAtPSBkZWx0YTsKIH0KIApAQCAtMjA5LDE0ICsy
MDIsMTQgQEAgdm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kV2l0aChjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtLCBjb25zdCBJbmxpbmVSdW5EZXRhaWwKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAKICAgICAvLyBDaGVjayBpZiB0aGlzIGZyZXNobHkgYXBwZW5kZWQgY29udGVudCBt
YWtlcyB0aGUgbGluZSB2aXN1YWxseSBub24tZW1wdHkuCi0gICAgaWYgKG1fbGluZUJveC5pc0Nv
bnNpZGVyZWRFbXB0eSgpICYmICFtX3J1bnMuaXNFbXB0eSgpICYmIGlzVmlzdWFsbHlOb25FbXB0
eShtX3J1bnMubGFzdCgpKSkKLSAgICAgICAgbV9saW5lQm94LnNldElzQ29uc2lkZXJlZE5vbkVt
cHR5KCk7CisgICAgaWYgKG1faXNWaXN1YWxseUVtcHR5ICYmICFtX3J1bnMuaXNFbXB0eSgpICYm
IGlzUnVuVmlzdWFsbHlOb25FbXB0eShtX3J1bnMubGFzdCgpKSkKKyAgICAgICAgbV9pc1Zpc3Vh
bGx5RW1wdHkgPSBmYWxzZTsKIH0KIAogdm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kTm9uQnJlYWth
YmxlU3BhY2UoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5lTGF5b3V0VW5pdCBs
b2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCiB7CiAgICAgbV9ydW5z
LmFwcGVuZCh7IGlubGluZUl0ZW0sIGxvZ2ljYWxMZWZ0LCBsb2dpY2FsV2lkdGggfSk7Ci0gICAg
bV9saW5lQm94LmV4cGFuZEhvcml6b250YWxseShsb2dpY2FsV2lkdGgpOworICAgIG1fY29udGVu
dExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsV2lkdGg7CiB9CiAKIHZvaWQgTGluZUJ1aWxkZXI6OmFw
cGVuZElubGluZUNvbnRhaW5lclN0YXJ0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQpAQCAtMjMxLDcgKzIyNCw3IEBAIHZvaWQgTGlu
ZUJ1aWxkZXI6OmFwcGVuZElubGluZUNvbnRhaW5lckVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxp
bmVJdGVtLCBJbmxpbmVMCiAgICAgYXV0byByZW1vdmVUcmFpbGluZ0xldHRlclNwYWNpbmcgPSBb
Jl0gewogICAgICAgICBpZiAoIW1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LmlzVHJhaWxpbmdS
dW5QYXJ0aWFsbHlUcmltbWFibGUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9s
aW5lQm94LnNocmlua0hvcml6b250YWxseShtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5yZW1v
dmVQYXJ0aWFsbHlUcmltbWFibGVDb250ZW50KCkpOworICAgICAgICBtX2NvbnRlbnRMb2dpY2Fs
V2lkdGggLT0gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVtb3ZlUGFydGlhbGx5VHJpbW1h
YmxlQ29udGVudCgpOwogICAgIH07CiAgICAgLy8gUHJldmVudCB0cmFpbGluZyBsZXR0ZXItc3Bh
Y2luZyBmcm9tIHNwaWxsaW5nIG91dCBvZiB0aGUgaW5saW5lIGNvbnRhaW5lci4KICAgICAvLyBo
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRleHQtMy8jbGV0dGVyLXNwYWNpbmctcHJvcGVy
dHkgU2VlIGV4YW1wbGUgMjEuCkBAIC0yODAsOSArMjczLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6
YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGluZVRleHRJdGVtLCBJ
bmxpbmUKICAgICB9CiAgICAgaWYgKGlubGluZVRleHRJdGVtTmVlZHNOZXdSdW4pCiAgICAgICAg
IG1fcnVucy5hcHBlbmQoeyBpbmxpbmVUZXh0SXRlbSwgY29udGVudExvZ2ljYWxXaWR0aCgpLCBs
b2dpY2FsV2lkdGgsIG5lZWRzSHlwaGVuIH0pOwotCi0gICAgbV9saW5lQm94LmV4cGFuZEhvcml6
b250YWxseShsb2dpY2FsV2lkdGgpOwotCisgICAgbV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxv
Z2ljYWxXaWR0aDsKICAgICAvLyBTZXQgdGhlIHRyYWlsaW5nIHRyaW1tYWJsZSBjb250ZW50Lgog
ICAgIGlmIChpbmxpbmVUZXh0SXRlbS5pc1doaXRlc3BhY2UoKSAmJiAhVGV4dFV0aWw6OnNob3Vs
ZFByZXNlcnZlVHJhaWxpbmdXaGl0ZXNwYWNlKGlubGluZVRleHRJdGVtLnN0eWxlKCkpKSB7CiAg
ICAgICAgIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LmFkZEZ1bGx5VHJpbW1hYmxlQ29udGVu
dChtX3J1bnMuc2l6ZSgpIC0gMSwgbG9naWNhbFdpZHRoKTsKQEAgLTMwMyw3ICsyOTQsNyBAQCB2
b2lkIExpbmVCdWlsZGVyOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveChjb25zdCBJbmxpbmVJ
dGVtJiBpbmxpbmVJdGVtLCBJbmxpbgogICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGlu
Z0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOwogICAgIGF1dG8gaG9yaXpvbnRh
bE1hcmdpbiA9IGJveEdlb21ldHJ5Lmhvcml6b250YWxNYXJnaW4oKTsKICAgICBtX3J1bnMuYXBw
ZW5kKHsgaW5saW5lSXRlbSwgY29udGVudExvZ2ljYWxXaWR0aCgpICsgaG9yaXpvbnRhbE1hcmdp
bi5zdGFydCwgbG9naWNhbFdpZHRoIH0pOwotICAgIG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFs
bHkobG9naWNhbFdpZHRoICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJn
aW4uZW5kKTsKKyAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggKz0gbG9naWNhbFdpZHRoICsgaG9y
aXpvbnRhbE1hcmdpbi5zdGFydCArIGhvcml6b250YWxNYXJnaW4uZW5kOwogICAgIG1fdHJpbW1h
YmxlVHJhaWxpbmdDb250ZW50LnJlc2V0KCk7CiB9CiAKQEAgLTMyMyw3ICszMTQsNyBAQCB2b2lk
IExpbmVCdWlsZGVyOjphcHBlbmRMaW5lQnJlYWsoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSkKICAgICBtX3J1bnMuYXBwZW5kKHsgZG93bmNhc3Q8SW5saW5lU29mdExpbmVCcmVha0l0ZW0+
KGlubGluZUl0ZW0pLCBjb250ZW50TG9naWNhbFdpZHRoKCkgfSk7CiB9CiAKLWJvb2wgTGluZUJ1
aWxkZXI6OmlzVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29uc3QKK2Jvb2wgTGlu
ZUJ1aWxkZXI6OmlzUnVuVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29uc3QKIHsK
ICAgICBpZiAocnVuLmlzVGV4dCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM1MywxOCAr
MzQ0LDYgQEAgYm9vbCBMaW5lQnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5KGNvbnN0IFJ1biYg
cnVuKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQXNjZW50QW5kRGVzY2VudCBMaW5l
QnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmlj
cywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKLXsKLSAgICBhdXRvIGFzY2Vu
dCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOwotICAgIGF1dG8gZGVzY2VudCA9IGZvbnRNZXRyaWNz
LmRlc2NlbnQoKTsKLSAgICAvLyAxMC44LjEgTGVhZGluZyBhbmQgaGFsZi1sZWFkaW5nCi0gICAg
YXV0byBoYWxmTGVhZGluZyA9IChsaW5lTG9naWNhbEhlaWdodCAtIChhc2NlbnQgKyBkZXNjZW50
KSkgLyAyOwotICAgIC8vIElubGluZSB0cmVlIGhlaWdodCBpcyBhbGwgaW50ZWdlciBiYXNlZC4K
LSAgICBhdXRvIGFkanVzdGVkQXNjZW50ID0gc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oZmxv
b3JmKGFzY2VudCArIGhhbGZMZWFkaW5nKSwgMCk7Ci0gICAgYXV0byBhZGp1c3RlZERlc2NlbnQg
PSBzdGQ6Om1heDxJbmxpbmVMYXlvdXRVbml0PihjZWlsZihkZXNjZW50ICsgaGFsZkxlYWRpbmcp
LCAwKTsKLSAgICByZXR1cm4geyBhZGp1c3RlZEFzY2VudCwgYWRqdXN0ZWREZXNjZW50IH07Ci19
Ci0KIGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBMaW5lQnVpbGRlcjo6Zm9ybWF0dGlu
Z0NvbnRleHQoKSBjb25zdAogewogICAgIHJldHVybiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJ1aWxkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCdWlsZGVyLmgKaW5kZXggOGU0ZDk1NjBhMTE2N2QxNzBkNjg3ZDc1YzAxMTVk
MTliYmJhYTVkZS4uNzI2YTY1NzNjZGFkNTUyOTVjMDIxOGM1MjcwZjU5ZGRmMTEyODMxYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJ1aWxkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5oCkBAIC00MSwzNCArNDEsMjkgQEAgY2xhc3MgTGluZUNvbnRlbnRB
bGlnbmVyOwogCiBjbGFzcyBMaW5lQnVpbGRlciB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IENvbnN0
cmFpbnRzIHsKLSAgICAgICAgSW5saW5lTGF5b3V0UG9pbnQgbG9naWNhbFRvcExlZnQ7Ci0gICAg
ICAgIElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoIHsgMCB9OwotICAgICAg
ICBJbmxpbmVMYXlvdXRVbml0IGxpbmVIZWlnaHQgeyAwIH07Ci0gICAgICAgIGJvb2wgbGluZUlz
Q29uc3RyYWluZWRCeUZsb2F0IHsgZmFsc2UgfTsKLSAgICB9OwotCiAgICAgTGluZUJ1aWxkZXIo
Y29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmKTsKICAgICB+TGluZUJ1aWxkZXIoKTsKIAot
ICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBDb25zdHJhaW50cyYpOworICAgIHZvaWQgb3BlbihJ
bmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBjbG9zZSgp
OworICAgIHZvaWQgY2xlYXJDb250ZW50KCk7CisKKyAgICB2b2lkIHNldEhhc0ludHJ1c2l2ZUZs
b2F0KGJvb2wgaGFzSW50cnVzaXZlRmxvYXQpIHsgbV9oYXNJbnRydXNpdmVGbG9hdCA9IGhhc0lu
dHJ1c2l2ZUZsb2F0OyB9CisgICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzSW50cnVzaXZlRmxvYXQ7IH0KIAogICAgIHZvaWQgYXBwZW5kKGNvbnN0IElubGlu
ZUl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCk7CiAgICAgdm9pZCBhcHBlbmRQ
YXJ0aWFsVHJhaWxpbmdUZXh0SXRlbShjb25zdCBJbmxpbmVUZXh0SXRlbSYsIElubGluZUxheW91
dFVuaXQgbG9naWNhbFdpZHRoLCBib29sIG5lZWRzSHlwZW4pOwotICAgIHZvaWQgY2xlYXIoKTsK
LSAgICBib29sIGlzVmlzdWFsbHlFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5pc0Nv
bnNpZGVyZWRFbXB0eSgpOyB9Ci0gICAgYm9vbCBoYXNJbnRydXNpdmVGbG9hdCgpIGNvbnN0IHsg
cmV0dXJuIG1faGFzSW50cnVzaXZlRmxvYXQ7IH0KKworICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5
KCkgY29uc3QgeyByZXR1cm4gbV9pc1Zpc3VhbGx5RW1wdHk7IH0KKwogICAgIElubGluZUxheW91
dFVuaXQgYXZhaWxhYmxlV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2xpbmVMb2dpY2FsV2lkdGgg
LSBjb250ZW50TG9naWNhbFdpZHRoKCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRM
b2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMb2dpY2FsV2lkdGg7IH0KIAog
ICAgIElubGluZUxheW91dFVuaXQgdHJpbW1hYmxlVHJhaWxpbmdXaWR0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LndpZHRoKCk7IH0KICAgICBib29sIGlzVHJh
aWxpbmdSdW5GdWxseVRyaW1tYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJpbW1hYmxlVHJhaWxp
bmdDb250ZW50LmlzVHJhaWxpbmdSdW5GdWxseVRyaW1tYWJsZSgpOyB9CiAKLSAgICBjb25zdCBM
aW5lQm94JiBsaW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94OyB9Ci0gICAgTGluZUJv
eCYgbGluZUJveCgpIHsgcmV0dXJuIG1fbGluZUJveDsgfQogICAgIHZvaWQgbW92ZUxvZ2ljYWxM
ZWZ0KElubGluZUxheW91dFVuaXQpOwogICAgIHZvaWQgbW92ZUxvZ2ljYWxSaWdodChJbmxpbmVM
YXlvdXRVbml0KTsKLSAgICB2b2lkIHNldEhhc0ludHJ1c2l2ZUZsb2F0KCkgeyBtX2hhc0ludHJ1
c2l2ZUZsb2F0ID0gdHJ1ZTsgfQogCiAgICAgc3RydWN0IFJ1biB7CiAgICAgICAgIGJvb2wgaXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IElubGluZUl0ZW06OlR5cGU6OlRleHQ7IH0K
QEAgLTE0NCwxMSArMTM5LDggQEAgcHVibGljOgogICAgIGNvbnN0IFJ1bkxpc3QmIHJ1bnMoKSBj
b25zdCB7IHJldHVybiBtX3J1bnM7IH0KICAgICBSdW5MaXN0JiBydW5zKCkgeyByZXR1cm4gbV9y
dW5zOyB9CiAKLSAgICBzdGF0aWMgQXNjZW50QW5kRGVzY2VudCBoYWxmTGVhZGluZ01ldHJpY3Mo
Y29uc3QgRm9udE1ldHJpY3MmLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KTsK
LQogcHJpdmF0ZToKLSAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX2xpbmVCb3gubG9naWNhbFdpZHRoKCk7IH0KLSAgICBJbmxpbmVMYXlv
dXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3gubG9n
aWNhbFJpZ2h0KCk7IH0KKyAgICBJbmxpbmVMYXlvdXRVbml0IGNvbnRlbnRMb2dpY2FsUmlnaHQo
KSBjb25zdCB7IHJldHVybiBtX2xpbmVMb2dpY2FsTGVmdCArIG1fY29udGVudExvZ2ljYWxXaWR0
aDsgfQogCiAgICAgc3RydWN0IElubGluZVJ1bkRldGFpbHMgewogICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxXaWR0aCB7IDAgfTsKQEAgLTE2Niw4ICsxNTgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVtb3ZlVHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CiAgICAgdm9pZCB2aXN1
YWxseUNvbGxhcHNlUHJlV3JhcE92ZXJmbG93Q29udGVudCgpOwogCi0gICAgYm9vbCBpc1Zpc3Vh
bGx5Tm9uRW1wdHkoY29uc3QgUnVuJikgY29uc3Q7Ci0KKyAgICBib29sIGlzUnVuVmlzdWFsbHlO
b25FbXB0eShjb25zdCBSdW4mKSBjb25zdDsKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dCYgZm9ybWF0dGluZ0NvbnRleHQoKSBjb25zdDsKIAogICAgIHN0cnVjdCBUcmltbWFibGVU
cmFpbGluZ0NvbnRlbnQgewpAQCAtMTk2LDkgKzE4NywxMSBAQCBwcml2YXRlOgogICAgIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBtX2lubGluZUZvcm1hdHRpbmdDb250ZXh0OwogICAg
IFJ1bkxpc3QgbV9ydW5zOwogICAgIFRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCBtX3RyaW1tYWJs
ZVRyYWlsaW5nQ29udGVudDsKKyAgICBJbmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxMZWZ0
IHsgMCB9OwogICAgIElubGluZUxheW91dFVuaXQgbV9saW5lTG9naWNhbFdpZHRoIHsgMCB9Owor
ICAgIElubGluZUxheW91dFVuaXQgbV9jb250ZW50TG9naWNhbFdpZHRoIHsgMCB9OwogICAgIGJv
b2wgbV9oYXNJbnRydXNpdmVGbG9hdCB7IGZhbHNlIH07Ci0gICAgTGluZUJveCBtX2xpbmVCb3g7
CisgICAgYm9vbCBtX2lzVmlzdWFsbHlFbXB0eSB7IHRydWUgfTsKICAgICBPcHRpb25hbDxib29s
PiBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQ7CiAg
ICAgYm9vbCBtX3Nob3VsZElnbm9yZVRyYWlsaW5nTGV0dGVyU3BhY2luZyB7IGZhbHNlIH07CiAj
aWYgQVNTRVJUX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcAppbmRleCA4MDJiZWRkOGQ3
MzE3NTI1ODMzYTQ3NDA4ZGYxMGQ1NDE3OGIyOTk4Li5kODBmMzBjMjFjNjgwMjhiMzNhM2E0Nzk0
YTk4YTlkNzhlMGE0ZDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCkBAIC0zMDAsNyArMzAw
LDcgQEAgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50IExpbmVMYXlvdXRDb250ZXh0Ojps
YXlvdXRJbmxpbmVDb250ZW50KExpbmVCdWlsZGUKICAgICAgICAgLy8gMi4gQXBwbHkgZmxvYXRz
IGFuZCBzaHJpbmsgdGhlIGF2YWlsYWJsZSBob3Jpem9udGFsIHNwYWNlIGUuZy4gPHNwYW4+aW50
cnVfPGRpdiBzdHlsZT0iZmxvYXQ6IGxlZnQiPjwvZGl2PnNpdmVfZmxvYXQ8L3NwYW4+LgogICAg
ICAgICAvLyAzLiBDaGVjayBpZiB0aGUgY29udGVudCBmaXRzIHRoZSBsaW5lIGFuZCBjb21taXQg
dGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkgKGZ1bGwsIHBhcnRpYWwgb3Igbm90IGNvbW1pdCBhdCBh
bGwpLgogICAgICAgICAvLyA0LiBSZXR1cm4gaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxp
bmUgZWl0aGVyIGJ5IG5vdCBiZWluZyBhYmxlIHRvIGZpdCBtb3JlIGNvbnRlbnQgb3IgYmVjYXVz
ZSBvZiBhbiBleHBsaWNpdCBsaW5lIGJyZWFrLgotICAgICAgICBuZXh0Q29udGVudEZvckxpbmUo
bGluZUNhbmRpZGF0ZSwgY3VycmVudEl0ZW1JbmRleCwgbGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFk
aW5nQ29udGVudExlbmd0aCwgbGluZS5hdmFpbGFibGVXaWR0aCgpICsgbGluZS50cmltbWFibGVU
cmFpbGluZ1dpZHRoKCksIGxpbmUubGluZUJveCgpLmxvZ2ljYWxXaWR0aCgpKTsKKyAgICAgICAg
bmV4dENvbnRlbnRGb3JMaW5lKGxpbmVDYW5kaWRhdGUsIGN1cnJlbnRJdGVtSW5kZXgsIGxheW91
dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5ndGgsIGxpbmUuYXZhaWxhYmxlV2lkdGgo
KSArIGxpbmUudHJpbW1hYmxlVHJhaWxpbmdXaWR0aCgpLCBsaW5lLmNvbnRlbnRMb2dpY2FsV2lk
dGgoKSk7CiAgICAgICAgIC8vIE5vdyBjaGVjayBpZiB3ZSBjYW4gcHV0IHRoaXMgY29udGVudCBv
biB0aGUgY3VycmVudCBsaW5lLgogICAgICAgICBhdXRvIHJlc3VsdCA9IGhhbmRsZUZsb2F0c0Fu
ZElubGluZUNvbnRlbnQobGluZUJyZWFrZXIsIGxpbmUsIGxheW91dFJhbmdlLCBsaW5lQ2FuZGlk
YXRlKTsKICAgICAgICAgY29tbWl0dGVkSW5saW5lSXRlbUNvdW50ID0gcmVzdWx0LmNvbW1pdHRl
ZENvdW50LmlzUmV2ZXJ0ID8gcmVzdWx0LmNvbW1pdHRlZENvdW50LnZhbHVlIDogY29tbWl0dGVk
SW5saW5lSXRlbUNvdW50ICsgcmVzdWx0LmNvbW1pdHRlZENvdW50LnZhbHVlOwpAQCAtNDA1LDgg
KzQwNSw3IEBAIHZvaWQgTGluZUxheW91dENvbnRleHQ6OmNvbW1pdEZsb2F0cyhMaW5lQnVpbGRl
ciYgbGluZSwgY29uc3QgTGluZUNhbmRpZGF0ZSYgbGluCiAgICAgICAgICAgICAgICAgcmlnaHRJ
bnRydXNpdmVGbG9hdHNXaWR0aCArPSBmbG9hdENhbmRpZGF0ZS5sb2dpY2FsV2lkdGg7CiAgICAg
ICAgIH0KICAgICB9Ci0gICAgaWYgKGhhc0ludHJ1c2l2ZUZsb2F0KQotICAgICAgICBsaW5lLnNl
dEhhc0ludHJ1c2l2ZUZsb2F0KCk7CisgICAgbGluZS5zZXRIYXNJbnRydXNpdmVGbG9hdChoYXNJ
bnRydXNpdmVGbG9hdCk7CiAgICAgaWYgKGxlZnRJbnRydXNpdmVGbG9hdHNXaWR0aCB8fCByaWdo
dEludHJ1c2l2ZUZsb2F0c1dpZHRoKSB7CiAgICAgICAgIGlmIChsZWZ0SW50cnVzaXZlRmxvYXRz
V2lkdGgpCiAgICAgICAgICAgICBsaW5lLm1vdmVMb2dpY2FsTGVmdChsZWZ0SW50cnVzaXZlRmxv
YXRzV2lkdGgpOwpAQCAtNTA1LDcgKzUwNCw3IEBAIHZvaWQgTGluZUxheW91dENvbnRleHQ6OmNv
bW1pdFBhcnRpYWxDb250ZW50KExpbmVCdWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lQnJlYWtlCiBz
aXplX3QgTGluZUxheW91dENvbnRleHQ6OnJlYnVpbGRMaW5lKExpbmVCdWlsZGVyJiBsaW5lLCBj
b25zdCBJbmxpbmVJdGVtUmFuZ2UmIGxheW91dFJhbmdlKQogewogICAgIC8vIENsZWFyIHRoZSBs
aW5lIGFuZCBzdGFydCBhcHBlbmRpbmcgdGhlIGlubGluZSBpdGVtcyBjbG9zaW5nIHdpdGggdGhl
IGxhc3Qgd3JhcCBvcHBvcnR1bml0eSBydW4uCi0gICAgbGluZS5jbGVhcigpOworICAgIGxpbmUu
Y2xlYXJDb250ZW50KCk7CiAgICAgYXV0byBjdXJyZW50SXRlbUluZGV4ID0gbGF5b3V0UmFuZ2Uu
c3RhcnQ7CiAgICAgYXV0byBsb2dpY2FsUmlnaHQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKICAg
ICBpZiAobV9wYXJ0aWFsTGVhZGluZ1RleHRJdGVtKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407390</attachid>
            <date>2020-08-27 04:51:40 -0700</date>
            <delta_ts>2020-08-27 05:54:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215048-20200827045139.patch</filename>
            <type>text/plain</type>
            <size>27836</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3ZmU0NzA0OTg3NWJk
M2YxNjI4YjVhMjI1NTRlMThhNzM3OWNkZS4uNjg4ODkyYTYyZDhmOGVmNzcxMGJhMjg2NDg1NDNh
ZTA0YzhmMDYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExp
bmVCb3ggb3V0IG9mIExpbmVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW5jZSBub25lIG9mIHRoZSBMaW5lQm94IHJlbGF0ZWQgb3BlcmF0
aW9ucyAoY29udGVudCBhbGlnbm1lbnQsIGxpbmUgc2l6aW5nIGV0YykgaXMgZG9uZSBkdXJpbmcg
bGluZSBidWlsZGluZywKKyAgICAgICAgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gY29uc3RydWN0
IGEgTGluZUJveCB1bnRpbCBhZnRlciB3ZSBmaW5pc2hlZCBwbGFjaW5nIGFsbCB0aGUgcnVucyBv
biB0aGUgY3VycmVudCBsaW5lLgorICAgICAgICBJdCBlbmFibGVzIHVzIHRvIGRlY291cGxlIHRo
ZSBMaW5lQnVpbGRlciBhbmQgdGhlIExpbmVCb3guCisgICAgICAgIExldCB0aGUgTGluZUJ1aWxk
ZXIgcGxhY2UgdGhlIHJ1bnMgYW5kIGNvbXB1dGUgaG9yaXpvbnRhbCBnZW9tZXRyeSwgd2hpbGUg
TGluZUJveCB0YWtlcyBjYXJlIG9mIHRoZSBmaW5hbCBhbGlnbm1lbnQgb2YgdGhvc2UgcnVucy4g
CisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDb250ZW50QWxpZ25lcjo6
YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZv
ckNvbnN0cmFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29uc3RyYWludHNGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
Lmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjppbml0aWFsTGluZUhlaWdodCBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94OjpoYWxmTGVhZGluZ01ldHJpY3MpOgorICAgICAgICAqIGxheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQnVpbGRlcjo6Y2xlYXJDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjp2aXN1YWxseUNvbGxhcHNlUHJlV3JhcE92ZXJmbG93Q29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjptb3ZlTG9naWNhbExl
ZnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kV2l0aCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRJ
bmxpbmVDb250YWluZXJFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6aXNSdW5WaXN1YWxseU5vbkVtcHR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmluaXRpYWxpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6Omhh
bGZMZWFkaW5nTWV0cmljcyk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OnNldEhhc0ludHJ1c2l2ZUZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6Omhhc0ludHJ1c2l2ZUZsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb250ZW50TG9naWNhbFdpZHRoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbnRlbnRMb2dpY2Fs
UmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGlu
ZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpsaW5lQm94KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9MaW5lTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVM
YXlvdXRDb250ZXh0OjpsYXlvdXRJbmxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUxheW91dENvbnRleHQ6OmNvbW1pdEZsb2F0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpyZWJ1aWxkTGluZSk6CisKIDIwMjAtMDgtMjcg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGlvbiBh
cmUgaW52YWxpZGF0aW5nIHRvbyBtdWNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggMDM2ZWM1NjUyNWY0NWRkMjgwNjg5MGUzMTkyYjc1YjQ5NmU2ZDg3MC4uM2JmNDI4
YjVkOTZmNDQyMDY5MDRlZDAzZGRhZDc1ZjBkOTViN2Y2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTGluZUNvbnRlbnRBbGln
bmVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoKQogICAgICAgICAgICAgLy8gVmVydGlj
YWwgbWFyZ2lucywgcGFkZGluZ3MgYW5kIGJvcmRlcnMgZG9uJ3QgY29udHJpYnV0ZSB0byB0aGUg
bGluZSBoZWlnaHQuCiAgICAgICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRN
ZXRyaWNzKCk7CiAgICAgICAgICAgICBpZiAoc3R5bGUudmVydGljYWxBbGlnbigpID09IFZlcnRp
Y2FsQWxpZ246OkJhc2VsaW5lKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBoYWxmTGVhZGluZyA9
IExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoZm9udE1ldHJpY3MsIHN0eWxlLmNvbXB1
dGVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGhhbGZMZWFkaW5nID0gTGlu
ZUJveDo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvbnRNZXRyaWNzLCBzdHlsZS5jb21wdXRlZExpbmVI
ZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAgLy8gQm90aCBoYWxmbGVhZGluZyBhc2NlbnQgYW5k
IGRlc2NlbnQgY291bGQgYmUgbmVnYXRpdmUgKHRhbGwgZm9udCB2cy4gc21hbGwgbGluZS1oZWln
aHQgdmFsdWUpCiAgICAgICAgICAgICAgICAgaWYgKGhhbGZMZWFkaW5nLmRlc2NlbnQgPiAwKQog
ICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVh
ZGluZy5kZXNjZW50KTsKQEAgLTQ3MCwxMyArNDcwLDE2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lTGF5b3V0
Q29uCiAgICAgYXV0byBsaW5lTGF5b3V0Q29udGV4dCA9IExpbmVMYXlvdXRDb250ZXh0IHsgKnRo
aXMsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKIAogICAgIHdoaWxlICghbmVlZHNMYXlvdXRSYW5n
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbGluZS5pbml0aWFsaXplKGNvbnN0cmFpbnRzRm9yTGlu
ZShjb25zdHJhaW50cy5ob3Jpem9udGFsLCBsaW5lTG9naWNhbFRvcCkpOworICAgICAgICBhdXRv
IGxpbmVDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzRm9yTGluZShjb25zdHJhaW50cy5ob3Jpem9u
dGFsLCBsaW5lTG9naWNhbFRvcCk7CisgICAgICAgIGxpbmUub3BlbihsaW5lQ29uc3RyYWludHMu
YXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbGluZS5zZXRIYXNJbnRydXNpdmVGbG9h
dChsaW5lQ29uc3RyYWludHMubGluZUlzQ29uc3RyYWluZWRCeUZsb2F0KTsKICAgICAgICAgLy8g
VHVybiBwcmV2aW91cyBsaW5lJ3Mgb3ZlcmZsb3cgY29udGVudCBsZW5ndGggaW50byB0aGUgbmV4
dCBsaW5lJ3MgbGVhZGluZyBjb250ZW50IHBhcnRpYWwgbGVuZ3RoLgogICAgICAgICAvLyAic3Bb
PC1saW5lIGJyZWFrLT5dbGl0X2NvbnRlbnQiIC0+IG92ZXJmbG93IGxlbmd0aDogMTEgLT4gbGVh
ZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMS4KICAgICAgICAgYXV0byBwYXJ0aWFsTGVh
ZGluZ0NvbnRlbnRMZW5ndGggPSBwcmV2aW91c0xpbmUgPyBwcmV2aW91c0xpbmUtPm92ZXJmbG93
Q29udGVudExlbmd0aCA6IFdURjo6bnVsbG9wdDsKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9
IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dElubGluZUNvbnRlbnQobGluZSwgbmVlZHNMYXlvdXRS
YW5nZSwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgYXV0byYgbGluZUJv
eCA9IGxpbmUubGluZUJveCgpOworCiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnRSYW5nZSA9IGxp
bmVDb250ZW50LmlubGluZUl0ZW1SYW5nZTsKKyAgICAgICAgYXV0byBsaW5lQm94ID0gTGluZUJv
eCB7IERpc3BsYXk6OklubGluZVJlY3QgeyBsaW5lQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQs
IDBfbHUsIGxpbmVDb25zdHJhaW50cy5saW5lSGVpZ2h0IH0sIExpbmVCb3g6OmhhbGZMZWFkaW5n
TWV0cmljcyhyb290KCkuc3R5bGUoKS5mb250TWV0cmljcygpLCBsaW5lQ29uc3RyYWludHMubGlu
ZUhlaWdodCkgfTsKIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkgYW5kIHdp
bGwgZXZlbnR1YWxseSBnZXQgbWVyZ2VkIHRvIExpbmVCb3guCiAgICAgICAgIGF1dG8gYWxpZ25M
aW5lQ29udGVudCA9IFsmXSB7CkBAIC01MjIsMTEgKzUyNSwxMSBAQCB2b2lkIElubGluZUZvcm1h
dHRpbmdDb250ZXh0OjpsaW5lTGF5b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUxh
eW91dENvbgogICAgICAgICB9OwogCiAgICAgICAgIGFsaWduTGluZUNvbnRlbnQoKTsKLSAgICAg
ICAgc2V0RGlzcGxheUJveGVzRm9yTGluZShsaW5lLCBsaW5lQ29udGVudCwgY29uc3RyYWludHMu
aG9yaXpvbnRhbCk7CisgICAgICAgIHNldERpc3BsYXlCb3hlc0ZvckxpbmUobGluZSwgbGluZUJv
eCwgbGluZUNvbnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOwogCiAgICAgICAgIGlmICgh
bGluZUNvbnRlbnRSYW5nZS5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIEFTU0VSVChuZWVkc0xh
eW91dFJhbmdlLnN0YXJ0IDwgbGluZUNvbnRlbnRSYW5nZS5lbmQpOwotICAgICAgICAgICAgbGlu
ZUxvZ2ljYWxUb3AgPSBsaW5lLmxpbmVCb3goKS5sb2dpY2FsQm90dG9tKCk7CisgICAgICAgICAg
ICBsaW5lTG9naWNhbFRvcCA9IGxpbmVCb3gubG9naWNhbEJvdHRvbSgpOwogICAgICAgICAgICAg
Ly8gV2hlbiB0aGUgdHJhaWxpbmcgY29udGVudCBpcyBwYXJ0aWFsLCB3ZSBuZWVkIHRvIHJldXNl
IHRoZSBsYXN0IElubGluZVRleHRJdGVtLgogICAgICAgICAgICAgYXV0byBsYXN0SW5saW5lSXRl
bU5lZWRzUGFydGlhbExheW91dCA9IGxpbmVDb250ZW50LnBhcnRpYWxDb250ZW50Lmhhc1ZhbHVl
KCk7CiAgICAgICAgICAgICBpZiAobGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQpIHsK
QEAgLTU1MCw3ICs1NTMsNyBAQCB2b2lkIElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpsaW5lTGF5
b3V0KElubGluZUl0ZW1zJiBpbmxpbmVJdGVtcywgTGluZUxheW91dENvbgogICAgICAgICBBU1NF
UlQobGluZS5oYXNJbnRydXNpdmVGbG9hdCgpKTsKICAgICAgICAgLy8gTW92ZSB0aGUgbmV4dCBs
aW5lIGJlbG93IHRoZSBpbnRydXNpdmUgZmxvYXQuCiAgICAgICAgIGF1dG8gZmxvYXRpbmdDb250
ZXh0ID0gRmxvYXRpbmdDb250ZXh0IHsgcm9vdCgpLCAqdGhpcywgZm9ybWF0dGluZ1N0YXRlKCku
ZmxvYXRpbmdTdGF0ZSgpIH07Ci0gICAgICAgIGF1dG8gZmxvYXRDb25zdHJhaW50cyA9IGZsb2F0
aW5nQ29udGV4dC5jb25zdHJhaW50cyhsaW5lTG9naWNhbFRvcCwgdG9MYXlvdXRVbml0KGxpbmUu
bGluZUJveCgpLmxvZ2ljYWxCb3R0b20oKSkpOworICAgICAgICBhdXRvIGZsb2F0Q29uc3RyYWlu
dHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMobGluZUxvZ2ljYWxUb3AsIHRvTGF5b3V0
VW5pdChsaW5lQm94LmxvZ2ljYWxCb3R0b20oKSkpOwogICAgICAgICBBU1NFUlQoZmxvYXRDb25z
dHJhaW50cy5sZWZ0IHx8IGZsb2F0Q29uc3RyYWludHMucmlnaHQpOwogICAgICAgICBzdGF0aWMg
YXV0byBpbmlmaXRlUG9pbnQgPSBQb2ludEluQ29udGV4dFJvb3Q6Om1heCgpOwogICAgICAgICAv
LyBJbiBjYXNlIG9mIGxlZnQgYW5kIHJpZ2h0IGNvbnN0cmFpbnRzLCB3ZSBuZWVkIHRvIHBpY2sg
dGhlIG9uZSB0aGF0J3MgY2xvc2VyIHRvIHRoZSBjdXJyZW50IGxpbmUuCkBAIC02MjYsMTEgKzYy
OSwxMSBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRl
ZEludHJpbnNpY1dpZHRoRm9yQ29uc3RyYWludChJbgogICAgIGF1dG8gbGF5b3V0UmFuZ2UgPSBM
aW5lTGF5b3V0Q29udGV4dDo6SW5saW5lSXRlbVJhbmdlIHsgMCAsIGlubGluZUl0ZW1zLnNpemUo
KSB9OwogICAgIHdoaWxlICghbGF5b3V0UmFuZ2UuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIE9u
bHkgdGhlIGhvcml6dG9uYWwgYXZhaWxhYmxlIHdpZHRoIGlzIGNvbnN0cmFpbmVkIHdoZW4gY29t
cHV0aW5nIGludHJpbnNpYyB3aWR0aC4KLSAgICAgICAgbGluZS5pbml0aWFsaXplKExpbmVCdWls
ZGVyOjpDb25zdHJhaW50cyB7IHsgfSwgYXZhaWxhYmxlV2lkdGgsIHsgfSwgZmFsc2UgfSk7Cisg
ICAgICAgIGxpbmUub3BlbihhdmFpbGFibGVXaWR0aCk7CiAgICAgICAgIGF1dG8gbGluZUNvbnRl
bnQgPSBsaW5lTGF5b3V0Q29udGV4dC5sYXlvdXRJbmxpbmVDb250ZW50KGxpbmUsIGxheW91dFJh
bmdlLCB7IH0pOwogICAgICAgICBsYXlvdXRSYW5nZS5zdGFydCA9IGxpbmVDb250ZW50LmlubGlu
ZUl0ZW1SYW5nZS5lbmQ7CiAgICAgICAgIC8vIEZJWE1FOiBVc2UgbGluZSBsb2dpY2FsIGxlZnQg
YW5kIHJpZ2h0IHRvIHRha2UgZmxvYXRzIGludG8gYWNjb3VudC4KLSAgICAgICAgbWF4aW11bUxp
bmVXaWR0aCA9IHN0ZDo6bWF4KG1heGltdW1MaW5lV2lkdGgsIGxpbmUubGluZUJveCgpLmxvZ2lj
YWxXaWR0aCgpKTsKKyAgICAgICAgbWF4aW11bUxpbmVXaWR0aCA9IHN0ZDo6bWF4KG1heGltdW1M
aW5lV2lkdGgsIGxpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IG1heGltdW1MaW5lV2lkdGg7CiB9CkBAIC03NjQsNyArNzY3LDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpCiAgICAgfQogfQog
Ci1MaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0
cmFpbnRzRm9yTGluZShjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25z
dHJhaW50cywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCkKK0lubGluZUZvcm1hdHRp
bmdDb250ZXh0OjpMaW5lQ29uc3RyYWludHMgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbnN0
cmFpbnRzRm9yTGluZShjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25z
dHJhaW50cywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCkKIHsKICAgICBhdXRvIGxp
bmVMb2dpY2FsTGVmdCA9IGhvcml6b250YWxDb25zdHJhaW50cy5sb2dpY2FsTGVmdDsKICAgICBh
dXRvIGxpbmVMb2dpY2FsUmlnaHQgPSBsaW5lTG9naWNhbExlZnQgKyBob3Jpem9udGFsQ29uc3Ry
YWludHMubG9naWNhbFdpZHRoOwpAQCAtODMxLDEzICs4MzQsMTIgQEAgTGluZUJ1aWxkZXI6OkNv
bnN0cmFpbnRzIElubGluZUZvcm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29u
c3QgSG9yaXoKICAgICAgICAgcmV0dXJuIGdlb21ldHJ5KCkuY29tcHV0ZWRUZXh0SW5kZW50KHJv
b3QsIGhvcml6b250YWxDb25zdHJhaW50cykudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0IHsgfSk7
CiAgICAgfTsKICAgICBsaW5lTG9naWNhbExlZnQgKz0gY29tcHV0ZWRUZXh0SW5kZW50KCk7Ci0g
ICAgcmV0dXJuIExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyB7IHsgbGluZUxvZ2ljYWxMZWZ0LCBs
aW5lTG9naWNhbFRvcCB9LCBsaW5lTG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0LCBpbml0
aWFsTGluZUhlaWdodCwgbGluZUlzQ29uc3RyYWluZWRCeUZsb2F0IH07CisgICAgcmV0dXJuIExp
bmVDb25zdHJhaW50cyB7IHsgbGluZUxvZ2ljYWxMZWZ0LCBsaW5lTG9naWNhbFRvcCB9LCBsaW5l
TG9naWNhbFJpZ2h0IC0gbGluZUxvZ2ljYWxMZWZ0LCBpbml0aWFsTGluZUhlaWdodCwgbGluZUlz
Q29uc3RyYWluZWRCeUZsb2F0IH07CiB9CiAKLXZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6
OnNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExp
bmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYgaG9yaXpvbnRhbENvbnN0cmFpbnRzKQordm9pZCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6c2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lQnVpbGRlciYgbGlu
ZSwgY29uc3QgTGluZUJveCYgbGluZUJveCwgIGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5l
Q29udGVudCYgbGluZUNvbnRlbnQsIGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYgaG9yaXpv
bnRhbENvbnN0cmFpbnRzKQogewogICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IHRoaXMtPmZv
cm1hdHRpbmdTdGF0ZSgpOwotICAgIGF1dG8mIGxpbmVCb3ggPSBsaW5lLmxpbmVCb3goKTsKIAog
ICAgIGlmICghbGluZUNvbnRlbnQuZmxvYXRzLmlzRW1wdHkoKSkgewogICAgICAgICBhdXRvIGZs
b2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7IHJvb3QoKSwgKnRoaXMsIGZvcm1hdHRp
bmdTdGF0ZS5mbG9hdGluZ1N0YXRlKCkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5o
CmluZGV4IDM2NDQ1NDdiMzBlNGVkNDEzODEzZmFjMWZhYTQyZGYyNTE4YWU2NmQuLjAzZTRmYjZh
OGFhNmM4NWI2OTAwMzk1ZTNlOTdiYzRlOTE2MjhmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuaApAQCAtODcsOCArODcsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXB1dGVX
aWR0aEFuZE1hcmdpbihjb25zdCBCb3gmLCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmKTsK
IAogICAgIHZvaWQgY29sbGVjdElubGluZUNvbnRlbnRJZk5lZWRlZCgpOwotICAgIExpbmVCdWls
ZGVyOjpDb25zdHJhaW50cyBjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCk7Ci0gICAgdm9pZCBzZXRE
aXNwbGF5Qm94ZXNGb3JMaW5lKGNvbnN0IExpbmVCdWlsZGVyJiwgY29uc3QgTGluZUxheW91dENv
bnRleHQ6OkxpbmVDb250ZW50JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CisgICAg
c3RydWN0IExpbmVDb25zdHJhaW50cyB7CisgICAgICAgIElubGluZUxheW91dFBvaW50IGxvZ2lj
YWxUb3BMZWZ0OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0
aCB7IDAgfTsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsaW5lSGVpZ2h0IHsgMCB9OworICAg
ICAgICBib29sIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdCB7IGZhbHNlIH07CisgICAgfTsKKyAg
ICBMaW5lQ29uc3RyYWludHMgY29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6b250YWxDb25z
dHJhaW50cyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxUb3ApOworICAgIHZvaWQgc2V0
RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lQnVpbGRlciYsIGNvbnN0IExpbmVCb3gmLCBj
b25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmLCBjb25zdCBIb3Jpem9udGFsQ29u
c3RyYWludHMmKTsKICAgICB2b2lkIGludmFsaWRhdGVGb3JtYXR0aW5nU3RhdGUoY29uc3QgSW52
YWxpZGF0aW9uU3RhdGUmKTsKIAogICAgIGNvbnN0IElubGluZUZvcm1hdHRpbmdTdGF0ZSYgZm9y
bWF0dGluZ1N0YXRlKCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGluZ1N0
YXRlPihGb3JtYXR0aW5nQ29udGV4dDo6Zm9ybWF0dGluZ1N0YXRlKCkpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5n
Q29udGV4dFF1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKaW5kZXggNmFiYTQwMGVmYzEwZGYw
MWY4NjhmNzc5ZGNlNDZjYmNjNGRlNGFiYy4uYmE3NTVkOTMxMWExM2U1MmNiYTI3ZDRiNzhiODMx
M2MyYzBjZmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtz
LmNwcApAQCAtNzQsNyArNzQsNyBAQCBJbmxpbmVMYXlvdXRVbml0IElubGluZUZvcm1hdHRpbmdD
b250ZXh0OjpRdWlya3M6OmluaXRpYWxMaW5lSGVpZ2h0KGNvbnN0IENvbnRhaQogICAgIC8vIE5l
Z2F0aXZlIGxpbmVIZWlnaHQgdmFsdWUgbWVhbnMgdGhlIGxpbmUtaGVpZ2h0IGlzIG5vdCBzZXQK
ICAgICBpZiAobGF5b3V0U3RhdGUoKS5pbk5vUXVpcmtzTW9kZSgpIHx8ICFmb3JtYXR0aW5nUm9v
dC5zdHlsZSgpLmxpbmVIZWlnaHQoKS5pc05lZ2F0aXZlKCkpCiAgICAgICAgIHJldHVybiBjb21w
dXRlZExpbmVIZWlnaHQ7Ci0gICAgcmV0dXJuIExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJp
Y3MoZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCBjb21wdXRlZExpbmVIZWln
aHQpLmhlaWdodCgpOworICAgIHJldHVybiBMaW5lQm94OjpoYWxmTGVhZGluZ01ldHJpY3MoZm9y
bWF0dGluZ1Jvb3Quc3R5bGUoKS5mb250TWV0cmljcygpLCBjb21wdXRlZExpbmVIZWlnaHQpLmhl
aWdodCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKaW5kZXggNjViZWVmM2ViZTdiMzA3YzVlYzcyYzQ2
NDI4ZDNmYThlYzlmZWUwNC4uNTYxNzA1MGIyZjhiYzAyZjc4OGZlMDE0ZTFkODI5MTFjYjkwMmZj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lTGluZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUxpbmVCb3guaApAQCAtMTE0LDYgKzExNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dElzQ29uc2lkZXJlZEVtcHR5KCkgeyBtX2lzQ29uc2lkZXJlZEVtcHR5ID0gdHJ1ZTsgfQogICAg
IHZvaWQgc2V0SXNDb25zaWRlcmVkTm9uRW1wdHkoKSB7IG1faXNDb25zaWRlcmVkRW1wdHkgPSBm
YWxzZTsgfQogCisgICAgc3RhdGljIEFzY2VudEFuZERlc2NlbnQgaGFsZkxlYWRpbmdNZXRyaWNz
KGNvbnN0IEZvbnRNZXRyaWNzJiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7
CisKIHByaXZhdGU6CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIG1faGFzVmFsaWRBbGln
bm1lbnRCYXNlbGluZSB7IGZhbHNlIH07CkBAIC0xODYsNiArMTg4LDE4IEBAIGlubGluZSB2b2lk
IExpbmVCb3g6OnJlc2V0QWxpZ25tZW50QmFzZWxpbmUoKQogICAgIG1fcm9vdElubGluZUJveC5h
c2NlbnRBbmREZXNjZW50LmFzY2VudCA9IHsgfTsKIH0KIAoraW5saW5lIEFzY2VudEFuZERlc2Nl
bnQgTGluZUJveDo6aGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0
cmljcywgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCkKK3sKKyAgICBhdXRvIGFz
Y2VudCA9IGZvbnRNZXRyaWNzLmFzY2VudCgpOworICAgIGF1dG8gZGVzY2VudCA9IGZvbnRNZXRy
aWNzLmRlc2NlbnQoKTsKKyAgICAvLyAxMC44LjEgTGVhZGluZyBhbmQgaGFsZi1sZWFkaW5nCisg
ICAgYXV0byBoYWxmTGVhZGluZyA9IChsaW5lTG9naWNhbEhlaWdodCAtIChhc2NlbnQgKyBkZXNj
ZW50KSkgLyAyOworICAgIC8vIElubGluZSB0cmVlIGhlaWdodCBpcyBhbGwgaW50ZWdlciBiYXNl
ZC4KKyAgICBhdXRvIGFkanVzdGVkQXNjZW50ID0gc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4o
Zmxvb3JmKGFzY2VudCArIGhhbGZMZWFkaW5nKSwgMCk7CisgICAgYXV0byBhZGp1c3RlZERlc2Nl
bnQgPSBzdGQ6Om1heDxJbmxpbmVMYXlvdXRVbml0PihjZWlsZihkZXNjZW50ICsgaGFsZkxlYWRp
bmcpLCAwKTsKKyAgICByZXR1cm4geyBhZGp1c3RlZEFzY2VudCwgYWRqdXN0ZWREZXNjZW50IH07
Cit9CisKIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IDZmM2Y0ZTJlNWExN2U4
YjVjYWUyZjU5ZWFjYjc5MGE0OWYwYjBhYWYuLjY0NTI2NjEzNzhmNjZmZTNiZjVlNmE0NjM1YTI0
NDYxY2IwZWFjOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
aW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTU0LDI0ICs1NCwxOSBA
QCBMaW5lQnVpbGRlcjo6fkxpbmVCdWlsZGVyKCkKIHsKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6
aW5pdGlhbGl6ZShjb25zdCBDb25zdHJhaW50cyYgY29uc3RyYWludHMpCi17Ci0gICAgbV9saW5l
TG9naWNhbFdpZHRoID0gY29uc3RyYWludHMuYXZhaWxhYmxlTG9naWNhbFdpZHRoOwotICAgIG1f
aGFzSW50cnVzaXZlRmxvYXQgPSBjb25zdHJhaW50cy5saW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQ7
Ci0gICAgYXV0byBpbml0aWFsTGluZUhlaWdodCA9IGNvbnN0cmFpbnRzLmxpbmVIZWlnaHQ7Ci0g
ICAgYXV0byBsaW5lUmVjdCA9IERpc3BsYXk6OklubGluZVJlY3QgeyBjb25zdHJhaW50cy5sb2dp
Y2FsVG9wTGVmdCwgMF9sdSwgaW5pdGlhbExpbmVIZWlnaHQgfTsKLSAgICBhdXRvIGFzY2VudEFu
ZERlc2NlbnQgPSBMaW5lQnVpbGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdDb250
ZXh0KCkucm9vdCgpLnN0eWxlKCkuZm9udE1ldHJpY3MoKSwgaW5pdGlhbExpbmVIZWlnaHQpOwot
ICAgIG1fbGluZUJveCA9IExpbmVCb3ggeyBsaW5lUmVjdCwgYXNjZW50QW5kRGVzY2VudCB9Owot
ICAgIGNsZWFyKCk7Cit2b2lkIExpbmVCdWlsZGVyOjpvcGVuKElubGluZUxheW91dFVuaXQgYXZh
aWxhYmxlV2lkdGgpCit7CisgICAgbV9saW5lTG9naWNhbFdpZHRoID0gYXZhaWxhYmxlV2lkdGg7
CisgICAgY2xlYXJDb250ZW50KCk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBtX2lzQ2xvc2Vk
ID0gZmFsc2U7CiAjZW5kaWYKIH0KIAotdm9pZCBMaW5lQnVpbGRlcjo6Y2xlYXIoKQordm9pZCBM
aW5lQnVpbGRlcjo6Y2xlYXJDb250ZW50KCkKIHsKLSAgICBtX2xpbmVCb3guc2V0TG9naWNhbFdp
ZHRoKHsgfSk7Ci0gICAgbV9saW5lQm94LnNldElzQ29uc2lkZXJlZEVtcHR5KCk7CisgICAgbV9j
b250ZW50TG9naWNhbFdpZHRoID0geyB9OworICAgIG1faXNWaXN1YWxseUVtcHR5ID0gdHJ1ZTsK
ICAgICBtX3J1bnMuY2xlYXIoKTsKICAgICBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5yZXNl
dCgpOwogICAgIG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29u
dGVudCA9IHsgfTsKQEAgLTgyLDggKzc3LDYgQEAgdm9pZCBMaW5lQnVpbGRlcjo6Y2xvc2UoKQog
I2lmIEFTU0VSVF9FTkFCTEVECiAgICAgbV9pc0Nsb3NlZCA9IHRydWU7CiAjZW5kaWYKLSAgICAv
LyAxLiBSZW1vdmUgdHJpbW1hYmxlIHRyYWlsaW5nIGNvbnRlbnQuCi0gICAgLy8gMi4gQWxpZ24g
bWVyZ2VkIHJ1bnMgYm90aCB2ZXJ0aWNhbGx5IGFuZCBob3Jpem9udGFsbHkuCiAgICAgcmVtb3Zl
VHJhaWxpbmdUcmltbWFibGVDb250ZW50KCk7CiAgICAgdmlzdWFsbHlDb2xsYXBzZVByZVdyYXBP
dmVyZmxvd0NvbnRlbnQoKTsKIH0KQEAgLTEwOCwyMSArMTAxLDIwIEBAIHZvaWQgTGluZUJ1aWxk
ZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBtX2xpbmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5KG1fdHJpbW1hYmxlVHJhaWxpbmdDb250
ZW50LnJlbW92ZSgpKTsKKyAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggLT0gbV90cmltbWFibGVU
cmFpbGluZ0NvbnRlbnQucmVtb3ZlKCk7CiAgICAgLy8gSWYgd2UgcmVtb3ZlZCB0aGUgZmlyc3Qg
dmlzaWJsZSBydW4gb24gdGhlIGxpbmUsIHdlIG5lZWQgdG8gcmUtY2hlY2sgdGhlIHZpc2liaWxp
dHkgc3RhdHVzLgogICAgIGlmIChtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZvcmVUcmltbWFibGVU
cmFpbGluZ0NvbnRlbnQpIHsKICAgICAgICAgLy8gSnVzdCBiZWNhdXNlIHRoZSBsaW5lIHdhcyB2
aXN1YWxseSBlbXB0eSBiZWZvcmUgdGhlIHJlbW92ZWQgY29udGVudCwgaXQgZG9lcyBub3QgbmVj
ZXNzYXJpbHkgbWVhbiBpdCBpcyBzdGlsbCB2aXN1YWxseSBlbXB0eS4KICAgICAgICAgLy8gPHNw
YW4+ICA8L3NwYW4+PHNwYW4gc3R5bGU9InBhZGRpbmctbGVmdDogMTBweCI+PC9zcGFuPiAgPC0g
bm9uLWVtcHR5CiAgICAgICAgIGF1dG8gbGluZUlzVmlzdWFsbHlFbXB0eSA9IFsmXSB7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVucykgewotICAgICAgICAgICAgICAgIGlmIChp
c1Zpc3VhbGx5Tm9uRW1wdHkocnVuKSkKKyAgICAgICAgICAgICAgICBpZiAoaXNSdW5WaXN1YWxs
eU5vbkVtcHR5KHJ1bikpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9OwogICAgICAgICAv
LyBXZSBjb3VsZCBvbmx5IGdvIGZyb20gdmlzdWFsbHkgbm9uIGVtcHR5IC0+IHRvIHZpc3VhbGx5
IGVtcHR5LiBUcmltbWVkIHJ1bnMgc2hvdWxkIG5ldmVyIG1ha2UgdGhlIGxpbmUgdmlzaWJsZS4K
LSAgICAgICAgaWYgKGxpbmVJc1Zpc3VhbGx5RW1wdHkoKSkKLSAgICAgICAgICAgIG1fbGluZUJv
eC5zZXRJc0NvbnNpZGVyZWRFbXB0eSgpOworICAgICAgICBtX2lzVmlzdWFsbHlFbXB0eSA9IGxp
bmVJc1Zpc3VhbGx5RW1wdHkoKTsKICAgICAgICAgbV9saW5lSXNWaXN1YWxseUVtcHR5QmVmb3Jl
VHJpbW1hYmxlVHJhaWxpbmdDb250ZW50ID0geyB9OwogICAgIH0KIH0KQEAgLTE2Myw3ICsxNTUs
NyBAQCB2b2lkIExpbmVCdWlsZGVyOjp2aXN1YWxseUNvbGxhcHNlUHJlV3JhcE92ZXJmbG93Q29u
dGVudCgpCiAgICAgICAgIGlmIChvdmVyZmxvd1dpZHRoIDw9IDApCiAgICAgICAgICAgICBicmVh
azsKICAgICB9Ci0gICAgbV9saW5lQm94LnNocmlua0hvcml6b250YWxseSh0cmltbWVkQ29udGVu
dFdpZHRoKTsKKyAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGggLT0gdHJpbW1lZENvbnRlbnRXaWR0
aDsKIH0KIAogdm9pZCBMaW5lQnVpbGRlcjo6bW92ZUxvZ2ljYWxMZWZ0KElubGluZUxheW91dFVu
aXQgZGVsdGEpCkBAIC0xNzEsNyArMTYzLDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6bW92ZUxvZ2lj
YWxMZWZ0KElubGluZUxheW91dFVuaXQgZGVsdGEpCiAgICAgaWYgKCFkZWx0YSkKICAgICAgICAg
cmV0dXJuOwogICAgIEFTU0VSVChkZWx0YSA+IDApOwotICAgIG1fbGluZUJveC5tb3ZlSG9yaXpv
bnRhbGx5KGRlbHRhKTsKKyAgICBtX2xpbmVMb2dpY2FsTGVmdCArPSBkZWx0YTsKICAgICBtX2xp
bmVMb2dpY2FsV2lkdGggLT0gZGVsdGE7CiB9CiAKQEAgLTIxMCwxNCArMjAyLDE0IEBAIHZvaWQg
TGluZUJ1aWxkZXI6OmFwcGVuZFdpdGgoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgY29u
c3QgSW5saW5lUnVuRGV0YWlsCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogCiAgICAg
Ly8gQ2hlY2sgaWYgdGhpcyBmcmVzaGx5IGFwcGVuZGVkIGNvbnRlbnQgbWFrZXMgdGhlIGxpbmUg
dmlzdWFsbHkgbm9uLWVtcHR5LgotICAgIGlmIChtX2xpbmVCb3guaXNDb25zaWRlcmVkRW1wdHko
KSAmJiAhbV9ydW5zLmlzRW1wdHkoKSAmJiBpc1Zpc3VhbGx5Tm9uRW1wdHkobV9ydW5zLmxhc3Qo
KSkpCi0gICAgICAgIG1fbGluZUJveC5zZXRJc0NvbnNpZGVyZWROb25FbXB0eSgpOworICAgIGlm
IChtX2lzVmlzdWFsbHlFbXB0eSAmJiAhbV9ydW5zLmlzRW1wdHkoKSAmJiBpc1J1blZpc3VhbGx5
Tm9uRW1wdHkobV9ydW5zLmxhc3QoKSkpCisgICAgICAgIG1faXNWaXN1YWxseUVtcHR5ID0gZmFs
c2U7CiB9CiAKIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZE5vbkJyZWFrYWJsZVNwYWNlKGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGluZUxheW91dFVuaXQgbG9naWNhbExlZnQsIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKQogewogICAgIG1fcnVucy5hcHBlbmQoeyBpbmxp
bmVJdGVtLCBsb2dpY2FsTGVmdCwgbG9naWNhbFdpZHRoIH0pOwotICAgIG1fbGluZUJveC5leHBh
bmRIb3Jpem9udGFsbHkobG9naWNhbFdpZHRoKTsKKyAgICBtX2NvbnRlbnRMb2dpY2FsV2lkdGgg
Kz0gbG9naWNhbFdpZHRoOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRJbmxpbmVDb250
YWluZXJTdGFydChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCkKQEAgLTIzMiw3ICsyMjQsNyBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBl
bmRJbmxpbmVDb250YWluZXJFbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgSW5saW5l
TAogICAgIGF1dG8gcmVtb3ZlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nID0gWyZdIHsKICAgICAgICAg
aWYgKCFtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5pc1RyYWlsaW5nUnVuUGFydGlhbGx5VHJp
bW1hYmxlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fbGluZUJveC5zaHJpbmtI
b3Jpem9udGFsbHkobV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVtb3ZlUGFydGlhbGx5VHJp
bW1hYmxlQ29udGVudCgpKTsKKyAgICAgICAgbV9jb250ZW50TG9naWNhbFdpZHRoIC09IG1fdHJp
bW1hYmxlVHJhaWxpbmdDb250ZW50LnJlbW92ZVBhcnRpYWxseVRyaW1tYWJsZUNvbnRlbnQoKTsK
ICAgICB9OwogICAgIC8vIFByZXZlbnQgdHJhaWxpbmcgbGV0dGVyLXNwYWNpbmcgZnJvbSBzcGls
bGluZyBvdXQgb2YgdGhlIGlubGluZSBjb250YWluZXIuCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3Nzd2cub3JnL2Nzcy10ZXh0LTMvI2xldHRlci1zcGFjaW5nLXByb3BlcnR5IFNlZSBleGFtcGxl
IDIxLgpAQCAtMjgxLDkgKzI3Myw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZFRleHRDb250
ZW50KGNvbnN0IElubGluZVRleHRJdGVtJiBpbmxpbmVUZXh0SXRlbSwgSW5saW5lCiAgICAgfQog
ICAgIGlmIChpbmxpbmVUZXh0SXRlbU5lZWRzTmV3UnVuKQogICAgICAgICBtX3J1bnMuYXBwZW5k
KHsgaW5saW5lVGV4dEl0ZW0sIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoLCBu
ZWVkc0h5cGhlbiB9KTsKLQotICAgIG1fbGluZUJveC5leHBhbmRIb3Jpem9udGFsbHkobG9naWNh
bFdpZHRoKTsKLQorICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsV2lkdGg7CiAg
ICAgLy8gU2V0IHRoZSB0cmFpbGluZyB0cmltbWFibGUgY29udGVudC4KICAgICBpZiAoaW5saW5l
VGV4dEl0ZW0uaXNXaGl0ZXNwYWNlKCkgJiYgIVRleHRVdGlsOjpzaG91bGRQcmVzZXJ2ZVRyYWls
aW5nV2hpdGVzcGFjZShpbmxpbmVUZXh0SXRlbS5zdHlsZSgpKSkgewogICAgICAgICBtX3RyaW1t
YWJsZVRyYWlsaW5nQ29udGVudC5hZGRGdWxseVRyaW1tYWJsZUNvbnRlbnQobV9ydW5zLnNpemUo
KSAtIDEsIGxvZ2ljYWxXaWR0aCk7CkBAIC0zMDQsNyArMjk0LDcgQEAgdm9pZCBMaW5lQnVpbGRl
cjo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3goY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRl
bSwgSW5saW4KICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2Vv
bWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKICAgICBhdXRvIGhvcml6b250YWxNYXJnaW4gPSBib3hH
ZW9tZXRyeS5ob3Jpem9udGFsTWFyZ2luKCk7CiAgICAgbV9ydW5zLmFwcGVuZCh7IGlubGluZUl0
ZW0sIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJnaW4uc3RhcnQsIGxvZ2lj
YWxXaWR0aCB9KTsKLSAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxXaWR0
aCArIGhvcml6b250YWxNYXJnaW4uc3RhcnQgKyBob3Jpem9udGFsTWFyZ2luLmVuZCk7CisgICAg
bV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxXaWR0aCArIGhvcml6b250YWxNYXJnaW4u
c3RhcnQgKyBob3Jpem9udGFsTWFyZ2luLmVuZDsKICAgICBtX3RyaW1tYWJsZVRyYWlsaW5nQ29u
dGVudC5yZXNldCgpOwogfQogCkBAIC0zMjQsNyArMzE0LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6
YXBwZW5kTGluZUJyZWFrKGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgbV9ydW5z
LmFwcGVuZCh7IGRvd25jYXN0PElubGluZVNvZnRMaW5lQnJlYWtJdGVtPihpbmxpbmVJdGVtKSwg
Y29udGVudExvZ2ljYWxXaWR0aCgpIH0pOwogfQogCi1ib29sIExpbmVCdWlsZGVyOjppc1Zpc3Vh
bGx5Tm9uRW1wdHkoY29uc3QgUnVuJiBydW4pIGNvbnN0Citib29sIExpbmVCdWlsZGVyOjppc1J1
blZpc3VhbGx5Tm9uRW1wdHkoY29uc3QgUnVuJiBydW4pIGNvbnN0CiB7CiAgICAgaWYgKHJ1bi5p
c1RleHQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0zNTQsMTggKzM0NCw2IEBAIGJvb2wg
TGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mIHJ1bikgY29uc3QKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLUFzY2VudEFuZERlc2NlbnQgTGluZUJ1aWxkZXI6OmhhbGZM
ZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElubGluZUxheW91
dFVuaXQgbGluZUxvZ2ljYWxIZWlnaHQpCi17Ci0gICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmlj
cy5hc2NlbnQoKTsKLSAgICBhdXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7Ci0g
ICAgLy8gMTAuOC4xIExlYWRpbmcgYW5kIGhhbGYtbGVhZGluZwotICAgIGF1dG8gaGFsZkxlYWRp
bmcgPSAobGluZUxvZ2ljYWxIZWlnaHQgLSAoYXNjZW50ICsgZGVzY2VudCkpIC8gMjsKLSAgICAv
LyBJbmxpbmUgdHJlZSBoZWlnaHQgaXMgYWxsIGludGVnZXIgYmFzZWQuCi0gICAgYXV0byBhZGp1
c3RlZEFzY2VudCA9IHN0ZDo6bWF4PElubGluZUxheW91dFVuaXQ+KGZsb29yZihhc2NlbnQgKyBo
YWxmTGVhZGluZyksIDApOwotICAgIGF1dG8gYWRqdXN0ZWREZXNjZW50ID0gc3RkOjptYXg8SW5s
aW5lTGF5b3V0VW5pdD4oY2VpbGYoZGVzY2VudCArIGhhbGZMZWFkaW5nKSwgMCk7Ci0gICAgcmV0
dXJuIHsgYWRqdXN0ZWRBc2NlbnQsIGFkanVzdGVkRGVzY2VudCB9OwotfQotCiBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dCYgTGluZUJ1aWxkZXI6OmZvcm1hdHRpbmdDb250ZXh0KCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVp
bGRlci5oCmluZGV4IDhlNGQ5NTYwYTExNjdkMTcwZDY4N2Q3NWMwMTE1ZDE5YmJiYWE1ZGUuLjcy
NmE2NTczY2RhZDU1Mjk1YzAyMThjNTI3MGY1OWRkZjExMjgzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxk
ZXIuaApAQCAtNDEsMzQgKzQxLDI5IEBAIGNsYXNzIExpbmVDb250ZW50QWxpZ25lcjsKIAogY2xh
c3MgTGluZUJ1aWxkZXIgewogcHVibGljOgotICAgIHN0cnVjdCBDb25zdHJhaW50cyB7Ci0gICAg
ICAgIElubGluZUxheW91dFBvaW50IGxvZ2ljYWxUb3BMZWZ0OwotICAgICAgICBJbmxpbmVMYXlv
dXRVbml0IGF2YWlsYWJsZUxvZ2ljYWxXaWR0aCB7IDAgfTsKLSAgICAgICAgSW5saW5lTGF5b3V0
VW5pdCBsaW5lSGVpZ2h0IHsgMCB9OwotICAgICAgICBib29sIGxpbmVJc0NvbnN0cmFpbmVkQnlG
bG9hdCB7IGZhbHNlIH07Ci0gICAgfTsKLQogICAgIExpbmVCdWlsZGVyKGNvbnN0IElubGluZUZv
cm1hdHRpbmdDb250ZXh0Jik7CiAgICAgfkxpbmVCdWlsZGVyKCk7CiAKLSAgICB2b2lkIGluaXRp
YWxpemUoY29uc3QgQ29uc3RyYWludHMmKTsKKyAgICB2b2lkIG9wZW4oSW5saW5lTGF5b3V0VW5p
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGgpOwogICAgIHZvaWQgY2xvc2UoKTsKKyAgICB2b2lkIGNs
ZWFyQ29udGVudCgpOworCisgICAgdm9pZCBzZXRIYXNJbnRydXNpdmVGbG9hdChib29sIGhhc0lu
dHJ1c2l2ZUZsb2F0KSB7IG1faGFzSW50cnVzaXZlRmxvYXQgPSBoYXNJbnRydXNpdmVGbG9hdDsg
fQorICAgIGJvb2wgaGFzSW50cnVzaXZlRmxvYXQoKSBjb25zdCB7IHJldHVybiBtX2hhc0ludHJ1
c2l2ZUZsb2F0OyB9CiAKICAgICB2b2lkIGFwcGVuZChjb25zdCBJbmxpbmVJdGVtJiwgSW5saW5l
TGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpOwogICAgIHZvaWQgYXBwZW5kUGFydGlhbFRyYWlsaW5n
VGV4dEl0ZW0oY29uc3QgSW5saW5lVGV4dEl0ZW0mLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCwgYm9vbCBuZWVkc0h5cGVuKTsKLSAgICB2b2lkIGNsZWFyKCk7Ci0gICAgYm9vbCBpc1Zp
c3VhbGx5RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3guaXNDb25zaWRlcmVkRW1wdHko
KTsgfQotICAgIGJvb2wgaGFzSW50cnVzaXZlRmxvYXQoKSBjb25zdCB7IHJldHVybiBtX2hhc0lu
dHJ1c2l2ZUZsb2F0OyB9CisKKyAgICBib29sIGlzVmlzdWFsbHlFbXB0eSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNWaXN1YWxseUVtcHR5OyB9CisKICAgICBJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJs
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTG9naWNhbFdpZHRoIC0gY29udGVudExvZ2lj
YWxXaWR0aCgpOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jb250ZW50TG9naWNhbFdpZHRoOyB9CiAKICAgICBJbmxpbmVMYXlv
dXRVbml0IHRyaW1tYWJsZVRyYWlsaW5nV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3RyaW1tYWJs
ZVRyYWlsaW5nQ29udGVudC53aWR0aCgpOyB9CiAgICAgYm9vbCBpc1RyYWlsaW5nUnVuRnVsbHlU
cmltbWFibGUoKSBjb25zdCB7IHJldHVybiBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5pc1Ry
YWlsaW5nUnVuRnVsbHlUcmltbWFibGUoKTsgfQogCi0gICAgY29uc3QgTGluZUJveCYgbGluZUJv
eCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveDsgfQotICAgIExpbmVCb3gmIGxpbmVCb3goKSB7
IHJldHVybiBtX2xpbmVCb3g7IH0KICAgICB2b2lkIG1vdmVMb2dpY2FsTGVmdChJbmxpbmVMYXlv
dXRVbml0KTsKICAgICB2b2lkIG1vdmVMb2dpY2FsUmlnaHQoSW5saW5lTGF5b3V0VW5pdCk7Ci0g
ICAgdm9pZCBzZXRIYXNJbnRydXNpdmVGbG9hdCgpIHsgbV9oYXNJbnRydXNpdmVGbG9hdCA9IHRy
dWU7IH0KIAogICAgIHN0cnVjdCBSdW4gewogICAgICAgICBib29sIGlzVGV4dCgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZSA9PSBJbmxpbmVJdGVtOjpUeXBlOjpUZXh0OyB9CkBAIC0xNDQsMTEgKzEz
OSw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBSdW5MaXN0JiBydW5zKCkgY29uc3QgeyByZXR1cm4g
bV9ydW5zOyB9CiAgICAgUnVuTGlzdCYgcnVucygpIHsgcmV0dXJuIG1fcnVuczsgfQogCi0gICAg
c3RhdGljIEFzY2VudEFuZERlc2NlbnQgaGFsZkxlYWRpbmdNZXRyaWNzKGNvbnN0IEZvbnRNZXRy
aWNzJiwgSW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdodCk7Ci0KIHByaXZhdGU6Ci0g
ICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lQm94LmxvZ2ljYWxXaWR0aCgpOyB9Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50
TG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9saW5lQm94LmxvZ2ljYWxSaWdodCgpOyB9
CisgICAgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFJpZ2h0KCkgY29uc3QgeyByZXR1
cm4gbV9saW5lTG9naWNhbExlZnQgKyBtX2NvbnRlbnRMb2dpY2FsV2lkdGg7IH0KIAogICAgIHN0
cnVjdCBJbmxpbmVSdW5EZXRhaWxzIHsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2Fs
V2lkdGggeyAwIH07CkBAIC0xNjYsOCArMTU4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92
ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwogICAgIHZvaWQgdmlzdWFsbHlDb2xsYXBzZVBy
ZVdyYXBPdmVyZmxvd0NvbnRlbnQoKTsKIAotICAgIGJvb2wgaXNWaXN1YWxseU5vbkVtcHR5KGNv
bnN0IFJ1biYpIGNvbnN0OwotCisgICAgYm9vbCBpc1J1blZpc3VhbGx5Tm9uRW1wdHkoY29uc3Qg
UnVuJikgY29uc3Q7CiAgICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIGZvcm1hdHRp
bmdDb250ZXh0KCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50
IHsKQEAgLTE5Niw5ICsxODcsMTEgQEAgcHJpdmF0ZToKICAgICBjb25zdCBJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dCYgbV9pbmxpbmVGb3JtYXR0aW5nQ29udGV4dDsKICAgICBSdW5MaXN0IG1fcnVu
czsKICAgICBUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgbV90cmltbWFibGVUcmFpbGluZ0NvbnRl
bnQ7CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2xpbmVMb2dpY2FsTGVmdCB7IDAgfTsKICAgICBJ
bmxpbmVMYXlvdXRVbml0IG1fbGluZUxvZ2ljYWxXaWR0aCB7IDAgfTsKKyAgICBJbmxpbmVMYXlv
dXRVbml0IG1fY29udGVudExvZ2ljYWxXaWR0aCB7IDAgfTsKICAgICBib29sIG1faGFzSW50cnVz
aXZlRmxvYXQgeyBmYWxzZSB9OwotICAgIExpbmVCb3ggbV9saW5lQm94OworICAgIGJvb2wgbV9p
c1Zpc3VhbGx5RW1wdHkgeyB0cnVlIH07CiAgICAgT3B0aW9uYWw8Ym9vbD4gbV9saW5lSXNWaXN1
YWxseUVtcHR5QmVmb3JlVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50OwogICAgIGJvb2wgbV9zaG91
bGRJZ25vcmVUcmFpbGluZ0xldHRlclNwYWNpbmcgeyBmYWxzZSB9OwogI2lmIEFTU0VSVF9FTkFC
TEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9M
aW5lTGF5b3V0Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKaW5kZXggODAyYmVkZDhkNzMxNzUyNTgzM2E0NzQw
OGRmMTBkNTQxNzhiMjk5OC4uZDgwZjMwYzIxYzY4MDI4YjMzYTNhNDc5NGE5OGE5ZDc4ZTBhNGQ4
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGlu
ZUxheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcApAQCAtMzAwLDcgKzMwMCw3IEBAIExpbmVMYXlv
dXRDb250ZXh0OjpMaW5lQ29udGVudCBMaW5lTGF5b3V0Q29udGV4dDo6bGF5b3V0SW5saW5lQ29u
dGVudChMaW5lQnVpbGRlCiAgICAgICAgIC8vIDIuIEFwcGx5IGZsb2F0cyBhbmQgc2hyaW5rIHRo
ZSBhdmFpbGFibGUgaG9yaXpvbnRhbCBzcGFjZSBlLmcuIDxzcGFuPmludHJ1XzxkaXYgc3R5bGU9
ImZsb2F0OiBsZWZ0Ij48L2Rpdj5zaXZlX2Zsb2F0PC9zcGFuPi4KICAgICAgICAgLy8gMy4gQ2hl
Y2sgaWYgdGhlIGNvbnRlbnQgZml0cyB0aGUgbGluZSBhbmQgY29tbWl0IHRoZSBjb250ZW50IGFj
Y29yZGluZ2x5IChmdWxsLCBwYXJ0aWFsIG9yIG5vdCBjb21taXQgYXQgYWxsKS4KICAgICAgICAg
Ly8gNC4gUmV0dXJuIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIGVpdGhlciBieSBu
b3QgYmVpbmcgYWJsZSB0byBmaXQgbW9yZSBjb250ZW50IG9yIGJlY2F1c2Ugb2YgYW4gZXhwbGlj
aXQgbGluZSBicmVhay4KLSAgICAgICAgbmV4dENvbnRlbnRGb3JMaW5lKGxpbmVDYW5kaWRhdGUs
IGN1cnJlbnRJdGVtSW5kZXgsIGxheW91dFJhbmdlLCBwYXJ0aWFsTGVhZGluZ0NvbnRlbnRMZW5n
dGgsIGxpbmUuYXZhaWxhYmxlV2lkdGgoKSArIGxpbmUudHJpbW1hYmxlVHJhaWxpbmdXaWR0aCgp
LCBsaW5lLmxpbmVCb3goKS5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIG5leHRDb250ZW50Rm9y
TGluZShsaW5lQ2FuZGlkYXRlLCBjdXJyZW50SXRlbUluZGV4LCBsYXlvdXRSYW5nZSwgcGFydGlh
bExlYWRpbmdDb250ZW50TGVuZ3RoLCBsaW5lLmF2YWlsYWJsZVdpZHRoKCkgKyBsaW5lLnRyaW1t
YWJsZVRyYWlsaW5nV2lkdGgoKSwgbGluZS5jb250ZW50TG9naWNhbFdpZHRoKCkpOwogICAgICAg
ICAvLyBOb3cgY2hlY2sgaWYgd2UgY2FuIHB1dCB0aGlzIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQg
bGluZS4KICAgICAgICAgYXV0byByZXN1bHQgPSBoYW5kbGVGbG9hdHNBbmRJbmxpbmVDb250ZW50
KGxpbmVCcmVha2VyLCBsaW5lLCBsYXlvdXRSYW5nZSwgbGluZUNhbmRpZGF0ZSk7CiAgICAgICAg
IGNvbW1pdHRlZElubGluZUl0ZW1Db3VudCA9IHJlc3VsdC5jb21taXR0ZWRDb3VudC5pc1JldmVy
dCA/IHJlc3VsdC5jb21taXR0ZWRDb3VudC52YWx1ZSA6IGNvbW1pdHRlZElubGluZUl0ZW1Db3Vu
dCArIHJlc3VsdC5jb21taXR0ZWRDb3VudC52YWx1ZTsKQEAgLTQwNSw4ICs0MDUsNyBAQCB2b2lk
IExpbmVMYXlvdXRDb250ZXh0Ojpjb21taXRGbG9hdHMoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0
IExpbmVDYW5kaWRhdGUmIGxpbgogICAgICAgICAgICAgICAgIHJpZ2h0SW50cnVzaXZlRmxvYXRz
V2lkdGggKz0gZmxvYXRDYW5kaWRhdGUubG9naWNhbFdpZHRoOwogICAgICAgICB9CiAgICAgfQot
ICAgIGlmIChoYXNJbnRydXNpdmVGbG9hdCkKLSAgICAgICAgbGluZS5zZXRIYXNJbnRydXNpdmVG
bG9hdCgpOworICAgIGxpbmUuc2V0SGFzSW50cnVzaXZlRmxvYXQoaGFzSW50cnVzaXZlRmxvYXQp
OwogICAgIGlmIChsZWZ0SW50cnVzaXZlRmxvYXRzV2lkdGggfHwgcmlnaHRJbnRydXNpdmVGbG9h
dHNXaWR0aCkgewogICAgICAgICBpZiAobGVmdEludHJ1c2l2ZUZsb2F0c1dpZHRoKQogICAgICAg
ICAgICAgbGluZS5tb3ZlTG9naWNhbExlZnQobGVmdEludHJ1c2l2ZUZsb2F0c1dpZHRoKTsKQEAg
LTUwNSw3ICs1MDQsNyBAQCB2b2lkIExpbmVMYXlvdXRDb250ZXh0Ojpjb21taXRQYXJ0aWFsQ29u
dGVudChMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgTGluZUJyZWFrZQogc2l6ZV90IExpbmVMYXlv
dXRDb250ZXh0OjpyZWJ1aWxkTGluZShMaW5lQnVpbGRlciYgbGluZSwgY29uc3QgSW5saW5lSXRl
bVJhbmdlJiBsYXlvdXRSYW5nZSkKIHsKICAgICAvLyBDbGVhciB0aGUgbGluZSBhbmQgc3RhcnQg
YXBwZW5kaW5nIHRoZSBpbmxpbmUgaXRlbXMgY2xvc2luZyB3aXRoIHRoZSBsYXN0IHdyYXAgb3Bw
b3J0dW5pdHkgcnVuLgotICAgIGxpbmUuY2xlYXIoKTsKKyAgICBsaW5lLmNsZWFyQ29udGVudCgp
OwogICAgIGF1dG8gY3VycmVudEl0ZW1JbmRleCA9IGxheW91dFJhbmdlLnN0YXJ0OwogICAgIGF1
dG8gbG9naWNhbFJpZ2h0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07CiAgICAgaWYgKG1fcGFydGlh
bExlYWRpbmdUZXh0SXRlbSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407392</attachid>
            <date>2020-08-27 05:54:26 -0700</date>
            <delta_ts>2020-08-27 06:42:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215048-20200827055425.patch</filename>
            <type>text/plain</type>
            <size>27858</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzc3ZmU0NzA0OTg3NWJk
M2YxNjI4YjVhMjI1NTRlMThhNzM3OWNkZS4uNjg4ODkyYTYyZDhmOGVmNzcxMGJhMjg2NDg1NDNh
ZTA0YzhmMDYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDIwLTA4LTI2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBNb3ZlIExp
bmVCb3ggb3V0IG9mIExpbmVCdWlsZGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTUwNDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTaW5jZSBub25lIG9mIHRoZSBMaW5lQm94IHJlbGF0ZWQgb3BlcmF0
aW9ucyAoY29udGVudCBhbGlnbm1lbnQsIGxpbmUgc2l6aW5nIGV0YykgaXMgZG9uZSBkdXJpbmcg
bGluZSBidWlsZGluZywKKyAgICAgICAgd2UgZG9uJ3QgcmVhbGx5IG5lZWQgdG8gY29uc3RydWN0
IGEgTGluZUJveCB1bnRpbCBhZnRlciB3ZSBmaW5pc2hlZCBwbGFjaW5nIGFsbCB0aGUgcnVucyBv
biB0aGUgY3VycmVudCBsaW5lLgorICAgICAgICBJdCBlbmFibGVzIHVzIHRvIGRlY291cGxlIHRo
ZSBMaW5lQnVpbGRlciBhbmQgdGhlIExpbmVCb3guCisgICAgICAgIExldCB0aGUgTGluZUJ1aWxk
ZXIgcGxhY2UgdGhlIHJ1bnMgYW5kIGNvbXB1dGUgaG9yaXpvbnRhbCBnZW9tZXRyeSwgd2hpbGUg
TGluZUJveCB0YWtlcyBjYXJlIG9mIHRoZSBmaW5hbCBhbGlnbm1lbnQgb2YgdGhvc2UgcnVucy4g
CisKKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVDb250ZW50QWxpZ25lcjo6
YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZv
ckNvbnN0cmFpbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29uc3RyYWludHNGb3JMaW5lKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6SW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUpOgor
ICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0
Lmg6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0Nv
bnRleHRRdWlya3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpJbmxpbmVGb3JtYXR0
aW5nQ29udGV4dDo6UXVpcmtzOjppbml0aWFsTGluZUhlaWdodCBjb25zdCk6CisgICAgICAgICog
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94OjpoYWxmTGVhZGluZ01ldHJpY3MpOgorICAgICAgICAqIGxheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQnVpbGRlcjo6Y2xlYXJDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJ1aWxkZXI6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxk
ZXI6OnJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkxpbmVCdWlsZGVyOjp2aXN1YWxseUNvbGxhcHNlUHJlV3JhcE92ZXJmbG93Q29udGVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjptb3ZlTG9naWNhbExl
ZnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6YXBwZW5kV2l0aCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmROb25CcmVha2Fi
bGVTcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjphcHBlbmRJ
bmxpbmVDb250YWluZXJFbmQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRl
cjo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVp
bGRlcjo6YXBwZW5kTm9uUmVwbGFjZWRJbmxpbmVCb3gpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnVpbGRlcjo6aXNSdW5WaXN1YWxseU5vbkVtcHR5IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmluaXRpYWxpemUpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5IGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6Omhh
bGZMZWFkaW5nTWV0cmljcyk6IERlbGV0ZWQuCisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGlu
ZUJ1aWxkZXI6OnNldEhhc0ludHJ1c2l2ZUZsb2F0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6Omhhc0ludHJ1c2l2ZUZsb2F0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmlzVmlzdWFsbHlFbXB0eSBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWlsZGVyOjpjb250ZW50TG9naWNhbFdpZHRoIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJ1aWxkZXI6OmNvbnRlbnRMb2dpY2Fs
UmlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnVpbGRlcjo6bGlu
ZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCdWls
ZGVyOjpsaW5lQm94KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9MaW5lTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVM
YXlvdXRDb250ZXh0OjpsYXlvdXRJbmxpbmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eW91dDo6TGluZUxheW91dENvbnRleHQ6OmNvbW1pdEZsb2F0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkxpbmVMYXlvdXRDb250ZXh0OjpyZWJ1aWxkTGluZSk6CisKIDIwMjAtMDgtMjcg
IEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEFuaW1hdGlvbiBh
cmUgaW52YWxpZGF0aW5nIHRvbyBtdWNoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAKaW5kZXggMDM2ZWM1NjUyNWY0NWRkMjgwNjg5MGUzMTkyYjc1YjQ5NmU2ZDg3MC4uMmE4Mjkx
MTU3YjA4M2I2NDdkOWFiMzU1NDVmNzNkMWE3MWM0YjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0LmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIHZvaWQgTGluZUNvbnRlbnRBbGln
bmVyOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoKQogICAgICAgICAgICAgLy8gVmVydGlj
YWwgbWFyZ2lucywgcGFkZGluZ3MgYW5kIGJvcmRlcnMgZG9uJ3QgY29udHJpYnV0ZSB0byB0aGUg
bGluZSBoZWlnaHQuCiAgICAgICAgICAgICBhdXRvJiBmb250TWV0cmljcyA9IHN0eWxlLmZvbnRN
ZXRyaWNzKCk7CiAgICAgICAgICAgICBpZiAoc3R5bGUudmVydGljYWxBbGlnbigpID09IFZlcnRp
Y2FsQWxpZ246OkJhc2VsaW5lKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBoYWxmTGVhZGluZyA9
IExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoZm9udE1ldHJpY3MsIHN0eWxlLmNvbXB1
dGVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBhdXRvIGhhbGZMZWFkaW5nID0gTGlu
ZUJveDo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvbnRNZXRyaWNzLCBzdHlsZS5jb21wdXRlZExpbmVI
ZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAgLy8gQm90aCBoYWxmbGVhZGluZyBhc2NlbnQgYW5k
IGRlc2NlbnQgY291bGQgYmUgbmVnYXRpdmUgKHRhbGwgZm9udCB2cy4gc21hbGwgbGluZS1oZWln
aHQgdmFsdWUpCiAgICAgICAgICAgICAgICAgaWYgKGhhbGZMZWFkaW5nLmRlc2NlbnQgPiAwKQog
ICAgICAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVh
ZGluZy5kZXNjZW50KTsKQEAgLTQ3MCwxMyArNDcwLDE2IEBAIHZvaWQgSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlubGluZUl0ZW1zLCBMaW5lTGF5b3V0
Q29uCiAgICAgYXV0byBsaW5lTGF5b3V0Q29udGV4dCA9IExpbmVMYXlvdXRDb250ZXh0IHsgKnRo
aXMsIHJvb3QoKSwgaW5saW5lSXRlbXMgfTsKIAogICAgIHdoaWxlICghbmVlZHNMYXlvdXRSYW5n
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbGluZS5pbml0aWFsaXplKGNvbnN0cmFpbnRzRm9yTGlu
ZShjb25zdHJhaW50cy5ob3Jpem9udGFsLCBsaW5lTG9naWNhbFRvcCkpOworICAgICAgICBhdXRv
IGxpbmVDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzRm9yTGluZShjb25zdHJhaW50cy5ob3Jpem9u
dGFsLCBsaW5lTG9naWNhbFRvcCk7CisgICAgICAgIGxpbmUub3BlbihsaW5lQ29uc3RyYWludHMu
YXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKKyAgICAgICAgbGluZS5zZXRIYXNJbnRydXNpdmVGbG9h
dChsaW5lQ29uc3RyYWludHMubGluZUlzQ29uc3RyYWluZWRCeUZsb2F0KTsKICAgICAgICAgLy8g
VHVybiBwcmV2aW91cyBsaW5lJ3Mgb3ZlcmZsb3cgY29udGVudCBsZW5ndGggaW50byB0aGUgbmV4
dCBsaW5lJ3MgbGVhZGluZyBjb250ZW50IHBhcnRpYWwgbGVuZ3RoLgogICAgICAgICAvLyAic3Bb
PC1saW5lIGJyZWFrLT5dbGl0X2NvbnRlbnQiIC0+IG92ZXJmbG93IGxlbmd0aDogMTEgLT4gbGVh
ZGluZyBwYXJ0aWFsIGNvbnRlbnQgbGVuZ3RoOiAxMS4KICAgICAgICAgYXV0byBwYXJ0aWFsTGVh
ZGluZ0NvbnRlbnRMZW5ndGggPSBwcmV2aW91c0xpbmUgPyBwcmV2aW91c0xpbmUtPm92ZXJmbG93
Q29udGVudExlbmd0aCA6IFdURjo6bnVsbG9wdDsKICAgICAgICAgYXV0byBsaW5lQ29udGVudCA9
IGxpbmVMYXlvdXRDb250ZXh0LmxheW91dElubGluZUNvbnRlbnQobGluZSwgbmVlZHNMYXlvdXRS
YW5nZSwgcGFydGlhbExlYWRpbmdDb250ZW50TGVuZ3RoKTsKLSAgICAgICAgYXV0byYgbGluZUJv
eCA9IGxpbmUubGluZUJveCgpOworCiAgICAgICAgIGF1dG8gbGluZUNvbnRlbnRSYW5nZSA9IGxp
bmVDb250ZW50LmlubGluZUl0ZW1SYW5nZTsKKyAgICAgICAgYXV0byBsaW5lQm94ID0gTGluZUJv
eCB7IERpc3BsYXk6OklubGluZVJlY3QgeyBsaW5lQ29uc3RyYWludHMubG9naWNhbFRvcExlZnQs
IGxpbmUuY29udGVudExvZ2ljYWxXaWR0aCgpLCBsaW5lQ29uc3RyYWludHMubGluZUhlaWdodCB9
LCBMaW5lQm94OjpoYWxmTGVhZGluZ01ldHJpY3Mocm9vdCgpLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KSwgbGluZUNvbnN0cmFpbnRzLmxpbmVIZWlnaHQpIH07CiAKICAgICAgICAgLy8gRklYTUU6IFRo
aXMgaXMgdGVtcG9yYXJ5IGFuZCB3aWxsIGV2ZW50dWFsbHkgZ2V0IG1lcmdlZCB0byBMaW5lQm94
LgogICAgICAgICBhdXRvIGFsaWduTGluZUNvbnRlbnQgPSBbJl0gewpAQCAtNTIyLDExICs1MjUs
MTEgQEAgdm9pZCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVt
cyYgaW5saW5lSXRlbXMsIExpbmVMYXlvdXRDb24KICAgICAgICAgfTsKIAogICAgICAgICBhbGln
bkxpbmVDb250ZW50KCk7Ci0gICAgICAgIHNldERpc3BsYXlCb3hlc0ZvckxpbmUobGluZSwgbGlu
ZUNvbnRlbnQsIGNvbnN0cmFpbnRzLmhvcml6b250YWwpOworICAgICAgICBzZXREaXNwbGF5Qm94
ZXNGb3JMaW5lKGxpbmUsIGxpbmVCb3gsIGxpbmVDb250ZW50LCBjb25zdHJhaW50cy5ob3Jpem9u
dGFsKTsKIAogICAgICAgICBpZiAoIWxpbmVDb250ZW50UmFuZ2UuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICBBU1NFUlQobmVlZHNMYXlvdXRSYW5nZS5zdGFydCA8IGxpbmVDb250ZW50UmFuZ2Uu
ZW5kKTsKLSAgICAgICAgICAgIGxpbmVMb2dpY2FsVG9wID0gbGluZS5saW5lQm94KCkubG9naWNh
bEJvdHRvbSgpOworICAgICAgICAgICAgbGluZUxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2ljYWxC
b3R0b20oKTsKICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHRyYWlsaW5nIGNvbnRlbnQgaXMgcGFy
dGlhbCwgd2UgbmVlZCB0byByZXVzZSB0aGUgbGFzdCBJbmxpbmVUZXh0SXRlbS4KICAgICAgICAg
ICAgIGF1dG8gbGFzdElubGluZUl0ZW1OZWVkc1BhcnRpYWxMYXlvdXQgPSBsaW5lQ29udGVudC5w
YXJ0aWFsQ29udGVudC5oYXNWYWx1ZSgpOwogICAgICAgICAgICAgaWYgKGxhc3RJbmxpbmVJdGVt
TmVlZHNQYXJ0aWFsTGF5b3V0KSB7CkBAIC01NTAsNyArNTUzLDcgQEAgdm9pZCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6bGluZUxheW91dChJbmxpbmVJdGVtcyYgaW5saW5lSXRlbXMsIExpbmVM
YXlvdXRDb24KICAgICAgICAgQVNTRVJUKGxpbmUuaGFzSW50cnVzaXZlRmxvYXQoKSk7CiAgICAg
ICAgIC8vIE1vdmUgdGhlIG5leHQgbGluZSBiZWxvdyB0aGUgaW50cnVzaXZlIGZsb2F0LgogICAg
ICAgICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7IHJvb3QoKSwgKnRo
aXMsIGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUoKSB9OwotICAgICAgICBhdXRvIGZs
b2F0Q29uc3RyYWludHMgPSBmbG9hdGluZ0NvbnRleHQuY29uc3RyYWludHMobGluZUxvZ2ljYWxU
b3AsIHRvTGF5b3V0VW5pdChsaW5lLmxpbmVCb3goKS5sb2dpY2FsQm90dG9tKCkpKTsKKyAgICAg
ICAgYXV0byBmbG9hdENvbnN0cmFpbnRzID0gZmxvYXRpbmdDb250ZXh0LmNvbnN0cmFpbnRzKGxp
bmVMb2dpY2FsVG9wLCB0b0xheW91dFVuaXQobGluZUJveC5sb2dpY2FsQm90dG9tKCkpKTsKICAg
ICAgICAgQVNTRVJUKGZsb2F0Q29uc3RyYWludHMubGVmdCB8fCBmbG9hdENvbnN0cmFpbnRzLnJp
Z2h0KTsKICAgICAgICAgc3RhdGljIGF1dG8gaW5pZml0ZVBvaW50ID0gUG9pbnRJbkNvbnRleHRS
b290OjptYXgoKTsKICAgICAgICAgLy8gSW4gY2FzZSBvZiBsZWZ0IGFuZCByaWdodCBjb25zdHJh
aW50cywgd2UgbmVlZCB0byBwaWNrIHRoZSBvbmUgdGhhdCdzIGNsb3NlciB0byB0aGUgY3VycmVu
dCBsaW5lLgpAQCAtNjI2LDExICs2MjksMTEgQEAgSW5saW5lTGF5b3V0VW5pdCBJbmxpbmVGb3Jt
YXR0aW5nQ29udGV4dDo6Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aEZvckNvbnN0cmFpbnQoSW4KICAg
ICBhdXRvIGxheW91dFJhbmdlID0gTGluZUxheW91dENvbnRleHQ6OklubGluZUl0ZW1SYW5nZSB7
IDAgLCBpbmxpbmVJdGVtcy5zaXplKCkgfTsKICAgICB3aGlsZSAoIWxheW91dFJhbmdlLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBPbmx5IHRoZSBob3JpenRvbmFsIGF2YWlsYWJsZSB3aWR0aCBp
cyBjb25zdHJhaW5lZCB3aGVuIGNvbXB1dGluZyBpbnRyaW5zaWMgd2lkdGguCi0gICAgICAgIGxp
bmUuaW5pdGlhbGl6ZShMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgeyB7IH0sIGF2YWlsYWJsZVdp
ZHRoLCB7IH0sIGZhbHNlIH0pOworICAgICAgICBsaW5lLm9wZW4oYXZhaWxhYmxlV2lkdGgpOwog
ICAgICAgICBhdXRvIGxpbmVDb250ZW50ID0gbGluZUxheW91dENvbnRleHQubGF5b3V0SW5saW5l
Q29udGVudChsaW5lLCBsYXlvdXRSYW5nZSwgeyB9KTsKICAgICAgICAgbGF5b3V0UmFuZ2Uuc3Rh
cnQgPSBsaW5lQ29udGVudC5pbmxpbmVJdGVtUmFuZ2UuZW5kOwogICAgICAgICAvLyBGSVhNRTog
VXNlIGxpbmUgbG9naWNhbCBsZWZ0IGFuZCByaWdodCB0byB0YWtlIGZsb2F0cyBpbnRvIGFjY291
bnQuCi0gICAgICAgIG1heGltdW1MaW5lV2lkdGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRo
LCBsaW5lLmxpbmVCb3goKS5sb2dpY2FsV2lkdGgoKSk7CisgICAgICAgIG1heGltdW1MaW5lV2lk
dGggPSBzdGQ6Om1heChtYXhpbXVtTGluZVdpZHRoLCBsaW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgo
KSk7CiAgICAgfQogICAgIHJldHVybiBtYXhpbXVtTGluZVdpZHRoOwogfQpAQCAtNzY0LDcgKzc2
Nyw3IEBAIHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmNvbGxlY3RJbmxpbmVDb250ZW50
SWZOZWVkZWQoKQogICAgIH0KIH0KIAotTGluZUJ1aWxkZXI6OkNvbnN0cmFpbnRzIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxUb3ApCitJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6TGluZUNvbnN0cmFpbnRzIElubGluZUZv
cm1hdHRpbmdDb250ZXh0Ojpjb25zdHJhaW50c0ZvckxpbmUoY29uc3QgSG9yaXpvbnRhbENvbnN0
cmFpbnRzJiBob3Jpem9udGFsQ29uc3RyYWludHMsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxUb3ApCiB7CiAgICAgYXV0byBsaW5lTG9naWNhbExlZnQgPSBob3Jpem9udGFsQ29uc3RyYWlu
dHMubG9naWNhbExlZnQ7CiAgICAgYXV0byBsaW5lTG9naWNhbFJpZ2h0ID0gbGluZUxvZ2ljYWxM
ZWZ0ICsgaG9yaXpvbnRhbENvbnN0cmFpbnRzLmxvZ2ljYWxXaWR0aDsKQEAgLTgzMSwxMyArODM0
LDEyIEBAIExpbmVCdWlsZGVyOjpDb25zdHJhaW50cyBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6
Y29uc3RyYWludHNGb3JMaW5lKGNvbnN0IEhvcml6CiAgICAgICAgIHJldHVybiBnZW9tZXRyeSgp
LmNvbXB1dGVkVGV4dEluZGVudChyb290LCBob3Jpem9udGFsQ29uc3RyYWludHMpLnZhbHVlT3Io
SW5saW5lTGF5b3V0VW5pdCB7IH0pOwogICAgIH07CiAgICAgbGluZUxvZ2ljYWxMZWZ0ICs9IGNv
bXB1dGVkVGV4dEluZGVudCgpOwotICAgIHJldHVybiBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMg
eyB7IGxpbmVMb2dpY2FsTGVmdCwgbGluZUxvZ2ljYWxUb3AgfSwgbGluZUxvZ2ljYWxSaWdodCAt
IGxpbmVMb2dpY2FsTGVmdCwgaW5pdGlhbExpbmVIZWlnaHQsIGxpbmVJc0NvbnN0cmFpbmVkQnlG
bG9hdCB9OworICAgIHJldHVybiBMaW5lQ29uc3RyYWludHMgeyB7IGxpbmVMb2dpY2FsTGVmdCwg
bGluZUxvZ2ljYWxUb3AgfSwgbGluZUxvZ2ljYWxSaWdodCAtIGxpbmVMb2dpY2FsTGVmdCwgaW5p
dGlhbExpbmVIZWlnaHQsIGxpbmVJc0NvbnN0cmFpbmVkQnlGbG9hdCB9OwogfQogCi12b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpzZXREaXNwbGF5Qm94ZXNGb3JMaW5lKGNvbnN0IExpbmVC
dWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmIGxpbmVD
b250ZW50LCBjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50
cykKK3ZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OnNldERpc3BsYXlCb3hlc0ZvckxpbmUo
Y29uc3QgTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExpbmVCb3gmIGxpbmVCb3gsICBjb25zdCBM
aW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQmIGxpbmVDb250ZW50LCBjb25zdCBIb3Jpem9u
dGFsQ29uc3RyYWludHMmIGhvcml6b250YWxDb25zdHJhaW50cykKIHsKICAgICBhdXRvJiBmb3Jt
YXR0aW5nU3RhdGUgPSB0aGlzLT5mb3JtYXR0aW5nU3RhdGUoKTsKLSAgICBhdXRvJiBsaW5lQm94
ID0gbGluZS5saW5lQm94KCk7CiAKICAgICBpZiAoIWxpbmVDb250ZW50LmZsb2F0cy5pc0VtcHR5
KCkpIHsKICAgICAgICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyBy
b290KCksICp0aGlzLCBmb3JtYXR0aW5nU3RhdGUuZmxvYXRpbmdTdGF0ZSgpIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5s
aW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCAzNjQ0NTQ3YjMwZTRlZDQxMzgxM2ZhYzFmYWE0
MmRmMjUxOGFlNjZkLi4wM2U0ZmI2YThhYTZjODViNjkwMDM5NWUzZTk3YmM0ZTkxNjI4ZmFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTg3LDggKzg3LDE0IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBjb21wdXRlV2lkdGhBbmRNYXJnaW4oY29uc3QgQm94JiwgY29uc3QgSG9y
aXpvbnRhbENvbnN0cmFpbnRzJik7CiAKICAgICB2b2lkIGNvbGxlY3RJbmxpbmVDb250ZW50SWZO
ZWVkZWQoKTsKLSAgICBMaW5lQnVpbGRlcjo6Q29uc3RyYWludHMgY29uc3RyYWludHNGb3JMaW5l
KGNvbnN0IEhvcml6b250YWxDb25zdHJhaW50cyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2lj
YWxUb3ApOwotICAgIHZvaWQgc2V0RGlzcGxheUJveGVzRm9yTGluZShjb25zdCBMaW5lQnVpbGRl
ciYsIGNvbnN0IExpbmVMYXlvdXRDb250ZXh0OjpMaW5lQ29udGVudCYsIGNvbnN0IEhvcml6b250
YWxDb25zdHJhaW50cyYpOworICAgIHN0cnVjdCBMaW5lQ29uc3RyYWludHMgeworICAgICAgICBJ
bmxpbmVMYXlvdXRQb2ludCBsb2dpY2FsVG9wTGVmdDsKKyAgICAgICAgSW5saW5lTGF5b3V0VW5p
dCBhdmFpbGFibGVMb2dpY2FsV2lkdGggeyAwIH07CisgICAgICAgIElubGluZUxheW91dFVuaXQg
bGluZUhlaWdodCB7IDAgfTsKKyAgICAgICAgYm9vbCBsaW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQg
eyBmYWxzZSB9OworICAgIH07CisgICAgTGluZUNvbnN0cmFpbnRzIGNvbnN0cmFpbnRzRm9yTGlu
ZShjb25zdCBIb3Jpem9udGFsQ29uc3RyYWludHMmLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dp
Y2FsVG9wKTsKKyAgICB2b2lkIHNldERpc3BsYXlCb3hlc0ZvckxpbmUoY29uc3QgTGluZUJ1aWxk
ZXImLCBjb25zdCBMaW5lQm94JiwgY29uc3QgTGluZUxheW91dENvbnRleHQ6OkxpbmVDb250ZW50
JiwgY29uc3QgSG9yaXpvbnRhbENvbnN0cmFpbnRzJik7CiAgICAgdm9pZCBpbnZhbGlkYXRlRm9y
bWF0dGluZ1N0YXRlKGNvbnN0IEludmFsaWRhdGlvblN0YXRlJik7CiAKICAgICBjb25zdCBJbmxp
bmVGb3JtYXR0aW5nU3RhdGUmIGZvcm1hdHRpbmdTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIGRvd25j
YXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4oRm9ybWF0dGluZ0NvbnRleHQ6OmZvcm1hdHRpbmdT
dGF0ZSgpKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1h
dHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHRRdWlya3MuY3Bw
CmluZGV4IDZhYmE0MDBlZmMxMGRmMDFmODY4Zjc3OWRjZTQ2Y2JjYzRkZTRhYmMuLmJhNzU1ZDkz
MTFhMTNlNTJjYmEyN2Q0Yjc4YjgzMTNjMmMwY2ZkZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0UXVpcmtz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVG
b3JtYXR0aW5nQ29udGV4dFF1aXJrcy5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSW5saW5lTGF5b3V0
VW5pdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6UXVpcmtzOjppbml0aWFsTGluZUhlaWdodChj
b25zdCBDb250YWkKICAgICAvLyBOZWdhdGl2ZSBsaW5lSGVpZ2h0IHZhbHVlIG1lYW5zIHRoZSBs
aW5lLWhlaWdodCBpcyBub3Qgc2V0CiAgICAgaWYgKGxheW91dFN0YXRlKCkuaW5Ob1F1aXJrc01v
ZGUoKSB8fCAhZm9ybWF0dGluZ1Jvb3Quc3R5bGUoKS5saW5lSGVpZ2h0KCkuaXNOZWdhdGl2ZSgp
KQogICAgICAgICByZXR1cm4gY29tcHV0ZWRMaW5lSGVpZ2h0OwotICAgIHJldHVybiBMaW5lQnVp
bGRlcjo6aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJp
Y3MoKSwgY29tcHV0ZWRMaW5lSGVpZ2h0KS5oZWlnaHQoKTsKKyAgICByZXR1cm4gTGluZUJveDo6
aGFsZkxlYWRpbmdNZXRyaWNzKGZvcm1hdHRpbmdSb290LnN0eWxlKCkuZm9udE1ldHJpY3MoKSwg
Y29tcHV0ZWRMaW5lSGVpZ2h0KS5oZWlnaHQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5oCmluZGV4IDY1
YmVlZjNlYmU3YjMwN2M1ZWM3MmM0NjQyOGQzZmE4ZWM5ZmVlMDQuLjU2MTcwNTBiMmY4YmMwMmY3
ODhmZTAxNGUxZDgyOTExY2I5MDJmY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKQEAgLTExNCw2ICsxMTQsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc0NvbnNpZGVyZWRFbXB0eSgpIHsgbV9pc0NvbnNpZGVy
ZWRFbXB0eSA9IHRydWU7IH0KICAgICB2b2lkIHNldElzQ29uc2lkZXJlZE5vbkVtcHR5KCkgeyBt
X2lzQ29uc2lkZXJlZEVtcHR5ID0gZmFsc2U7IH0KIAorICAgIHN0YXRpYyBBc2NlbnRBbmREZXNj
ZW50IGhhbGZMZWFkaW5nTWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVu
aXQgbGluZUxvZ2ljYWxIZWlnaHQpOworCiBwcml2YXRlOgogI2lmIEFTU0VSVF9FTkFCTEVECiAg
ICAgYm9vbCBtX2hhc1ZhbGlkQWxpZ25tZW50QmFzZWxpbmUgeyBmYWxzZSB9OwpAQCAtMTg2LDYg
KzE4OCwxOCBAQCBpbmxpbmUgdm9pZCBMaW5lQm94OjpyZXNldEFsaWdubWVudEJhc2VsaW5lKCkK
ICAgICBtX3Jvb3RJbmxpbmVCb3guYXNjZW50QW5kRGVzY2VudC5hc2NlbnQgPSB7IH07CiB9CiAK
K2lubGluZSBBc2NlbnRBbmREZXNjZW50IExpbmVCb3g6OmhhbGZMZWFkaW5nTWV0cmljcyhjb25z
dCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxI
ZWlnaHQpCit7CisgICAgYXV0byBhc2NlbnQgPSBmb250TWV0cmljcy5hc2NlbnQoKTsKKyAgICBh
dXRvIGRlc2NlbnQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7CisgICAgLy8gMTAuOC4xIExlYWRp
bmcgYW5kIGhhbGYtbGVhZGluZworICAgIGF1dG8gaGFsZkxlYWRpbmcgPSAobGluZUxvZ2ljYWxI
ZWlnaHQgLSAoYXNjZW50ICsgZGVzY2VudCkpIC8gMjsKKyAgICAvLyBJbmxpbmUgdHJlZSBoZWln
aHQgaXMgYWxsIGludGVnZXIgYmFzZWQuCisgICAgYXV0byBhZGp1c3RlZEFzY2VudCA9IHN0ZDo6
bWF4PElubGluZUxheW91dFVuaXQ+KGZsb29yZihhc2NlbnQgKyBoYWxmTGVhZGluZyksIDApOwor
ICAgIGF1dG8gYWRqdXN0ZWREZXNjZW50ID0gc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4oY2Vp
bGYoZGVzY2VudCArIGhhbGZMZWFkaW5nKSwgMCk7CisgICAgcmV0dXJuIHsgYWRqdXN0ZWRBc2Nl
bnQsIGFkanVzdGVkRGVzY2VudCB9OworfQorCiB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNw
cAppbmRleCA2ZjNmNGUyZTVhMTdlOGI1Y2FlMmY1OWVhY2I3OTBhNDlmMGIwYWFmLi42NDUyNjYx
Mzc4ZjY2ZmUzYmY1ZTZhNDYzNWEyNDQ2MWNiMGVhYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIu
Y3BwCkBAIC01NCwyNCArNTQsMTkgQEAgTGluZUJ1aWxkZXI6On5MaW5lQnVpbGRlcigpCiB7CiB9
CiAKLXZvaWQgTGluZUJ1aWxkZXI6OmluaXRpYWxpemUoY29uc3QgQ29uc3RyYWludHMmIGNvbnN0
cmFpbnRzKQotewotICAgIG1fbGluZUxvZ2ljYWxXaWR0aCA9IGNvbnN0cmFpbnRzLmF2YWlsYWJs
ZUxvZ2ljYWxXaWR0aDsKLSAgICBtX2hhc0ludHJ1c2l2ZUZsb2F0ID0gY29uc3RyYWludHMubGlu
ZUlzQ29uc3RyYWluZWRCeUZsb2F0OwotICAgIGF1dG8gaW5pdGlhbExpbmVIZWlnaHQgPSBjb25z
dHJhaW50cy5saW5lSGVpZ2h0OwotICAgIGF1dG8gbGluZVJlY3QgPSBEaXNwbGF5OjpJbmxpbmVS
ZWN0IHsgY29uc3RyYWludHMubG9naWNhbFRvcExlZnQsIDBfbHUsIGluaXRpYWxMaW5lSGVpZ2h0
IH07Ci0gICAgYXV0byBhc2NlbnRBbmREZXNjZW50ID0gTGluZUJ1aWxkZXI6OmhhbGZMZWFkaW5n
TWV0cmljcyhmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKS5zdHlsZSgpLmZvbnRNZXRyaWNzKCks
IGluaXRpYWxMaW5lSGVpZ2h0KTsKLSAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsgbGluZVJlY3Qs
IGFzY2VudEFuZERlc2NlbnQgfTsKLSAgICBjbGVhcigpOwordm9pZCBMaW5lQnVpbGRlcjo6b3Bl
bihJbmxpbmVMYXlvdXRVbml0IGF2YWlsYWJsZVdpZHRoKQoreworICAgIG1fbGluZUxvZ2ljYWxX
aWR0aCA9IGF2YWlsYWJsZVdpZHRoOworICAgIGNsZWFyQ29udGVudCgpOwogI2lmIEFTU0VSVF9F
TkFCTEVECiAgICAgbV9pc0Nsb3NlZCA9IGZhbHNlOwogI2VuZGlmCiB9CiAKLXZvaWQgTGluZUJ1
aWxkZXI6OmNsZWFyKCkKK3ZvaWQgTGluZUJ1aWxkZXI6OmNsZWFyQ29udGVudCgpCiB7Ci0gICAg
bV9saW5lQm94LnNldExvZ2ljYWxXaWR0aCh7IH0pOwotICAgIG1fbGluZUJveC5zZXRJc0NvbnNp
ZGVyZWRFbXB0eSgpOworICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCA9IHsgfTsKKyAgICBtX2lz
VmlzdWFsbHlFbXB0eSA9IHRydWU7CiAgICAgbV9ydW5zLmNsZWFyKCk7CiAgICAgbV90cmltbWFi
bGVUcmFpbGluZ0NvbnRlbnQucmVzZXQoKTsKICAgICBtX2xpbmVJc1Zpc3VhbGx5RW1wdHlCZWZv
cmVUcmltbWFibGVUcmFpbGluZ0NvbnRlbnQgPSB7IH07CkBAIC04Miw4ICs3Nyw2IEBAIHZvaWQg
TGluZUJ1aWxkZXI6OmNsb3NlKCkKICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIG1faXNDbG9zZWQg
PSB0cnVlOwogI2VuZGlmCi0gICAgLy8gMS4gUmVtb3ZlIHRyaW1tYWJsZSB0cmFpbGluZyBjb250
ZW50LgotICAgIC8vIDIuIEFsaWduIG1lcmdlZCBydW5zIGJvdGggdmVydGljYWxseSBhbmQgaG9y
aXpvbnRhbGx5LgogICAgIHJlbW92ZVRyYWlsaW5nVHJpbW1hYmxlQ29udGVudCgpOwogICAgIHZp
c3VhbGx5Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dDb250ZW50KCk7CiB9CkBAIC0xMDgsMjEgKzEw
MSwyMCBAQCB2b2lkIExpbmVCdWlsZGVyOjpyZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQo
KQogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9saW5lQm94LnNocmlua0hvcml6b250YWxseSht
X3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5yZW1vdmUoKSk7CisgICAgbV9jb250ZW50TG9naWNh
bFdpZHRoIC09IG1fdHJpbW1hYmxlVHJhaWxpbmdDb250ZW50LnJlbW92ZSgpOwogICAgIC8vIElm
IHdlIHJlbW92ZWQgdGhlIGZpcnN0IHZpc2libGUgcnVuIG9uIHRoZSBsaW5lLCB3ZSBuZWVkIHRv
IHJlLWNoZWNrIHRoZSB2aXNpYmlsaXR5IHN0YXR1cy4KICAgICBpZiAobV9saW5lSXNWaXN1YWxs
eUVtcHR5QmVmb3JlVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50KSB7CiAgICAgICAgIC8vIEp1c3Qg
YmVjYXVzZSB0aGUgbGluZSB3YXMgdmlzdWFsbHkgZW1wdHkgYmVmb3JlIHRoZSByZW1vdmVkIGNv
bnRlbnQsIGl0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gaXQgaXMgc3RpbGwgdmlzdWFsbHkg
ZW1wdHkuCiAgICAgICAgIC8vIDxzcGFuPiAgPC9zcGFuPjxzcGFuIHN0eWxlPSJwYWRkaW5nLWxl
ZnQ6IDEwcHgiPjwvc3Bhbj4gIDwtIG5vbi1lbXB0eQogICAgICAgICBhdXRvIGxpbmVJc1Zpc3Vh
bGx5RW1wdHkgPSBbJl0gewogICAgICAgICAgICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bnMpIHsK
LSAgICAgICAgICAgICAgICBpZiAoaXNWaXN1YWxseU5vbkVtcHR5KHJ1bikpCisgICAgICAgICAg
ICAgICAgaWYgKGlzUnVuVmlzdWFsbHlOb25FbXB0eShydW4pKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgfTsKICAgICAgICAgLy8gV2UgY291bGQgb25seSBnbyBmcm9tIHZpc3VhbGx5IG5v
biBlbXB0eSAtPiB0byB2aXN1YWxseSBlbXB0eS4gVHJpbW1lZCBydW5zIHNob3VsZCBuZXZlciBt
YWtlIHRoZSBsaW5lIHZpc2libGUuCi0gICAgICAgIGlmIChsaW5lSXNWaXN1YWxseUVtcHR5KCkp
Ci0gICAgICAgICAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRlcmVkRW1wdHkoKTsKKyAgICAgICAg
bV9pc1Zpc3VhbGx5RW1wdHkgPSBsaW5lSXNWaXN1YWxseUVtcHR5KCk7CiAgICAgICAgIG1fbGlu
ZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29udGVudCA9IHsgfTsKICAg
ICB9CiB9CkBAIC0xNjMsNyArMTU1LDcgQEAgdm9pZCBMaW5lQnVpbGRlcjo6dmlzdWFsbHlDb2xs
YXBzZVByZVdyYXBPdmVyZmxvd0NvbnRlbnQoKQogICAgICAgICBpZiAob3ZlcmZsb3dXaWR0aCA8
PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fbGluZUJveC5zaHJpbmtIb3Jp
em9udGFsbHkodHJpbW1lZENvbnRlbnRXaWR0aCk7CisgICAgbV9jb250ZW50TG9naWNhbFdpZHRo
IC09IHRyaW1tZWRDb250ZW50V2lkdGg7CiB9CiAKIHZvaWQgTGluZUJ1aWxkZXI6Om1vdmVMb2dp
Y2FsTGVmdChJbmxpbmVMYXlvdXRVbml0IGRlbHRhKQpAQCAtMTcxLDcgKzE2Myw3IEBAIHZvaWQg
TGluZUJ1aWxkZXI6Om1vdmVMb2dpY2FsTGVmdChJbmxpbmVMYXlvdXRVbml0IGRlbHRhKQogICAg
IGlmICghZGVsdGEpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoZGVsdGEgPiAwKTsKLSAg
ICBtX2xpbmVCb3gubW92ZUhvcml6b250YWxseShkZWx0YSk7CisgICAgbV9saW5lTG9naWNhbExl
ZnQgKz0gZGVsdGE7CiAgICAgbV9saW5lTG9naWNhbFdpZHRoIC09IGRlbHRhOwogfQogCkBAIC0y
MTAsMTQgKzIwMiwxNCBAQCB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRXaXRoKGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIGNvbnN0IElubGluZVJ1bkRldGFpbAogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKIAogICAgIC8vIENoZWNrIGlmIHRoaXMgZnJlc2hseSBhcHBlbmRlZCBj
b250ZW50IG1ha2VzIHRoZSBsaW5lIHZpc3VhbGx5IG5vbi1lbXB0eS4KLSAgICBpZiAobV9saW5l
Qm94LmlzQ29uc2lkZXJlZEVtcHR5KCkgJiYgIW1fcnVucy5pc0VtcHR5KCkgJiYgaXNWaXN1YWxs
eU5vbkVtcHR5KG1fcnVucy5sYXN0KCkpKQotICAgICAgICBtX2xpbmVCb3guc2V0SXNDb25zaWRl
cmVkTm9uRW1wdHkoKTsKKyAgICBpZiAobV9pc1Zpc3VhbGx5RW1wdHkgJiYgIW1fcnVucy5pc0Vt
cHR5KCkgJiYgaXNSdW5WaXN1YWxseU5vbkVtcHR5KG1fcnVucy5sYXN0KCkpKQorICAgICAgICBt
X2lzVmlzdWFsbHlFbXB0eSA9IGZhbHNlOwogfQogCiB2b2lkIExpbmVCdWlsZGVyOjphcHBlbmRO
b25CcmVha2FibGVTcGFjZShjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBJbmxpbmVMYXlv
dXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCkKIHsKICAg
ICBtX3J1bnMuYXBwZW5kKHsgaW5saW5lSXRlbSwgbG9naWNhbExlZnQsIGxvZ2ljYWxXaWR0aCB9
KTsKLSAgICBtX2xpbmVCb3guZXhwYW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxXaWR0aCk7CisgICAg
bV9jb250ZW50TG9naWNhbFdpZHRoICs9IGxvZ2ljYWxXaWR0aDsKIH0KIAogdm9pZCBMaW5lQnVp
bGRlcjo6YXBwZW5kSW5saW5lQ29udGFpbmVyU3RhcnQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5l
SXRlbSwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgpCkBAIC0yMzIsNyArMjI0LDcgQEAg
dm9pZCBMaW5lQnVpbGRlcjo6YXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKGNvbnN0IElubGluZUl0
ZW0mIGlubGluZUl0ZW0sIElubGluZUwKICAgICBhdXRvIHJlbW92ZVRyYWlsaW5nTGV0dGVyU3Bh
Y2luZyA9IFsmXSB7CiAgICAgICAgIGlmICghbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuaXNU
cmFpbGluZ1J1blBhcnRpYWxseVRyaW1tYWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBtX2xpbmVCb3guc2hyaW5rSG9yaXpvbnRhbGx5KG1fdHJpbW1hYmxlVHJhaWxpbmdDb250
ZW50LnJlbW92ZVBhcnRpYWxseVRyaW1tYWJsZUNvbnRlbnQoKSk7CisgICAgICAgIG1fY29udGVu
dExvZ2ljYWxXaWR0aCAtPSBtX3RyaW1tYWJsZVRyYWlsaW5nQ29udGVudC5yZW1vdmVQYXJ0aWFs
bHlUcmltbWFibGVDb250ZW50KCk7CiAgICAgfTsKICAgICAvLyBQcmV2ZW50IHRyYWlsaW5nIGxl
dHRlci1zcGFjaW5nIGZyb20gc3BpbGxpbmcgb3V0IG9mIHRoZSBpbmxpbmUgY29udGFpbmVyLgog
ICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtdGV4dC0zLyNsZXR0ZXItc3BhY2lu
Zy1wcm9wZXJ0eSBTZWUgZXhhbXBsZSAyMS4KQEAgLTI4MSw5ICsyNzMsNyBAQCB2b2lkIExpbmVC
dWlsZGVyOjphcHBlbmRUZXh0Q29udGVudChjb25zdCBJbmxpbmVUZXh0SXRlbSYgaW5saW5lVGV4
dEl0ZW0sIElubGluZQogICAgIH0KICAgICBpZiAoaW5saW5lVGV4dEl0ZW1OZWVkc05ld1J1bikK
ICAgICAgICAgbV9ydW5zLmFwcGVuZCh7IGlubGluZVRleHRJdGVtLCBjb250ZW50TG9naWNhbFdp
ZHRoKCksIGxvZ2ljYWxXaWR0aCwgbmVlZHNIeXBoZW4gfSk7Ci0KLSAgICBtX2xpbmVCb3guZXhw
YW5kSG9yaXpvbnRhbGx5KGxvZ2ljYWxXaWR0aCk7Ci0KKyAgICBtX2NvbnRlbnRMb2dpY2FsV2lk
dGggKz0gbG9naWNhbFdpZHRoOwogICAgIC8vIFNldCB0aGUgdHJhaWxpbmcgdHJpbW1hYmxlIGNv
bnRlbnQuCiAgICAgaWYgKGlubGluZVRleHRJdGVtLmlzV2hpdGVzcGFjZSgpICYmICFUZXh0VXRp
bDo6c2hvdWxkUHJlc2VydmVUcmFpbGluZ1doaXRlc3BhY2UoaW5saW5lVGV4dEl0ZW0uc3R5bGUo
KSkpIHsKICAgICAgICAgbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQuYWRkRnVsbHlUcmltbWFi
bGVDb250ZW50KG1fcnVucy5zaXplKCkgLSAxLCBsb2dpY2FsV2lkdGgpOwpAQCAtMzA0LDcgKzI5
NCw3IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIElubGluCiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dCgpLmdlb21ldHJ5Rm9yQm94KGxheW91dEJveCk7CiAgICAgYXV0byBo
b3Jpem9udGFsTWFyZ2luID0gYm94R2VvbWV0cnkuaG9yaXpvbnRhbE1hcmdpbigpOwogICAgIG1f
cnVucy5hcHBlbmQoeyBpbmxpbmVJdGVtLCBjb250ZW50TG9naWNhbFdpZHRoKCkgKyBob3Jpem9u
dGFsTWFyZ2luLnN0YXJ0LCBsb2dpY2FsV2lkdGggfSk7Ci0gICAgbV9saW5lQm94LmV4cGFuZEhv
cml6b250YWxseShsb2dpY2FsV2lkdGggKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpv
bnRhbE1hcmdpbi5lbmQpOworICAgIG1fY29udGVudExvZ2ljYWxXaWR0aCArPSBsb2dpY2FsV2lk
dGggKyBob3Jpem9udGFsTWFyZ2luLnN0YXJ0ICsgaG9yaXpvbnRhbE1hcmdpbi5lbmQ7CiAgICAg
bV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQucmVzZXQoKTsKIH0KIApAQCAtMzI0LDcgKzMxNCw3
IEBAIHZvaWQgTGluZUJ1aWxkZXI6OmFwcGVuZExpbmVCcmVhayhjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtKQogICAgIG1fcnVucy5hcHBlbmQoeyBkb3duY2FzdDxJbmxpbmVTb2Z0TGluZUJy
ZWFrSXRlbT4oaW5saW5lSXRlbSksIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSB9KTsKIH0KIAotYm9v
bCBMaW5lQnVpbGRlcjo6aXNWaXN1YWxseU5vbkVtcHR5KGNvbnN0IFJ1biYgcnVuKSBjb25zdAor
Ym9vbCBMaW5lQnVpbGRlcjo6aXNSdW5WaXN1YWxseU5vbkVtcHR5KGNvbnN0IFJ1biYgcnVuKSBj
b25zdAogewogICAgIGlmIChydW4uaXNUZXh0KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAt
MzU0LDE4ICszNDQsNiBAQCBib29sIExpbmVCdWlsZGVyOjppc1Zpc3VhbGx5Tm9uRW1wdHkoY29u
c3QgUnVuJiBydW4pIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1Bc2NlbnRBbmREZXNj
ZW50IExpbmVCdWlsZGVyOjpoYWxmTGVhZGluZ01ldHJpY3MoY29uc3QgRm9udE1ldHJpY3MmIGZv
bnRNZXRyaWNzLCBJbmxpbmVMYXlvdXRVbml0IGxpbmVMb2dpY2FsSGVpZ2h0KQotewotICAgIGF1
dG8gYXNjZW50ID0gZm9udE1ldHJpY3MuYXNjZW50KCk7Ci0gICAgYXV0byBkZXNjZW50ID0gZm9u
dE1ldHJpY3MuZGVzY2VudCgpOwotICAgIC8vIDEwLjguMSBMZWFkaW5nIGFuZCBoYWxmLWxlYWRp
bmcKLSAgICBhdXRvIGhhbGZMZWFkaW5nID0gKGxpbmVMb2dpY2FsSGVpZ2h0IC0gKGFzY2VudCAr
IGRlc2NlbnQpKSAvIDI7Ci0gICAgLy8gSW5saW5lIHRyZWUgaGVpZ2h0IGlzIGFsbCBpbnRlZ2Vy
IGJhc2VkLgotICAgIGF1dG8gYWRqdXN0ZWRBc2NlbnQgPSBzdGQ6Om1heDxJbmxpbmVMYXlvdXRV
bml0PihmbG9vcmYoYXNjZW50ICsgaGFsZkxlYWRpbmcpLCAwKTsKLSAgICBhdXRvIGFkanVzdGVk
RGVzY2VudCA9IHN0ZDo6bWF4PElubGluZUxheW91dFVuaXQ+KGNlaWxmKGRlc2NlbnQgKyBoYWxm
TGVhZGluZyksIDApOwotICAgIHJldHVybiB7IGFkanVzdGVkQXNjZW50LCBhZGp1c3RlZERlc2Nl
bnQgfTsKLX0KLQogY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIExpbmVCdWlsZGVyOjpm
b3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuaAppbmRleCA4ZTRkOTU2MGExMTY3ZDE3MGQ2ODdk
NzVjMDExNWQxOWJiYmFhNWRlLi43MjZhNjU3M2NkYWQ1NTI5NWMwMjE4YzUyNzBmNTlkZGYxMTI4
MzFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQnVpbGRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmgKQEAgLTQxLDM0ICs0MSwyOSBAQCBjbGFzcyBMaW5l
Q29udGVudEFsaWduZXI7CiAKIGNsYXNzIExpbmVCdWlsZGVyIHsKIHB1YmxpYzoKLSAgICBzdHJ1
Y3QgQ29uc3RyYWludHMgewotICAgICAgICBJbmxpbmVMYXlvdXRQb2ludCBsb2dpY2FsVG9wTGVm
dDsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBhdmFpbGFibGVMb2dpY2FsV2lkdGggeyAwIH07
Ci0gICAgICAgIElubGluZUxheW91dFVuaXQgbGluZUhlaWdodCB7IDAgfTsKLSAgICAgICAgYm9v
bCBsaW5lSXNDb25zdHJhaW5lZEJ5RmxvYXQgeyBmYWxzZSB9OwotICAgIH07Ci0KICAgICBMaW5l
QnVpbGRlcihjb25zdCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCYpOwogICAgIH5MaW5lQnVpbGRl
cigpOwogCi0gICAgdm9pZCBpbml0aWFsaXplKGNvbnN0IENvbnN0cmFpbnRzJik7CisgICAgdm9p
ZCBvcGVuKElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlTG9naWNhbFdpZHRoKTsKICAgICB2b2lk
IGNsb3NlKCk7CisgICAgdm9pZCBjbGVhckNvbnRlbnQoKTsKKworICAgIHZvaWQgc2V0SGFzSW50
cnVzaXZlRmxvYXQoYm9vbCBoYXNJbnRydXNpdmVGbG9hdCkgeyBtX2hhc0ludHJ1c2l2ZUZsb2F0
ID0gaGFzSW50cnVzaXZlRmxvYXQ7IH0KKyAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0KCkgY29u
c3QgeyByZXR1cm4gbV9oYXNJbnRydXNpdmVGbG9hdDsgfQogCiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgSW5saW5lSXRlbSYsIElubGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoKTsKICAgICB2b2lk
IGFwcGVuZFBhcnRpYWxUcmFpbGluZ1RleHRJdGVtKGNvbnN0IElubGluZVRleHRJdGVtJiwgSW5s
aW5lTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgsIGJvb2wgbmVlZHNIeXBlbik7Ci0gICAgdm9pZCBj
bGVhcigpOwotICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9saW5l
Qm94LmlzQ29uc2lkZXJlZEVtcHR5KCk7IH0KLSAgICBib29sIGhhc0ludHJ1c2l2ZUZsb2F0KCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNJbnRydXNpdmVGbG9hdDsgfQorCisgICAgYm9vbCBpc1Zpc3Vh
bGx5RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzVmlzdWFsbHlFbXB0eTsgfQorCiAgICAgSW5s
aW5lTGF5b3V0VW5pdCBhdmFpbGFibGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUxvZ2lj
YWxXaWR0aCAtIGNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgfQorICAgIElubGluZUxheW91dFVuaXQg
Y29udGVudExvZ2ljYWxXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudExvZ2ljYWxXaWR0
aDsgfQogCiAgICAgSW5saW5lTGF5b3V0VW5pdCB0cmltbWFibGVUcmFpbGluZ1dpZHRoKCkgY29u
c3QgeyByZXR1cm4gbV90cmltbWFibGVUcmFpbGluZ0NvbnRlbnQud2lkdGgoKTsgfQogICAgIGJv
b2wgaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCkgY29uc3QgeyByZXR1cm4gbV90cmltbWFi
bGVUcmFpbGluZ0NvbnRlbnQuaXNUcmFpbGluZ1J1bkZ1bGx5VHJpbW1hYmxlKCk7IH0KIAotICAg
IGNvbnN0IExpbmVCb3gmIGxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX2xpbmVCb3g7IH0KLSAg
ICBMaW5lQm94JiBsaW5lQm94KCkgeyByZXR1cm4gbV9saW5lQm94OyB9CiAgICAgdm9pZCBtb3Zl
TG9naWNhbExlZnQoSW5saW5lTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBtb3ZlTG9naWNhbFJpZ2h0
KElubGluZUxheW91dFVuaXQpOwotICAgIHZvaWQgc2V0SGFzSW50cnVzaXZlRmxvYXQoKSB7IG1f
aGFzSW50cnVzaXZlRmxvYXQgPSB0cnVlOyB9CiAKICAgICBzdHJ1Y3QgUnVuIHsKICAgICAgICAg
Ym9vbCBpc1RleHQoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gSW5saW5lSXRlbTo6VHlwZTo6
VGV4dDsgfQpAQCAtMTQ0LDExICsxMzksOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgUnVuTGlzdCYg
cnVucygpIGNvbnN0IHsgcmV0dXJuIG1fcnVuczsgfQogICAgIFJ1bkxpc3QmIHJ1bnMoKSB7IHJl
dHVybiBtX3J1bnM7IH0KIAotICAgIHN0YXRpYyBBc2NlbnRBbmREZXNjZW50IGhhbGZMZWFkaW5n
TWV0cmljcyhjb25zdCBGb250TWV0cmljcyYsIElubGluZUxheW91dFVuaXQgbGluZUxvZ2ljYWxI
ZWlnaHQpOwotCiBwcml2YXRlOgotICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxX
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUJveC5sb2dpY2FsV2lkdGgoKTsgfQotICAgIElu
bGluZUxheW91dFVuaXQgY29udGVudExvZ2ljYWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbGlu
ZUJveC5sb2dpY2FsUmlnaHQoKTsgfQorICAgIElubGluZUxheW91dFVuaXQgY29udGVudExvZ2lj
YWxSaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fbGluZUxvZ2ljYWxMZWZ0ICsgbV9jb250ZW50TG9n
aWNhbFdpZHRoOyB9CiAKICAgICBzdHJ1Y3QgSW5saW5lUnVuRGV0YWlscyB7CiAgICAgICAgIElu
bGluZUxheW91dFVuaXQgbG9naWNhbFdpZHRoIHsgMCB9OwpAQCAtMTY2LDggKzE1OCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZW1vdmVUcmFpbGluZ1RyaW1tYWJsZUNvbnRlbnQoKTsKICAgICB2
b2lkIHZpc3VhbGx5Q29sbGFwc2VQcmVXcmFwT3ZlcmZsb3dDb250ZW50KCk7CiAKLSAgICBib29s
IGlzVmlzdWFsbHlOb25FbXB0eShjb25zdCBSdW4mKSBjb25zdDsKLQorICAgIGJvb2wgaXNSdW5W
aXN1YWxseU5vbkVtcHR5KGNvbnN0IFJ1biYpIGNvbnN0OwogICAgIGNvbnN0IElubGluZUZvcm1h
dHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0OwogCiAgICAgc3RydWN0IFRy
aW1tYWJsZVRyYWlsaW5nQ29udGVudCB7CkBAIC0xOTYsOSArMTg3LDExIEBAIHByaXZhdGU6CiAg
ICAgY29uc3QgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQmIG1faW5saW5lRm9ybWF0dGluZ0NvbnRl
eHQ7CiAgICAgUnVuTGlzdCBtX3J1bnM7CiAgICAgVHJpbW1hYmxlVHJhaWxpbmdDb250ZW50IG1f
dHJpbW1hYmxlVHJhaWxpbmdDb250ZW50OworICAgIElubGluZUxheW91dFVuaXQgbV9saW5lTG9n
aWNhbExlZnQgeyAwIH07CiAgICAgSW5saW5lTGF5b3V0VW5pdCBtX2xpbmVMb2dpY2FsV2lkdGgg
eyAwIH07CisgICAgSW5saW5lTGF5b3V0VW5pdCBtX2NvbnRlbnRMb2dpY2FsV2lkdGggeyAwIH07
CiAgICAgYm9vbCBtX2hhc0ludHJ1c2l2ZUZsb2F0IHsgZmFsc2UgfTsKLSAgICBMaW5lQm94IG1f
bGluZUJveDsKKyAgICBib29sIG1faXNWaXN1YWxseUVtcHR5IHsgdHJ1ZSB9OwogICAgIE9wdGlv
bmFsPGJvb2w+IG1fbGluZUlzVmlzdWFsbHlFbXB0eUJlZm9yZVRyaW1tYWJsZVRyYWlsaW5nQ29u
dGVudDsKICAgICBib29sIG1fc2hvdWxkSWdub3JlVHJhaWxpbmdMZXR0ZXJTcGFjaW5nIHsgZmFs
c2UgfTsKICNpZiBBU1NFUlRfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvTGluZUxheW91dENvbnRleHQuY3BwCmluZGV4IDgw
MmJlZGQ4ZDczMTc1MjU4MzNhNDc0MDhkZjEwZDU0MTc4YjI5OTguLmQ4MGYzMGMyMWM2ODAyOGIz
M2EzYTQ3OTRhOThhOWQ3OGUwYTRkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0xpbmVMYXlvdXRDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9MaW5lTGF5b3V0Q29udGV4dC5jcHAKQEAgLTMw
MCw3ICszMDAsNyBAQCBMaW5lTGF5b3V0Q29udGV4dDo6TGluZUNvbnRlbnQgTGluZUxheW91dENv
bnRleHQ6OmxheW91dElubGluZUNvbnRlbnQoTGluZUJ1aWxkZQogICAgICAgICAvLyAyLiBBcHBs
eSBmbG9hdHMgYW5kIHNocmluayB0aGUgYXZhaWxhYmxlIGhvcml6b250YWwgc3BhY2UgZS5nLiA8
c3Bhbj5pbnRydV88ZGl2IHN0eWxlPSJmbG9hdDogbGVmdCI+PC9kaXY+c2l2ZV9mbG9hdDwvc3Bh
bj4uCiAgICAgICAgIC8vIDMuIENoZWNrIGlmIHRoZSBjb250ZW50IGZpdHMgdGhlIGxpbmUgYW5k
IGNvbW1pdCB0aGUgY29udGVudCBhY2NvcmRpbmdseSAoZnVsbCwgcGFydGlhbCBvciBub3QgY29t
bWl0IGF0IGFsbCkuCiAgICAgICAgIC8vIDQuIFJldHVybiBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBv
ZiB0aGUgbGluZSBlaXRoZXIgYnkgbm90IGJlaW5nIGFibGUgdG8gZml0IG1vcmUgY29udGVudCBv
ciBiZWNhdXNlIG9mIGFuIGV4cGxpY2l0IGxpbmUgYnJlYWsuCi0gICAgICAgIG5leHRDb250ZW50
Rm9yTGluZShsaW5lQ2FuZGlkYXRlLCBjdXJyZW50SXRlbUluZGV4LCBsYXlvdXRSYW5nZSwgcGFy
dGlhbExlYWRpbmdDb250ZW50TGVuZ3RoLCBsaW5lLmF2YWlsYWJsZVdpZHRoKCkgKyBsaW5lLnRy
aW1tYWJsZVRyYWlsaW5nV2lkdGgoKSwgbGluZS5saW5lQm94KCkubG9naWNhbFdpZHRoKCkpOwor
ICAgICAgICBuZXh0Q29udGVudEZvckxpbmUobGluZUNhbmRpZGF0ZSwgY3VycmVudEl0ZW1JbmRl
eCwgbGF5b3V0UmFuZ2UsIHBhcnRpYWxMZWFkaW5nQ29udGVudExlbmd0aCwgbGluZS5hdmFpbGFi
bGVXaWR0aCgpICsgbGluZS50cmltbWFibGVUcmFpbGluZ1dpZHRoKCksIGxpbmUuY29udGVudExv
Z2ljYWxXaWR0aCgpKTsKICAgICAgICAgLy8gTm93IGNoZWNrIGlmIHdlIGNhbiBwdXQgdGhpcyBj
b250ZW50IG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gaGFuZGxl
RmxvYXRzQW5kSW5saW5lQ29udGVudChsaW5lQnJlYWtlciwgbGluZSwgbGF5b3V0UmFuZ2UsIGxp
bmVDYW5kaWRhdGUpOwogICAgICAgICBjb21taXR0ZWRJbmxpbmVJdGVtQ291bnQgPSByZXN1bHQu
Y29tbWl0dGVkQ291bnQuaXNSZXZlcnQgPyByZXN1bHQuY29tbWl0dGVkQ291bnQudmFsdWUgOiBj
b21taXR0ZWRJbmxpbmVJdGVtQ291bnQgKyByZXN1bHQuY29tbWl0dGVkQ291bnQudmFsdWU7CkBA
IC00MDUsOCArNDA1LDcgQEAgdm9pZCBMaW5lTGF5b3V0Q29udGV4dDo6Y29tbWl0RmxvYXRzKExp
bmVCdWlsZGVyJiBsaW5lLCBjb25zdCBMaW5lQ2FuZGlkYXRlJiBsaW4KICAgICAgICAgICAgICAg
ICByaWdodEludHJ1c2l2ZUZsb2F0c1dpZHRoICs9IGZsb2F0Q2FuZGlkYXRlLmxvZ2ljYWxXaWR0
aDsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoaGFzSW50cnVzaXZlRmxvYXQpCi0gICAgICAg
IGxpbmUuc2V0SGFzSW50cnVzaXZlRmxvYXQoKTsKKyAgICBsaW5lLnNldEhhc0ludHJ1c2l2ZUZs
b2F0KGhhc0ludHJ1c2l2ZUZsb2F0KTsKICAgICBpZiAobGVmdEludHJ1c2l2ZUZsb2F0c1dpZHRo
IHx8IHJpZ2h0SW50cnVzaXZlRmxvYXRzV2lkdGgpIHsKICAgICAgICAgaWYgKGxlZnRJbnRydXNp
dmVGbG9hdHNXaWR0aCkKICAgICAgICAgICAgIGxpbmUubW92ZUxvZ2ljYWxMZWZ0KGxlZnRJbnRy
dXNpdmVGbG9hdHNXaWR0aCk7CkBAIC01MDUsNyArNTA0LDcgQEAgdm9pZCBMaW5lTGF5b3V0Q29u
dGV4dDo6Y29tbWl0UGFydGlhbENvbnRlbnQoTGluZUJ1aWxkZXImIGxpbmUsIGNvbnN0IExpbmVC
cmVha2UKIHNpemVfdCBMaW5lTGF5b3V0Q29udGV4dDo6cmVidWlsZExpbmUoTGluZUJ1aWxkZXIm
IGxpbmUsIGNvbnN0IElubGluZUl0ZW1SYW5nZSYgbGF5b3V0UmFuZ2UpCiB7CiAgICAgLy8gQ2xl
YXIgdGhlIGxpbmUgYW5kIHN0YXJ0IGFwcGVuZGluZyB0aGUgaW5saW5lIGl0ZW1zIGNsb3Npbmcg
d2l0aCB0aGUgbGFzdCB3cmFwIG9wcG9ydHVuaXR5IHJ1bi4KLSAgICBsaW5lLmNsZWFyKCk7Cisg
ICAgbGluZS5jbGVhckNvbnRlbnQoKTsKICAgICBhdXRvIGN1cnJlbnRJdGVtSW5kZXggPSBsYXlv
dXRSYW5nZS5zdGFydDsKICAgICBhdXRvIGxvZ2ljYWxSaWdodCA9IElubGluZUxheW91dFVuaXQg
eyB9OwogICAgIGlmIChtX3BhcnRpYWxMZWFkaW5nVGV4dEl0ZW0pIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>