<?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>221637</bug_id>
          
          <creation_ts>2021-02-09 15:17:43 -0800</creation_ts>
          <short_desc>Make Pattern hold a NativeImage instead of an Image</short_desc>
          <delta_ts>2021-02-16 19:49:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=222020</see_also>
          <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>219468</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1727300</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-09 15:17:43 -0800</bug_when>
    <thetext>This is step towards the fix of bug 219468.

This will make caching the Pattern data in the GPUP straightforward since we need to cache the NativeImage and send the pattern data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727321</commentid>
    <comment_count>1</comment_count>
      <attachid>419783</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-09 16:14:43 -0800</bug_when>
    <thetext>Created attachment 419783
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727331</commentid>
    <comment_count>2</comment_count>
      <attachid>419784</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-09 16:35:37 -0800</bug_when>
    <thetext>Created attachment 419784
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727343</commentid>
    <comment_count>3</comment_count>
      <attachid>419787</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-09 17:01:45 -0800</bug_when>
    <thetext>Created attachment 419787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727361</commentid>
    <comment_count>4</comment_count>
      <attachid>419793</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-09 17:25:30 -0800</bug_when>
    <thetext>Created attachment 419793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727382</commentid>
    <comment_count>5</comment_count>
      <attachid>419803</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-09 18:56:46 -0800</bug_when>
    <thetext>Created attachment 419803
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728463</commentid>
    <comment_count>6</comment_count>
      <attachid>420097</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-11 21:45:45 -0800</bug_when>
    <thetext>Created attachment 420097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728469</commentid>
    <comment_count>7</comment_count>
      <attachid>420097</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-02-11 23:07:28 -0800</bug_when>
    <thetext>Comment on attachment 420097
Patch

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

&gt; Source/WebCore/platform/graphics/Pattern.h:70
&gt; +        bool repeatX;
&gt; +        bool repeatY;
&gt; +        AffineTransform patternSpaceTransform;

Putting the bools after the transform will eliminate some padding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728475</commentid>
    <comment_count>8</comment_count>
      <attachid>420101</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-02-12 00:07:25 -0800</bug_when>
    <thetext>Created attachment 420101
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728483</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-12 01:10:44 -0800</bug_when>
    <thetext>Committed r272776: &lt;https://commits.webkit.org/r272776&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420101.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728484</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-12 01:11:15 -0800</bug_when>
    <thetext>&lt;rdar://problem/74268391&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419783</attachid>
            <date>2021-02-09 16:14:43 -0800</date>
            <delta_ts>2021-02-09 16:35:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210209161442.patch</filename>
            <type>text/plain</type>
            <size>44679</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdmNjkwYzRmM2Y2ZTAy
NmQ0N2ZjOTA3N2Y3OGM0ODIwZGU2Yzk3OC4uZGI2NzMyMjI3NGE0NDU1MDc0NDRkYzNlYWJlYjYx
ODBlNWQ3Yjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wMi0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZHMgYSBOYXRpdmVJbWFnZSBpbnN0ZWFkIG9mIGFuIEltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBjYWNoaW5nIHRo
ZSBQYXR0ZXJuIGRhdGEgaW4gdGhlIEdQVVAgc3RyYWlnaHRmb3J3YXJkIHNpbmNlCisgICAgICAg
IHdlIG5lZWQgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGFuZCBzZW5kIHRoZSBwYXR0ZXJuIGRh
dGEuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZh
c1BhdHRlcm4pOgorICAgICAgICBFeHRyYWN0IGEgTmF0aXZlSW1hZ2Ugb3V0IG9mIGFuIEltYWdl
LiBUaGUgcGxhdGZvcm0gUGF0dGVybnMgZGVhbCB3aXRoCisgICAgICAgIE5hdGl2ZUltYWdlcyBv
bmx5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgUmVt
b3ZlIEltYWdlSGFuZGxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpzZXRQYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICBNYWtl
IHRoZSBuZXcgc3RydWN0ICdQYXJhbWV0ZXJzJyBob2xkcyBhbGwgdGhlIG1lbWJlcnMgb3RoZXIg
dGhhbiB0aGUKKyAgICAgICAgTmF0aXZlSW1hZ2UuIFRoaXMgc3RydWN0ICsgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmZXIgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIHdpbGwgYmUgcmVjb3Jk
ZWQgZm9yIHRoZSBzdHJva2VQYXR0ZXJuIGFuZCB0aGUgZmlsbFBhdHRlcm4uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICBUaGUgcGxhdGZvcm0gUGF0dGVy
biBkZWFscyBvbmx5IHdpdGggTmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgU2V0
U3RhdGU6OnN0YXRlKCkgaXMgcmVuYW1lZCB0byBTZXRTdGF0ZUl0ZW06OnN0YXRlQ2hhbmdlKCkg
c2luY2UgaXQgCisgICAgICAgIHJldHVybnMgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjph
cHBseSk6CisgICAgICAgIFNldFN0YXRlOjphcHBseSgpIGhhcyB0byBiZSBhIHNwZWNpYWwgY2Fz
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIFNldFN0YXRlIHRvIGJlIHVzZWQgYnkgdGhlIGRl
Y29kZXIuIEFsbCB0aGUgbWVtYmVycworICAgICAgICBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSB3aWxsIGJlIGNvcGllZCBhcyBpcyBidXQgdGhlIHN0cm9rZVBhdHRlcm4KKyAgICAgICAg
YW5kIGZpbGxQYXR0ZXJuIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlaXIgTmF0aXZlSW1h
Z2VzIGFyZSByZXNvbHZlZAorICAgICAgICBpbiB0aGUgU2V0U3RhdGU6OmFwcGx5KCkgbWV0aG9k
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVD
aGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpz
dHJva2VQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmZpbGxQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OnN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUg
ZW5jb2RlIGFuZCB0aGUgZGVjb2Rpbmcgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4g
CisgICAgICAgIGJ5IHVzZSB0aGUgUGF0dGVybjo6UGFyYW1ldGVycyBhbmQgdGhlIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmVyIG9mIHRoZQorICAgICAgICBOYXRpdmVJbWFnZS4gICAgICAKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FjaGVO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFw
cGVuZFN0YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICBDYWNoZSB0aGUgTmF0aXZl
SW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgUmVz
b2x2ZSB0aGUgTmF0aXZlSW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuIGZy
b20gY2FjaGVkCisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6Cisg
ICAgICAgIFBhdHRlcm5zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggTmF0aXZlSW1hZ2VzLgorCiAy
MDIxLTAyLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAg
IEEgUGF0dGVybiB3aXRoIGFuIFNWRyBpbWFnZSBpcyBub3QgcmVuZGVyZWQgY29ycmVjdGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM3OTljZjAxYjAxNGE2OGFkMThmYzJiNGE1NGZkNmY2MzAzMWZkMjQuLjliOTYw
ODFhMGQ5MzEzOGQxNGQ4MjAzOWE5YjFkYjQ5NDdlMGMxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDItMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBQYXR0ZXJuIGhvbGRzIGEgTmF0aXZlSW1hZ2UgaW5zdGVhZCBvZiBhbiBJ
bWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVs
ZXRlIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgdGhlIEltYWdlIHNpbmNlIGl0IGlzIG5v
dCB1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjplbmNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMjEt
MDItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50
IFdlYlByb2Nlc3MgdG8gcmUtZW50ZXIgb24gc3luYyBJUEMgdG8gdGhlIEdQVVByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggNzJlYTFh
ODdjNmQwZTI2MDE4NzU3ZWUyZjdiYzYwNDYzYzlhYTgwNS4uMGFhMWYxMjFiZjY4NTc2NzQ4NGE1
ZDZiMmUyNzkzNWJkODYxNjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0dGVybi5jcHAKQEAgLTI4LDE5ICsyOCwxOSBAQAogCiAjaW5jbHVkZSAiRE9NTWF0cml4
MkRJbml0LmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4UmVhZE9ubHkuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxDYW52YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK1JlZjxDYW52
YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pCi0gICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoaW1h
Z2UpLCByZXBlYXRYLCByZXBlYXRZKSkKK0NhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVm
PE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBv
cmlnaW5DbGVhbikKKyAgICA6IG1fcGF0dGVybihQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIHsgcmVwZWF0WCwgcmVwZWF0WSB9KSkKICAgICAsIG1fb3JpZ2luQ2xlYW4ob3JpZ2luQ2xl
YW4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5k
ZXggYzhhOWUzY2UxNjFiYmI4ZjlhMWQ3NWJlMjlmZGNlYjgyMWNjOTkzMS4uZTQ2ZDIxYmM1MTM1
ZDlhNzRmNDU3NWM5ZGQ2NWU5Y2VjZGNiOGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47
CiBzdHJ1Y3QgRE9NTWF0cml4MkRJbml0OwogCiBjbGFzcyBDYW52YXNQYXR0ZXJuIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q2FudmFzUGF0dGVybj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2Fu
dmFzUGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pOworICAgIHN0YXRpYyBSZWY8Q2FudmFzUGF0dGVybj4gY3Jl
YXRlKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBw
YXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJl
cGVhdFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQ
YXR0ZXJuKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAKICAgICBSZWY8UGF0dGVy
bj4gbV9wYXR0ZXJuOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggODgzMGM1ZGRhZWRhNDdmMjI4MmUwNGQ4MTcyNDM0MWYwNGU4OWMzZC4uOWZmMjJh
N2MzZDVkZWNjZTZhNjRiYWFhNmFjYmVjMTE2YjEwMmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTE5MzcsNyArMTkzNywxNSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlm
IChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNTVkdJbWFnZSgpKQogICAgICAgICBvcmlnaW5DbGVh
biA9IGZhbHNlOwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZSgqY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50
LnJlbmRlcmVyKCkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICBhdXRv
KiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC5yZW5k
ZXJlcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
cmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0
dGVybihDYW52YXNCYXNlJiBjYW52YXMsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQpAQCAt
MTk0OCw4ICsxOTU2LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihDCiAKICAgICBpZiAoIWNv
cGllZEltYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY29waWVkSW1hZ2UtPm5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsg
Q2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjb3BpZWRJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSwgY2Fu
dmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBl
YXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFC
TEUoVklERU8pCkBAIC0xOTY0LDcgKzE5NzYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFz
UGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAog
CiAjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVtZW50Lm5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAg
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
bmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xl
YW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9ICFkcmF3aW5nQ29udGV4
dCgpIHx8IGRyYXdpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CkBAIC0x
OTc0LDcgKzE5ODYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlkZW9FbGVt
ZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAotICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlciksIFByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVh
bikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6
Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCmluZGV4IDBjODVmOGE4Mzc2Nzk2NmJhMjZiNWMzMzNlZDYwYzAxYTUwYWExMTYuLmU1ZjIy
MTBhZTk4NzMzZTk4NGFiNTg0ZjZmOWEzYzg0N2I1YTgwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMjAyLDkgKzEyMDIsMTAgQEAgUmVm
PEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlG
b3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1Bh
dHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgSW1hZ2UmIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZh
c1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7
IH0sIHRpbGVJbWFnZS5zaXplKCkgfTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSh0aWxlSW1hZ2UsIEZsb2F0
UG9pbnQoMCwgMCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwogICAgIGJvb2wgcmVwZWF0WCA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnJlcGVh
dFgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEuLmRhMDEwZjNmZGNkMDY4MDU2Mjhi
ODYwY2FlMzJiZDliZTlhNDU0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaApAQCAtMjEwLDExICsyMTAsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKIAotY2xhc3MgSW1hZ2VIYW5kbGUg
ewotcHVibGljOgotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci19OwotCiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW1hZ2UmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcAppbmRleCA3OTZhMDdjMTg2YjYyZmY0ZTZiNmVhMjYxMDdmZjlmYzRjNDM4ZTcxLi42
MzUzMjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDIzICszMSwyMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYm
IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCitSZWY8UGF0dGVybj4gUGF0
dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1QYXR0
ZXJuOjpQYXR0ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQot
ICAgICwgbV9yZXBlYXRYKHJlcGVhdFgpCi0gICAgLCBtX3JlcGVhdFkocmVwZWF0WSkKKyAgICAs
IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCiBQYXR0ZXJuOjp+UGF0dGVybigpID0g
ZGVmYXVsdDsKIAotdm9pZCBQYXR0ZXJuOjpzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbikKK3ZvaWQgUGF0dGVy
bjo6c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blNwYWNlVHJhbnNmb3JtKQogewotICAgIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24gPSBw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMucGF0dGVyblNwYWNl
VHJhbnNmb3JtID0gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggMmE1NjNkYTI2MTdkMWIwNDI0OGI5
MGFiMDYzOWRiMmNhZjlhODhjMC4uNmFiY2JkZDE1OTUxZDhmZjY5N2E2OGFhYTBlZmZiNmU5ZjU4
ZjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRv
cmNoIE1vYmlsZSwgSW5jLgogICoKQEAgLTUzLDc2ICs1Myw0MyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbWFnZTsKLWNsYXNzIEltYWdlSGFuZGxlOwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBh
cmFtZXRlcnMoYm9vbCByZXBlYXRYID0gdHJ1ZSwgYm9vbCByZXBlYXRZID0gdHJ1ZSwgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSA9IHsgfSkKKyAgICAgICAgICAgIDogcmVw
ZWF0WChyZXBlYXRYKQorICAgICAgICAgICAgLCByZXBlYXRZKHJlcGVhdFkpCisgICAgICAgICAg
ICAsIHBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBib29sIHJlcGVhdFg7CisgICAgICAgIGJvb2wgcmVwZWF0
WTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICB9
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPE5h
dGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAv
LyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVm
YXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24nCisgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0IG1h
cHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJT
cGFjZVRyYW5zZm9ybScKICNpZiAhVVNFKERJUkVDVDJEKQotICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VU
cmFuc2Zvcm1hdGlvbikgY29uc3Q7CisgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29u
c3Q7CiAjZWxzZQotICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4o
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxwaGEsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0OworICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxw
aGEsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdDsKICNl
bmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsgfTsKLSAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3JlcGVhdFg7IH0KLSAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGVhdFk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHZvaWQgc2V0UGF0
dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLnBhdHRlcm5TcGFjZVRyYW5zZm9ybTsgfTsKKyAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WDsgfQorICAgIGJvb2wgcmVwZWF0WSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAg
UGF0dGVybihSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVm
PEltYWdlPiBtX3RpbGVJbWFnZTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKLSAgICBib29sIG1fcmVwZWF0WDsKLSAgICBib29sIG1fcmVwZWF0WTsK
KyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1fdGlsZUltYWdlOworICAgIFBhcmFtZXRlcnMgbV9wYXJh
bWV0ZXJzOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUGF0dGVybjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgSW1hZ2VIYW5kbGUgaW1hZ2VIYW5k
bGU7Ci0gICAgaW1hZ2VIYW5kbGUuaW1hZ2UgPSBtX3RpbGVJbWFnZS5wdHIoKTsKLSAgICBlbmNv
ZGVyIDw8IGltYWdlSGFuZGxlOwotICAgIGVuY29kZXIgPDwgbV9wYXR0ZXJuU3BhY2VUcmFuc2Zv
cm1hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fcmVwZWF0WDsKLSAgICBlbmNvZGVyIDw8IG1fcmVw
ZWF0WTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlZjxQYXR0ZXJu
Pj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8SW1h
Z2VIYW5kbGU+IGltYWdlSGFuZGxlOwotICAgIGRlY29kZXIgPj4gaW1hZ2VIYW5kbGU7Ci0gICAg
aWYgKCFpbWFnZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAg
ZGVjb2RlciA+PiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIXBhdHRlcm5T
cGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8Ym9vbD4gcmVwZWF0WDsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFg7Ci0gICAgaWYg
KCFyZXBlYXRYKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
Ym9vbD4gcmVwZWF0WTsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFk7Ci0gICAgaWYgKCFyZXBlYXRZ
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKGltYWdlSGFuZGxlLT5pbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCAqcmVwZWF0
WCwgKnJlcGVhdFkpOwotICAgIHBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgqcGF0
dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIHJldHVybiBwYXR0ZXJuOwotfQotCiB9IC8v
bmFtZXNwYWNlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDczMjBkYTFjYmZlOTI4NWZkMTI2
ZjAwMjQxNDM4YzRkYmEzOWVjYzkuLjdmYWU3NzdjMzk2NmI0YzQ4NmRlMjIzMmIxOTExMzIzMWZk
OTJkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTY3LDcgKzU2Nyw3IEBAIEZpbGxTb3Vy
Y2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAg
ICBwYXR0ZXJuLm9iamVjdCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICBhdXRvJiBwYXR0ZXJu
SW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgICAgIHBhdHRlcm4u
c2l6ZSA9IEZsb2F0U2l6ZShwYXR0ZXJuSW1hZ2Uud2lkdGgoKSwgcGF0dGVybkltYWdlLmhlaWdo
dCgpKTsKKyAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybkltYWdlLnNpemUoKTsKICAgICAg
ICAgcGF0dGVybi50cmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA1NjBmNzQ3YThmYjY0ODFiZTRhMzAxODU4NTAw
YWE5ZmExNjBmNzg2Li4wZmU1NjA5YzY0MDU1MzNlZGMxZTI5MDA1NzM3MjhjMGRkNmM0OTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJu
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dHRlcm5DYWlyby5jcHAKQEAgLTM1LDExICszNSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7Cisg
ICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNh
aXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNl
KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHBsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNlciBz
cGFjZSBpdHNlbGYKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0cml4KG1f
cGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKaW5kZXggNjk1NGM1NjY1NzBhZDdhZTZjMWU3
NjBmMDc4N2QzNzcwYWNhYTY5NC4uZjFiOWUzYTdjMDU1NjlhOTg5MWI2OThkMjgzYWI1Mzk3Yzcy
NWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0
dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0
ZXJuQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAw
OCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTUs
MjQgKzU1LDIxIEBAIHN0YXRpYyB2b2lkIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5m
bykKICAgICB9KTsKIH0KIAotQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uKSBjb25z
dAorQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3Qg
dGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7CisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0g
eyB7IH0sIHRpbGVJbWFnZSgpLnNpemUoKSB9OwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRl
cm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm1hdGlvbiAqIG1fcGF0dGVyblNwYWNlVHJh
bnNmb3JtYXRpb247CisgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2Vy
U3BhY2VUcmFuc2Zvcm0gKiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICBwYXR0ZXJuVHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFu
c2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsKIAotICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxh
dGZvcm1JbWFnZTsKLSAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2
ZUltYWdlKCkpCi0gICAgICAgIHBsYXRmb3JtSW1hZ2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1J
bWFnZSgpOwotICAgIAorICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZSA9IHRpbGVJ
bWFnZSgpLnBsYXRmb3JtSW1hZ2UoKTsKICAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgLy8gSWYgd2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGly
ZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNrZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFk
IG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lkIHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4K
LSAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0WSkKKyAgICBpZiAocmVwZWF0WCgpICYmIHJl
cGVhdFkoKSkKICAgICAgICAgcmV0dXJuIENHUGF0dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZv
cm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9ybSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50
U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFYIHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhT
dGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRlcmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxU
X01BWCBhbHNvCkBAIC04MCw4ICs3Nyw4IEBAIENHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAg
Ly8gSU5UX01BWCBpcyBhbG1vc3QgY29ycmVjdCwgYnV0IHRoZXJlIHNlZW1zIHRvIGJlIHNvbWUg
bnVtYmVyIHdyYXBwaW5nIG9jY3VycmluZyBtYWtpbmcgdGhlIGZpbGwKICAgICAvLyBwYXR0ZXJu
IGlzIG5vdCBmaWxsZWQgY29ycmVjdGx5LgogICAgIC8vIFRvIG1ha2UgZXJyb3Igb2YgZmxvYXRp
bmcgcG9pbnQgbGVzcyB0aGFuIDAuNSwgd2UgdXNlIHRoZSBoYWxmIG9mIHRoZSBudW1iZXIgb2Yg
bWFudGlzc2Egb2YgZmxvYXQgKDEgPDwgMjIpLgotICAgIENHRmxvYXQgeFN0ZXAgPSBtX3JlcGVh
dFggPyB0aWxlUmVjdC53aWR0aCgpIDogKDEgPDwgMjIpOwotICAgIENHRmxvYXQgeVN0ZXAgPSBt
X3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKKyAgICBDR0Zsb2F0IHhT
dGVwID0gcmVwZWF0WCgpID8gdGlsZVJlY3Qud2lkdGgoKSA6ICgxIDw8IDIyKTsKKyAgICBDR0Zs
b2F0IHlTdGVwID0gcmVwZWF0WSgpID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAK
ICAgICAvLyBUaGUgcGF0dGVybiB3aWxsIHJlbGVhc2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdz
IGRvbmUgcmVuZGVyaW5nIGluIHBhdHRlcm5SZWxlYXNlQ2FsbGJhY2sKICAgICBDR0ltYWdlUmVm
IGltYWdlID0gcGxhdGZvcm1JbWFnZS5sZWFrUmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNw
cAppbmRleCBkMTUzZGZhNDVjMjFhZDg3M2U0ZDQ4NDY3MWYzZDA0YWNiNzQ4NTRiLi5lMDc5Zjcz
MGJlODU5YWMzYjA1Yjk0MjljMzBlODM2MWQxNDNhZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dC5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCBib29sIERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9y
RmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1IYW5kbGUgaXRlbSkKICAgICAgICAgaWYgKCEo
ZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1BsYXRmb3JtT3BlcmF0aW9ucykpIHsKICAgICAg
ICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAg
ICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9ubHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25s
eSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRmb3JtLXNwZWNpZmljLgotICAgICAgICAgICAg
aWYgKHN0YXRlSXRlbS5zdGF0ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChz
dGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0
YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkubV9jaGFu
Z2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZv
bnRzQ2hhbmdlKQorICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hh
bmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVG
b250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3Bw
CmluZGV4IDUwYzhkOGY3NTc3YTE2NzA1ZWNmODU1YWQxNjk4MThiNmRmOThiYmEuLjM5NWZlNjcx
Y2NmNzQyMmExNjU2NzZjNzljZDFlMDllZjU1OWE5NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSXRlbUhhbmRs
ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KQogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRlOiB7Ci0gICAgICAgIGdldDxTZXRTdGF0ZT4o
KS5hcHBseShjb250ZXh0KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0TGluZUNhcDogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmluZGV4IDIxM2RiOWM4Y2Y0MmVjMWFlMmQxMzM5
Mzc1ZDlmNTYzMGU3NmQ3NDMuLmY5MDA5MWYxMmQyNWJiN2M1NjA5Mjc1ZDAxNGRlYTFhYjEwMjkz
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKQEAgLTIwOSwyMyArMjA5
LDI5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTZXRTdHJva2VUaGlja25lc3MmIHN0YXRlKQogfQogCiBTZXRTdGF0ZTo6U2V0U3RhdGUoY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Rh
dGVDaGFuZ2VGbGFncyBmbGFncykKLSAgICA6IG1fc3RhdGUoc3RhdGUsIGZsYWdzKQorICAgIDog
bV9zdGF0ZUNoYW5nZShzdGF0ZSwgZmxhZ3MpCiB7CiB9CiAKLVNldFN0YXRlOjpTZXRTdGF0ZShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UpCi0gICAgOiBtX3N0
YXRlKHN0YXRlQ2hhbmdlKQorU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSwgY29uc3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRl
cm4sIGNvbnN0IFBhdHRlcm5EYXRhJiBmaWxsUGF0dGVybikKKyAgICA6IG1fc3RhdGVDaGFuZ2Uo
c3RhdGVDaGFuZ2UpCisgICAgLCBtX3N0cm9rZVBhdHRlcm4oc3Ryb2tlUGF0dGVybikKKyAgICAs
IG1fZmlsbFBhdHRlcm4oZmlsbFBhdHRlcm4pCiB7CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKK3ZvaWQgU2V0U3RhdGU6OmFwcGx5KEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwg
TmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpCiB7Ci0gICAgbV9zdGF0ZS5hcHBseShjb250
ZXh0KTsKKyAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1h
Z2UpCisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRlcm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5w
YXJhbWV0ZXJzKTsKKyAgICBpZiAobV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5J
bWFnZSkKKyAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJuSW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFt
ZXRlcnMpOworICAgIG1fc3RhdGVDaGFuZ2UuYXBwbHkoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgc3Rh
dGUpCiB7Ci0gICAgdHMgPDwgc3RhdGUuc3RhdGUoKTsKKyAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNo
YW5nZSgpOwogICAgIHJldHVybiB0czsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQxZTIxMjA1YTdmZjNhNmE2MzY3ZS4uNzA2Yjg0
ZmY4MDUyMWQzOWJiMDU3NWIyYjg2MzkzMzVjYzc2ZWEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCkBAIC0yNTQsOSArMjU0LDEyIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZhbHNlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsKLSAgICAKLSAgICBjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSYgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAg
ICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UoKSBjb25zdCB7
IHJldHVybiBtX3N0YXRlQ2hhbmdlOyB9CisgICAgY29uc3QgUGF0dGVybjo6UGFyYW1ldGVycyYg
c3Ryb2tlUGF0dGVyblBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZVBhdHRlcm4u
cGFyYW1ldGVyczsgfQorICAgIGNvbnN0IFBhdHRlcm46OlBhcmFtZXRlcnMmIGZpbGxQYXR0ZXJu
UGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVyczsgfQor
ICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VQYXR0ZXJuLnRpbGVJbWFnZUlkZW50aWZpZXI7
IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50
aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxQYXR0ZXJuLnRpbGVJbWFnZUlkZW50aWZpZXI7
IH0KIAogICAgIHN0YXRpYyB2b2lkIGJ1aWxkZXJTdGF0ZShHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzKTsKIApAQCAtMjY1LDE5ICsyNjgsMjggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNs
YXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7
CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0OworICAgIHZvaWQgYXBw
bHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0
aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOwogCiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGU7CisgICAgc3RydWN0IFBhdHRlcm5EYXRhIHsKKyAgICAg
ICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHRpbGVJbWFnZUlkZW50aWZpZXI7CisgICAg
ICAgIFBhdHRlcm46OlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICB9OworCisgICAgV0VCQ09S
RV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBjb25z
dCBQYXR0ZXJuRGF0YSYgc3Ryb2tlUGF0dGVybiwgY29uc3QgUGF0dGVybkRhdGEmIGZpbGxQYXR0
ZXJuKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGVDaGFuZ2U7Cisg
ICAgUGF0dGVybkRhdGEgbV9zdHJva2VQYXR0ZXJuOworICAgIFBhdHRlcm5EYXRhIG1fZmlsbFBh
dHRlcm47CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBTZXRTdGF0ZTo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7Ci0gICAgYXV0byBjaGFuZ2VGbGFncyA9IG1f
c3RhdGUubV9jaGFuZ2VGbGFnczsKKyAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZUNoYW5n
ZS5tX2NoYW5nZUZsYWdzOwogICAgIGVuY29kZXIgPDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBhdXRv
JiBzdGF0ZSA9IG1fc3RhdGUubV9zdGF0ZTsKKyAgICBhdXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFu
Z2UubV9zdGF0ZTsKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7CiAgICAgICAgIGVuY29kZXIgPDwgISFz
dGF0ZS5zdHJva2VHcmFkaWVudDsKQEAgLTI4Nyw4ICsyOTksMTAgQEAgdm9pZCBTZXRTdGF0ZTo6
ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpKSB7CiAgICAg
ICAgIGVuY29kZXIgPDwgISFzdGF0ZS5zdHJva2VQYXR0ZXJuOwotICAgICAgICBpZiAoc3RhdGUu
c3Ryb2tlUGF0dGVybikKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLnN0cm9rZVBhdHRl
cm47CisgICAgICAgIGlmIChhdXRvJiBwYXR0ZXJuID0gc3RhdGUuc3Ryb2tlUGF0dGVybikgewor
ICAgICAgICAgICAgZW5jb2RlciA8PCBwYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZwYXR0ZXJuLT5wYXJhbWV0ZXJz
KCkpLCBzaXplb2YoUGF0dGVybjo6UGFyYW1ldGVycyksIDEpOworICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxs
R3JhZGllbnRDaGFuZ2UpKSB7CkBAIC0yOTksOCArMzEzLDEwIEBAIHZvaWQgU2V0U3RhdGU6OmVu
Y29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRh
aW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAg
ZW5jb2RlciA8PCAhIXN0YXRlLmZpbGxQYXR0ZXJuOwotICAgICAgICBpZiAoc3RhdGUuZmlsbFBh
dHRlcm4pCi0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxsUGF0dGVybjsKKyAgICAg
ICAgaWYgKGF1dG8mIHBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVybikgeworICAgICAgICAgICAg
ZW5jb2RlciA8PCBwYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIoKTsKKyAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KCZwYXR0ZXJuLT5wYXJhbWV0ZXJzKCkpLCBzaXplb2Yo
UGF0dGVybjo6UGFyYW1ldGVycyksIDEpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7
CkBAIC0zNjYsNiArMzgyLDkgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlcikKICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNo
YW5nZTsKICAgICBzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzID0gKmNoYW5nZUZsYWdzOwogCisg
ICAgUGF0dGVybkRhdGEgc3Ryb2tlUGF0dGVybjsKKyAgICBQYXR0ZXJuRGF0YSBmaWxsUGF0dGVy
bjsKKwogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKICAgICAgICAgT3B0aW9uYWw8
Ym9vbD4gaGFzU3Ryb2tlR3JhZGllbnQ7CiAgICAgICAgIGRlY29kZXIgPj4gaGFzU3Ryb2tlR3Jh
ZGllbnQ7CkBAIC0zODgsMTEgKzQwNywxNiBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKIAogICAgICAgICBpZiAoaGFzU3Ryb2tlUGF0dGVybi52YWx1ZSgpKSB7Ci0gICAgICAgICAg
ICBhdXRvIHN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAg
ICAgICBpZiAoIXN0cm9rZVBhdHRlcm4pCisgICAgICAgICAgICBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICAgICAg
ICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICAgICAg
aWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAotICAgICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zdHJva2VQ
YXR0ZXJuID0gV1RGTW92ZSgqc3Ryb2tlUGF0dGVybik7CisgICAgICAgICAgICBQYXR0ZXJuOjpQ
YXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlRml4
ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZwYXJhbWV0ZXJzKSwgc2l6
ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMpLCAxKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgICAgICAgICAgCisgICAgICAgICAgICBzdHJva2VQYXR0ZXJuID0geyAq
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBwYXJhbWV0ZXJzIH07CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTQxOCwxMSArNDQyLDE2IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6
ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCiAgICAgICAgIGlmIChoYXNGaWxsUGF0dGVybi52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBh
dXRvIGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICAgICAg
aWYgKCFmaWxsUGF0dGVybikKKyAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICAgICAgZGVj
b2RlciA+PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIXJl
bmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogCi0gICAgICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLmZpbGxQYXR0ZXJuID0g
V1RGTW92ZSgqZmlsbFBhdHRlcm4pOworICAgICAgICAgICAgUGF0dGVybjo6UGFyYW1ldGVycyBw
YXJhbWV0ZXJzOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0
YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmcGFyYW1ldGVycyksIHNpemVvZihQYXR0ZXJu
OjpQYXJhbWV0ZXJzKSwgMSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgZmlsbFBhdHRlcm4gPSB7ICpyZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMgfTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgz
LDcgKzYxMiw3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5z
Zm9ybXMgPSAqc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CiAgICAgfQogCi0gICAgcmV0dXJuIHsg
c3RhdGVDaGFuZ2UgfTsKKyAgICByZXR1cm4ge3sgc3RhdGVDaGFuZ2UsIHN0cm9rZVBhdHRlcm4s
IGZpbGxQYXR0ZXJuIH19OwogfQogCiBjbGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCA0Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTky
OTQxNjY1MTcyNGIzYTNhLi45OWY3MTZiYWU1NmJlOWE5ZTQyZjBiYmJiMzRlMjYzN2JjZmEwZTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC04NSw5ICs4
NSwyMCBAQCBzdGF0aWMgYm9vbCBjb250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQogCit2
b2lkIFJlY29yZGVyOjpjYWNoZU5hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAg
ICBpZiAobV9kZWxlZ2F0ZSkKKyAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7CisgICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKK30KKwog
dm9pZCBSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlJiBjaGFuZ2VzLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyBjaGFuZ2VGbGFncykKIHsKICAgICBpZiAoIWNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hh
bmdlcyhjaGFuZ2VzLCBjaGFuZ2VGbGFncykpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9
IGNoYW5nZXMubV9zdGF0ZS5zdHJva2VQYXR0ZXJuKQorICAgICAgICAgICAgY2FjaGVOYXRpdmVJ
bWFnZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBj
aGFuZ2VzLm1fc3RhdGUuZmlsbFBhdHRlcm4pCisgICAgICAgICAgICBjYWNoZU5hdGl2ZUltYWdl
KHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKICAgICAgICAgYXBwZW5kPFNldFN0YXRlPihjaGFuZ2Vz
Lm1fc3RhdGUsIGNoYW5nZUZsYWdzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4Mywx
NyArMTk0LDEzIEBAIHZvaWQgUmVjb3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFn
ZUJ1ZmZlciYgaW1hZ2VCdWZmZXIsIGNvbnN0IEZsb2F0UmVjCiAKIHZvaWQgUmVjb3JkZXI6OmRy
YXdOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VT
aXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmIChtX2RlbGVn
YXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKLSAgICBt
X2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIGNhY2hlTmF0aXZlSW1h
Z2UoaW1hZ2UpOwogICAgIGFwcGVuZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25z
KTsKIH0KIAogdm9pZCBSZWNvcmRlcjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBj
b25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29u
c3QgRmxvYXRSZWN0JiB0aWxlUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5n
LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAobV9kZWxl
Z2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7Ci0gICAg
bV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBjYWNoZU5hdGl2ZUlt
YWdlKGltYWdlKTsKICAgICBhcHBlbmQ8RHJhd1BhdHRlcm4+KGltYWdlLnJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcigpLCBpbWFnZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRy
YW5zZm9ybSwgcGhhc2UsIHNwYWNpbmcsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA2NGY3OGFjYjZjNDk2Mzk4NTI2NmQyYzQzNTcxZWI2
OTQ0NWNlMDNjLi44MDQ2YTIxYTJlMTgxMTQ5MGM2NzA2MDI5NWM2N2UwZGRhYWFjMWIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTE3MSw2ICsxNzEsOCBAQCBw
cml2YXRlOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJ
dGVtVHlwZSk7CiAKKyAgICB2b2lkIGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKTsKKwog
ICAgIHZvaWQgYXBwZW5kU3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCiAgICAg
RmxvYXRSZWN0IGV4dGVudEZyb21Mb2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCAzMjVkYjk3Mzll
OWZjZjIxMzFlOTE0ZTZhZTVjODVhODJlYmFlMWM5Li40ZDkwNmEyNDU2NDQ2MmY2ZTAxODE2OWQx
YjE2ODk5MmQ4ZGYyY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIu
Y3BwCkBAIC03MCw2ICs3MCwyOSBAQCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcj4gYXBwbHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVy
biByZXNvdXJjZUlkZW50aWZpZXI7CiB9CiAKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQm
IGNvbnRleHQsIGNvbnN0IE5hdGl2ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFu
ZGxlIGl0ZW0pCit7CisgICAgYXV0byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+
KCk7CisKKyAgICBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlID0gbnVsbHB0cjsKKyAg
ICBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSA9IG51bGxwdHI7CisKKyAgICBpZiAoYXV0
byByZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRl
bnRpZmllcigpKSB7CisgICAgICAgIHN0cm9rZVBhdHRlcm5JbWFnZSA9IG5hdGl2ZUltYWdlcy5n
ZXQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2Up
CisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOworICAgIH0KKworICAgIGlm
IChhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdl
SWRlbnRpZmllcigpKSB7CisgICAgICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMu
Z2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkK
KyAgICAgICAgICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAgfQorCisgICAgc2V0
U3RhdGVJdGVtLmFwcGx5KGNvbnRleHQsIHN0cm9rZVBhdHRlcm5JbWFnZSwgZmlsbFBhdHRlcm5J
bWFnZSk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwogdGVtcGxhdGU8Y2xhc3MgVD4K
IGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBs
eUZvbnRJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jl
c291cmNlTWFwJiBmb250cywgSXRlbUhhbmRsZSBpdGVtKQogewpAQCAtMTE3LDYgKzE0MCwxMiBA
QCBzdGQ6OnBhaXI8T3B0aW9uYWw8U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4+IFJlcAogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQs
IFdURjo6bnVsbG9wdCB9OwogICAgIH0KIAorICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7
CisgICAgICAgIGlmIChhdXRvIG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBs
eVNldFN0YXRlSXRlbShtX2NvbnRleHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAg
ICAgIHJldHVybiB7IFN0b3BSZXBsYXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RG
TW92ZShtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVudGlmaWVyKSB9OworICAgICAgICByZXR1cm4g
eyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OworICAgIH0KKwogICAgIGl0ZW0uYXBwbHko
bV9jb250ZXh0KTsKICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9Owog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDU2MzNhMGFmYTY0ZGQ2NmQ2YWVkOWU5N2RlMmU2OGRiZTE2YjM4MTEuLjE2
NWU2N2JjMzBmNDVjNjQ2YWIyYjA0OGU2MjA4M2M3N2Y0NDEyYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTcyLDE1
ICs3MiwxNSBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB0aWxl
SW1hZ2VDb250ZXh0LnRyYW5zbGF0ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVm
ZmVjdExvY2F0aW9uLnkoKSk7CiAgICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIo
KmluQnVmZmVyLCBpbi0+YWJzb2x1dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAotICAgIGF1
dG8gdGlsZUltYWdlQ29weSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUodGls
ZUltYWdlKSk7CisgICAgYXV0byB0aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
TmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0
aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwotCiAgICAgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xh
dGUoaW5NYXhFZmZlY3RMb2NhdGlvbiAtIG1heEVmZmVjdExvY2F0aW9uKTsKLSAgICBwYXR0ZXJu
LmdldCgpLnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKKworICAg
IGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25O
dWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVyblRyYW5zZm9ybX0pOworCiAgICAgR3JhcGhpY3ND
b250ZXh0JiBmaWx0ZXJDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKICAgICBmaWx0
ZXJDb250ZXh0LnNldEZpbGxQYXR0ZXJuKFdURk1vdmUocGF0dGVybikpOwogICAgIGZpbHRlckNv
bnRleHQuZmlsbFJlY3QoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgYWJzb2x1dGVQYWludFJlY3Qo
KS5zaXplKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFj
a2luZy5jcHAKaW5kZXggMGQwNDgxMWIzZTk4MWM1MTY1MTM1NGFkODBmMGJjZjc2MmEwYmViZC4u
YzcwYzE0YWRlMWZmNWJkZWRlNDc0Y2VmYmUzODEzMDgwMTQ1ZDE1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTMyNjYsMTQgKzMy
NjYsMTMgQEAgc3RhdGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0
dGVybkRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uLCBGbG8KICAgICAgICAgaW1hZ2VDb250ZXh0LmRy
YXdUZXh0KGZvbnQsIHRleHRSdW4sIHsgdGV4dEdhcCwgeU9mZnNldCB9LCAwKTsKICAgICB9CiAK
LSAgICBhdXRvIHRpbGVJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUo
aW1hZ2VCdWZmZXIpKTsKLSAgICBhdXRvIGZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRp
bGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsKKyAgICBhdXRvIHRpbGVJbWFn
ZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIp
KTsKKwogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtOwogICAgIHBh
dHRlcm5PZmZzZXRUcmFuc2Zvcm0udHJhbnNsYXRlKGNvbnRlbnRPZmZzZXQgKyBkZXNjcmlwdGlv
bi5waGFzZSk7CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS5zY2FsZSgxIC8gZGVzdENvbnRl
eHQuc2NhbGVGYWN0b3IoKSk7Ci0gICAgZmlsbFBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5z
Zm9ybShwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtKTsKIAotICAgIHJldHVybiBmaWxsUGF0dGVybjsK
KyAgICByZXR1cm4gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7
IHRydWUsIHRydWUsIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm19KTsKIH07CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZVBhdHRlcm4uY3BwCmluZGV4IGUzNDI0MzFkMTQ5MWYzZjFkMGJiZDRiY2Y5NWEwNTI2ZWQwMzBm
ZDEuLjk0NzE5YjNlZjg3NzJlZmNhMDdjMGUyYjM1ZGQxYzA0MDYwOTczNjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKQEAgLTExMiwxNiArMTEyLDEyIEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAK
ICAgICBjb25zdCBJbnRTaXplIHRpbGVJbWFnZVNpemUgPSB0aWxlSW1hZ2UtPmxvZ2ljYWxTaXpl
KCk7CiAKLSAgICBSZWZQdHI8SW1hZ2U+IGNvcGllZEltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJ
bnRvSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKKyAgICBhdXRvIGNvcGllZEltYWdlID0gSW1h
Z2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKICAgICBp
ZiAoIWNvcGllZEltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIC8vIEJ1aWxk
IHBhdHRlcm4uCi0gICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+
KCk7Ci0gICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUoY29waWVkSW1h
Z2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7Ci0KICAgICAvLyBDb21wdXRlIHBhdHRl
cm4gc3BhY2UgdHJhbnNmb3JtYXRpb24uCi0KKyAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVu
aXF1ZTxQYXR0ZXJuRGF0YT4oKTsKICAgICBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtLnRyYW5zbGF0
ZSh0aWxlQm91bmRhcmllcy5sb2NhdGlvbigpKTsKICAgICBwYXR0ZXJuRGF0YS0+dHJhbnNmb3Jt
LnNjYWxlKHRpbGVCb3VuZGFyaWVzLnNpemUoKSAvIHRpbGVJbWFnZVNpemUpOwogCkBAIC0xMzUs
NyArMTMxLDkgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQ
YXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKICAgICAgICAgaWYgKHNob3VsZFRy
YW5zZm9ybU9uVGV4dFBhaW50aW5nKHJlbmRlcmVyLCBhZGRpdGlvbmFsVGV4dFRyYW5zZm9ybWF0
aW9uKSkKICAgICAgICAgICAgIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gKj0gYWRkaXRpb25hbFRl
eHRUcmFuc2Zvcm1hdGlvbjsKICAgICB9Ci0gICAgcGF0dGVybkRhdGEtPnBhdHRlcm4tPnNldFBh
dHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtKTsKKworICAgIC8vIEJ1
aWxkIHBhdHRlcm4uCisgICAgcGF0dGVybkRhdGEtPnBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
Y29waWVkSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuRGF0YS0+
dHJhbnNmb3JtIH0pOwogCiAgICAgLy8gVmFyaW91cyBjYWxscyBhYm92ZSBtYXkgdHJpZ2dlciBp
bnZhbGlkYXRpb25zIGluIHNvbWUgZnJpbmdlIGNhc2VzIChJbWFnZUJ1ZmZlciBhbGxvY2F0aW9u
CiAgICAgLy8gZmFpbHVyZXMgaW4gdGhlIFNWRyBpbWFnZSBjYWNoZSBmb3IgZXhhbXBsZSkuIFRv
IGF2b2lkIGhhdmluZyBvdXIgUGF0dGVybkRhdGEgZGVsZXRlZCBieQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMTlhZjI5OTY2ODI3ZDRi
NjAxZDhjZDUyN2JmMTRjOWE3N2Q3MDg5Yi4uYmI3Yzg0YmY4MTQ3NWNjYzkxOWYwNzgzMDA0ZDky
OTcxODAwZmU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC0xMDc1LDE4ICsxMDc1LDYgQEAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVS
TiBib29sIGRlY29kZU9wdGlvbmFsSW1hZ2UoRGVjb2RlciYgZGVjb2RlciwgUmVmUHRyPEltYWcK
ICAgICByZXR1cm4gZGVjb2RlSW1hZ2UoZGVjb2RlciwgaW1hZ2UpOwogfQogCi12b2lkIEFyZ3Vt
ZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgSW1h
Z2VIYW5kbGUmIGltYWdlSGFuZGxlKQotewotICAgIGVuY29kZU9wdGlvbmFsSW1hZ2UoZW5jb2Rl
ciwgaW1hZ2VIYW5kbGUuaW1hZ2UuZ2V0KCkpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8SW1h
Z2VIYW5kbGU+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgSW1hZ2VIYW5kbGUmIGltYWdlSGFu
ZGxlKQotewotICAgIGlmICghZGVjb2RlT3B0aW9uYWxJbWFnZShkZWNvZGVyLCBpbWFnZUhhbmRs
ZS5pbWFnZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQog
dm9pZCBBcmd1bWVudENvZGVyPFJlZjxGb250Pj46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBj
b25zdCBSZWY8V2ViQ29yZTo6Rm9udD4mIGZvbnQpCiB7CiAgICAgZW5jb2RlciA8PCBmb250LT5v
cmlnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgK
aW5kZXggMDBjMTQzZmJiYjg5ZDI2NjRjYWU1MGE1ZTFmYmYzZjhlOTE1OTUwNy4uNmY3MjE4MGY5
ODUzMjczZTNmMTZmNjEwYjRkNTMxZjFhY2YxOGFlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTEwOSw3ICsxMDksNiBAQCBjbGFzcyBGaXhl
ZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50czsKIGNsYXNzIEZvbnQ7CiBjbGFzcyBGb250UGxh
dGZvcm1EYXRhOwogY2xhc3MgSFRUUEhlYWRlck1hcDsKLWNsYXNzIEltYWdlSGFuZGxlOwogY2xh
c3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKQEAgLTQxOCwxMSAr
NDE3LDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxSZWY8V2ViQ29yZTo6Rm9u
dD4+IHsKICAgICBzdGF0aWMgT3B0aW9uYWw8V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YT4gZGVj
b2RlUGxhdGZvcm1EYXRhKERlY29kZXImKTsKIH07CiAKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6SW1hZ2VIYW5kbGU+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6OkltYWdlSGFuZGxlJik7Ci0gICAgc3RhdGljIFdBUk5f
VU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6SW1hZ2VIYW5kbGUm
KTsKLX07Ci0KIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0PiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419784</attachid>
            <date>2021-02-09 16:35:37 -0800</date>
            <delta_ts>2021-02-09 17:05:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210209163536.patch</filename>
            <type>text/plain</type>
            <size>44920</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdmNjkwYzRmM2Y2ZTAy
NmQ0N2ZjOTA3N2Y3OGM0ODIwZGU2Yzk3OC4uZGI2NzMyMjI3NGE0NDU1MDc0NDRkYzNlYWJlYjYx
ODBlNWQ3Yjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wMi0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZHMgYSBOYXRpdmVJbWFnZSBpbnN0ZWFkIG9mIGFuIEltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBjYWNoaW5nIHRo
ZSBQYXR0ZXJuIGRhdGEgaW4gdGhlIEdQVVAgc3RyYWlnaHRmb3J3YXJkIHNpbmNlCisgICAgICAg
IHdlIG5lZWQgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGFuZCBzZW5kIHRoZSBwYXR0ZXJuIGRh
dGEuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZh
c1BhdHRlcm4pOgorICAgICAgICBFeHRyYWN0IGEgTmF0aXZlSW1hZ2Ugb3V0IG9mIGFuIEltYWdl
LiBUaGUgcGxhdGZvcm0gUGF0dGVybnMgZGVhbCB3aXRoCisgICAgICAgIE5hdGl2ZUltYWdlcyBv
bmx5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgUmVt
b3ZlIEltYWdlSGFuZGxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpzZXRQYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICBNYWtl
IHRoZSBuZXcgc3RydWN0ICdQYXJhbWV0ZXJzJyBob2xkcyBhbGwgdGhlIG1lbWJlcnMgb3RoZXIg
dGhhbiB0aGUKKyAgICAgICAgTmF0aXZlSW1hZ2UuIFRoaXMgc3RydWN0ICsgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmZXIgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIHdpbGwgYmUgcmVjb3Jk
ZWQgZm9yIHRoZSBzdHJva2VQYXR0ZXJuIGFuZCB0aGUgZmlsbFBhdHRlcm4uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICBUaGUgcGxhdGZvcm0gUGF0dGVy
biBkZWFscyBvbmx5IHdpdGggTmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgU2V0
U3RhdGU6OnN0YXRlKCkgaXMgcmVuYW1lZCB0byBTZXRTdGF0ZUl0ZW06OnN0YXRlQ2hhbmdlKCkg
c2luY2UgaXQgCisgICAgICAgIHJldHVybnMgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjph
cHBseSk6CisgICAgICAgIFNldFN0YXRlOjphcHBseSgpIGhhcyB0byBiZSBhIHNwZWNpYWwgY2Fz
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIFNldFN0YXRlIHRvIGJlIHVzZWQgYnkgdGhlIGRl
Y29kZXIuIEFsbCB0aGUgbWVtYmVycworICAgICAgICBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSB3aWxsIGJlIGNvcGllZCBhcyBpcyBidXQgdGhlIHN0cm9rZVBhdHRlcm4KKyAgICAgICAg
YW5kIGZpbGxQYXR0ZXJuIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlaXIgTmF0aXZlSW1h
Z2VzIGFyZSByZXNvbHZlZAorICAgICAgICBpbiB0aGUgU2V0U3RhdGU6OmFwcGx5KCkgbWV0aG9k
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVD
aGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpz
dHJva2VQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmZpbGxQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OnN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUg
ZW5jb2RlIGFuZCB0aGUgZGVjb2Rpbmcgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4g
CisgICAgICAgIGJ5IHVzZSB0aGUgUGF0dGVybjo6UGFyYW1ldGVycyBhbmQgdGhlIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmVyIG9mIHRoZQorICAgICAgICBOYXRpdmVJbWFnZS4gICAgICAKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FjaGVO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFw
cGVuZFN0YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICBDYWNoZSB0aGUgTmF0aXZl
SW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgUmVz
b2x2ZSB0aGUgTmF0aXZlSW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuIGZy
b20gY2FjaGVkCisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6Cisg
ICAgICAgIFBhdHRlcm5zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggTmF0aXZlSW1hZ2VzLgorCiAy
MDIxLTAyLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAg
IEEgUGF0dGVybiB3aXRoIGFuIFNWRyBpbWFnZSBpcyBub3QgcmVuZGVyZWQgY29ycmVjdGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM3OTljZjAxYjAxNGE2OGFkMThmYzJiNGE1NGZkNmY2MzAzMWZkMjQuLjliOTYw
ODFhMGQ5MzEzOGQxNGQ4MjAzOWE5YjFkYjQ5NDdlMGMxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDItMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBQYXR0ZXJuIGhvbGRzIGEgTmF0aXZlSW1hZ2UgaW5zdGVhZCBvZiBhbiBJ
bWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVs
ZXRlIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgdGhlIEltYWdlIHNpbmNlIGl0IGlzIG5v
dCB1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjplbmNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMjEt
MDItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50
IFdlYlByb2Nlc3MgdG8gcmUtZW50ZXIgb24gc3luYyBJUEMgdG8gdGhlIEdQVVByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggNzJlYTFh
ODdjNmQwZTI2MDE4NzU3ZWUyZjdiYzYwNDYzYzlhYTgwNS4uMGFhMWYxMjFiZjY4NTc2NzQ4NGE1
ZDZiMmUyNzkzNWJkODYxNjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0dGVybi5jcHAKQEAgLTI4LDE5ICsyOCwxOSBAQAogCiAjaW5jbHVkZSAiRE9NTWF0cml4
MkRJbml0LmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4UmVhZE9ubHkuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxDYW52YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK1JlZjxDYW52
YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pCi0gICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoaW1h
Z2UpLCByZXBlYXRYLCByZXBlYXRZKSkKK0NhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVm
PE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBv
cmlnaW5DbGVhbikKKyAgICA6IG1fcGF0dGVybihQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIHsgcmVwZWF0WCwgcmVwZWF0WSB9KSkKICAgICAsIG1fb3JpZ2luQ2xlYW4ob3JpZ2luQ2xl
YW4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5k
ZXggYzhhOWUzY2UxNjFiYmI4ZjlhMWQ3NWJlMjlmZGNlYjgyMWNjOTkzMS4uZTQ2ZDIxYmM1MTM1
ZDlhNzRmNDU3NWM5ZGQ2NWU5Y2VjZGNiOGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47
CiBzdHJ1Y3QgRE9NTWF0cml4MkRJbml0OwogCiBjbGFzcyBDYW52YXNQYXR0ZXJuIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q2FudmFzUGF0dGVybj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2Fu
dmFzUGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pOworICAgIHN0YXRpYyBSZWY8Q2FudmFzUGF0dGVybj4gY3Jl
YXRlKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBw
YXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJl
cGVhdFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQ
YXR0ZXJuKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAKICAgICBSZWY8UGF0dGVy
bj4gbV9wYXR0ZXJuOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggODgzMGM1ZGRhZWRhNDdmMjI4MmUwNGQ4MTcyNDM0MWYwNGU4OWMzZC4uOWZmMjJh
N2MzZDVkZWNjZTZhNjRiYWFhNmFjYmVjMTE2YjEwMmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTE5MzcsNyArMTkzNywxNSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlm
IChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNTVkdJbWFnZSgpKQogICAgICAgICBvcmlnaW5DbGVh
biA9IGZhbHNlOwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZSgqY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50
LnJlbmRlcmVyKCkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICBhdXRv
KiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC5yZW5k
ZXJlcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
cmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0
dGVybihDYW52YXNCYXNlJiBjYW52YXMsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQpAQCAt
MTk0OCw4ICsxOTU2LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihDCiAKICAgICBpZiAoIWNv
cGllZEltYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY29waWVkSW1hZ2UtPm5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsg
Q2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjb3BpZWRJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSwgY2Fu
dmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBl
YXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFC
TEUoVklERU8pCkBAIC0xOTY0LDcgKzE5NzYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFz
UGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAog
CiAjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVtZW50Lm5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAg
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
bmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xl
YW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9ICFkcmF3aW5nQ29udGV4
dCgpIHx8IGRyYXdpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CkBAIC0x
OTc0LDcgKzE5ODYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlkZW9FbGVt
ZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAotICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlciksIFByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVh
bikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6
Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCmluZGV4IDBjODVmOGE4Mzc2Nzk2NmJhMjZiNWMzMzNlZDYwYzAxYTUwYWExMTYuLmU1ZjIy
MTBhZTk4NzMzZTk4NGFiNTg0ZjZmOWEzYzg0N2I1YTgwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMjAyLDkgKzEyMDIsMTAgQEAgUmVm
PEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlG
b3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1Bh
dHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgSW1hZ2UmIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZh
c1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7
IH0sIHRpbGVJbWFnZS5zaXplKCkgfTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSh0aWxlSW1hZ2UsIEZsb2F0
UG9pbnQoMCwgMCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwogICAgIGJvb2wgcmVwZWF0WCA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnJlcGVh
dFgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEuLmRhMDEwZjNmZGNkMDY4MDU2Mjhi
ODYwY2FlMzJiZDliZTlhNDU0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaApAQCAtMjEwLDExICsyMTAsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKIAotY2xhc3MgSW1hZ2VIYW5kbGUg
ewotcHVibGljOgotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci19OwotCiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW1hZ2UmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcAppbmRleCA3OTZhMDdjMTg2YjYyZmY0ZTZiNmVhMjYxMDdmZjlmYzRjNDM4ZTcxLi42
MzUzMjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDIzICszMSwyMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYm
IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCitSZWY8UGF0dGVybj4gUGF0
dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1QYXR0
ZXJuOjpQYXR0ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQot
ICAgICwgbV9yZXBlYXRYKHJlcGVhdFgpCi0gICAgLCBtX3JlcGVhdFkocmVwZWF0WSkKKyAgICAs
IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCiBQYXR0ZXJuOjp+UGF0dGVybigpID0g
ZGVmYXVsdDsKIAotdm9pZCBQYXR0ZXJuOjpzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbikKK3ZvaWQgUGF0dGVy
bjo6c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blNwYWNlVHJhbnNmb3JtKQogewotICAgIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24gPSBw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMucGF0dGVyblNwYWNl
VHJhbnNmb3JtID0gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggMmE1NjNkYTI2MTdkMWIwNDI0OGI5
MGFiMDYzOWRiMmNhZjlhODhjMC4uNmFiY2JkZDE1OTUxZDhmZjY5N2E2OGFhYTBlZmZiNmU5ZjU4
ZjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRv
cmNoIE1vYmlsZSwgSW5jLgogICoKQEAgLTUzLDc2ICs1Myw0MyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbWFnZTsKLWNsYXNzIEltYWdlSGFuZGxlOwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBh
cmFtZXRlcnMoYm9vbCByZXBlYXRYID0gdHJ1ZSwgYm9vbCByZXBlYXRZID0gdHJ1ZSwgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSA9IHsgfSkKKyAgICAgICAgICAgIDogcmVw
ZWF0WChyZXBlYXRYKQorICAgICAgICAgICAgLCByZXBlYXRZKHJlcGVhdFkpCisgICAgICAgICAg
ICAsIHBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBib29sIHJlcGVhdFg7CisgICAgICAgIGJvb2wgcmVwZWF0
WTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICB9
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPE5h
dGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAv
LyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVm
YXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24nCisgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0IG1h
cHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJT
cGFjZVRyYW5zZm9ybScKICNpZiAhVVNFKERJUkVDVDJEKQotICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VU
cmFuc2Zvcm1hdGlvbikgY29uc3Q7CisgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29u
c3Q7CiAjZWxzZQotICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4o
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxwaGEsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0OworICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxw
aGEsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdDsKICNl
bmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsgfTsKLSAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3JlcGVhdFg7IH0KLSAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGVhdFk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHZvaWQgc2V0UGF0
dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLnBhdHRlcm5TcGFjZVRyYW5zZm9ybTsgfTsKKyAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WDsgfQorICAgIGJvb2wgcmVwZWF0WSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAg
UGF0dGVybihSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVm
PEltYWdlPiBtX3RpbGVJbWFnZTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKLSAgICBib29sIG1fcmVwZWF0WDsKLSAgICBib29sIG1fcmVwZWF0WTsK
KyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1fdGlsZUltYWdlOworICAgIFBhcmFtZXRlcnMgbV9wYXJh
bWV0ZXJzOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUGF0dGVybjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgSW1hZ2VIYW5kbGUgaW1hZ2VIYW5k
bGU7Ci0gICAgaW1hZ2VIYW5kbGUuaW1hZ2UgPSBtX3RpbGVJbWFnZS5wdHIoKTsKLSAgICBlbmNv
ZGVyIDw8IGltYWdlSGFuZGxlOwotICAgIGVuY29kZXIgPDwgbV9wYXR0ZXJuU3BhY2VUcmFuc2Zv
cm1hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fcmVwZWF0WDsKLSAgICBlbmNvZGVyIDw8IG1fcmVw
ZWF0WTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlZjxQYXR0ZXJu
Pj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8SW1h
Z2VIYW5kbGU+IGltYWdlSGFuZGxlOwotICAgIGRlY29kZXIgPj4gaW1hZ2VIYW5kbGU7Ci0gICAg
aWYgKCFpbWFnZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAg
ZGVjb2RlciA+PiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIXBhdHRlcm5T
cGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8Ym9vbD4gcmVwZWF0WDsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFg7Ci0gICAgaWYg
KCFyZXBlYXRYKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
Ym9vbD4gcmVwZWF0WTsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFk7Ci0gICAgaWYgKCFyZXBlYXRZ
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKGltYWdlSGFuZGxlLT5pbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCAqcmVwZWF0
WCwgKnJlcGVhdFkpOwotICAgIHBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgqcGF0
dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIHJldHVybiBwYXR0ZXJuOwotfQotCiB9IC8v
bmFtZXNwYWNlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDczMjBkYTFjYmZlOTI4NWZkMTI2
ZjAwMjQxNDM4YzRkYmEzOWVjYzkuLjdmYWU3NzdjMzk2NmI0YzQ4NmRlMjIzMmIxOTExMzIzMWZk
OTJkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTY3LDcgKzU2Nyw3IEBAIEZpbGxTb3Vy
Y2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAg
ICBwYXR0ZXJuLm9iamVjdCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICBhdXRvJiBwYXR0ZXJu
SW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgICAgIHBhdHRlcm4u
c2l6ZSA9IEZsb2F0U2l6ZShwYXR0ZXJuSW1hZ2Uud2lkdGgoKSwgcGF0dGVybkltYWdlLmhlaWdo
dCgpKTsKKyAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybkltYWdlLnNpemUoKTsKICAgICAg
ICAgcGF0dGVybi50cmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA1NjBmNzQ3YThmYjY0ODFiZTRhMzAxODU4NTAw
YWE5ZmExNjBmNzg2Li4xMmJhMTc3MzkyZGQzNWQ2YjAzNGUxMGJiMjcyN2I3YjY1YjI4ZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJu
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dHRlcm5DYWlyby5jcHAKQEAgLTM1LDE4ICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7Cisg
ICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNh
aXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNl
KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHBsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNlciBz
cGFjZSBpdHNlbGYKICAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0cml4KG1f
cGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwogICAgIGNhaXJvX21hdHJpeF9pbnZlcnQoJm1h
dHJpeCk7CiAgICAgY2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4KHBhdHRlcm4sICZtYXRyaXgpOwog
Ci0gICAgaWYgKG1fcmVwZWF0WCB8fCBtX3JlcGVhdFkpCisgICAgaWYgKHJlcGVhdFgoKSB8fCBy
ZXBlYXRZKCkpCiAgICAgICAgIGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZChwYXR0ZXJuLCBDQUlS
T19FWFRFTkRfUkVQRUFUKTsKICAgICByZXR1cm4gcGF0dGVybjsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmluZGV4IDY5NTRjNTY2
NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQuLmYxYjllM2E3YzA1NTY5YTk4OTFiNjk4
ZDI4M2FiNTM5N2M3MjVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTU1LDI0ICs1NSwyMSBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJuUmVsZWFzZUNhbGxi
YWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLUNHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVh
dGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zv
cm1hdGlvbikgY29uc3QKK0NHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRl
cm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0CiB7Ci0g
ICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCkucmVjdCgpOworICAgIEZsb2F0UmVj
dCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKIAotICAgIEFmZmluZVRy
YW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtYXRpb24gKiBtX3Bh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJh
bnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICogcGF0dGVyblNwYWNlVHJhbnNmb3JtKCk7CiAg
ICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwogICAgIHBhdHRlcm5U
cmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAKLSAgICBQbGF0Zm9y
bUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7Ci0gICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxl
SW1hZ2UoKS5uYXRpdmVJbWFnZSgpKQotICAgICAgICBwbGF0Zm9ybUltYWdlID0gbmF0aXZlSW1h
Z2UtPnBsYXRmb3JtSW1hZ2UoKTsKLSAgICAKKyAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3Jt
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYgKCFwbGF0Zm9ybUlt
YWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIElmIHdlJ3JlIHJlcGVhdGlu
ZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2VkIHBhdHRlcm5zCiAg
ICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0aWxpbmctZWRnZSBw
aXhlbCBjcmFja3MuCi0gICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkpCisgICAgaWYgKHJl
cGVhdFgoKSAmJiByZXBlYXRZKCkpCiAgICAgICAgIHJldHVybiBDR1BhdHRlcm5DcmVhdGVXaXRo
SW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0sIGtDR1BhdHRlcm5U
aWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBzaG91bGQgYWxzbyBi
ZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJlZC4gVXNpbmcgZnJh
Y3Rpb25zIG9mIEZMVF9NQVggYWxzbwpAQCAtODAsOCArNzcsOCBAQCBDR1BhdHRlcm5SZWYgUGF0
dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNw
YWNlVHJhbgogICAgIC8vIElOVF9NQVggaXMgYWxtb3N0IGNvcnJlY3QsIGJ1dCB0aGVyZSBzZWVt
cyB0byBiZSBzb21lIG51bWJlciB3cmFwcGluZyBvY2N1cnJpbmcgbWFraW5nIHRoZSBmaWxsCiAg
ICAgLy8gcGF0dGVybiBpcyBub3QgZmlsbGVkIGNvcnJlY3RseS4KICAgICAvLyBUbyBtYWtlIGVy
cm9yIG9mIGZsb2F0aW5nIHBvaW50IGxlc3MgdGhhbiAwLjUsIHdlIHVzZSB0aGUgaGFsZiBvZiB0
aGUgbnVtYmVyIG9mIG1hbnRpc3NhIG9mIGZsb2F0ICgxIDw8IDIyKS4KLSAgICBDR0Zsb2F0IHhT
dGVwID0gbV9yZXBlYXRYID8gdGlsZVJlY3Qud2lkdGgoKSA6ICgxIDw8IDIyKTsKLSAgICBDR0Zs
b2F0IHlTdGVwID0gbV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7Cisg
ICAgQ0dGbG9hdCB4U3RlcCA9IHJlcGVhdFgoKSA/IHRpbGVSZWN0LndpZHRoKCkgOiAoMSA8PCAy
Mik7CisgICAgQ0dGbG9hdCB5U3RlcCA9IHJlcGVhdFkoKSA/IHRpbGVSZWN0LmhlaWdodCgpIDog
KDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNlIHRoZSBDR0ltYWdl
UmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFzZUNhbGxiYWNrCiAg
ICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdC5jcHAKaW5kZXggZDE1M2RmYTQ1YzIxYWQ4NzNlNGQ0ODQ2NzFmM2QwNGFjYjc0
ODU0Yi4uZTA3OWY3MzBiZTg1OWFjM2IwNWI5NDI5YzMwZTgzNjFkMTQzYWViNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3QuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgYm9vbCBEaXNwbGF5TGlzdDo6
c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFuZGxlIGl0ZW0pCiAg
ICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0Zm9ybU9wZXJhdGlv
bnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRT
dGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5IGRyb3AgdGhlIGl0
ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9ybS1zcGVjaWZpYy4K
LSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCisgICAg
ICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5z
dGF0ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBp
eGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVD
aGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtQnVmZmVyLmNwcAppbmRleCA1MGM4ZDhmNzU3N2ExNjcwNWVjZjg1NWFkMTY5ODE4YjZkZjk4
YmJhLi4zOTVmZTY3MWNjZjc0MjJhMTY1Njc2Yzc5Y2QxZTA5ZWY1NTlhOTRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtODksNyArODksNyBAQCB2
b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTogewotICAgICAgICBn
ZXQ8U2V0U3RhdGU+KCkuYXBwbHkoY29udGV4dCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldExpbmVD
YXA6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRleCAyMTNkYjljOGNm
NDJlYzFhZTJkMTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5mOTAwOTFmMTJkMjViYjdjNTYwOTI3NWQw
MTRkZWExYWIxMDI5M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCkBA
IC0yMDksMjMgKzIwOSwyOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKIH0KIAogU2V0U3RhdGU6
OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0YXRlKHN0YXRlLCBm
bGFncykKKyAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGUsIGZsYWdzKQogewogfQogCi1TZXRTdGF0
ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdl
KQotICAgIDogbV9zdGF0ZShzdGF0ZUNoYW5nZSkKK1NldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0IFBhdHRlcm5EYXRh
JiBzdHJva2VQYXR0ZXJuLCBjb25zdCBQYXR0ZXJuRGF0YSYgZmlsbFBhdHRlcm4pCisgICAgOiBt
X3N0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlKQorICAgICwgbV9zdHJva2VQYXR0ZXJuKHN0cm9rZVBh
dHRlcm4pCisgICAgLCBtX2ZpbGxQYXR0ZXJuKGZpbGxQYXR0ZXJuKQogewogfQogCi12b2lkIFNl
dFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0Cit2b2lkIFNldFN0
YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUltYWdlKiBzdHJva2VQ
YXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQogewotICAgIG1fc3Rh
dGUuYXBwbHkoY29udGV4dCk7CisgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5j
b250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkgJiYgc3Ry
b2tlUGF0dGVybkltYWdlKQorICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0
dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJuSW1hZ2UpLCBtX3N0
cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2UpICYm
IGZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0
dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybkltYWdlKSwgbV9maWxs
UGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5KGNvbnRleHQpOwog
fQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3Qg
U2V0U3RhdGUmIHN0YXRlKQogewotICAgIHRzIDw8IHN0YXRlLnN0YXRlKCk7CisgICAgdHMgPDwg
c3RhdGUuc3RhdGVDaGFuZ2UoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0
ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RJdGVtcy5oCmluZGV4IDRjZmJkODliMDQ2NTk1ZjI4MWQ0MWUyMTIwNWE3ZmYzYTZh
NjM2N2UuLjcwNmI4NGZmODA1MjFkMzliYjA1NzViMmI4NjM5MzM1Y2M3NmVhMGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjU0LDkgKzI1NCwxMiBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxzZTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhp
Y3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwotICAgIFdFQkNPUkVfRVhQT1JUIFNl
dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0gICAgCi0gICAgY29u
c3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZTsgfQorCisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hh
bmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQorICAgIGNvbnN0IFBhdHRlcm46
OlBhcmFtZXRlcnMmIHN0cm9rZVBhdHRlcm5QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9z
dHJva2VQYXR0ZXJuLnBhcmFtZXRlcnM7IH0KKyAgICBjb25zdCBQYXR0ZXJuOjpQYXJhbWV0ZXJz
JiBmaWxsUGF0dGVyblBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxQYXR0ZXJuLnBh
cmFtZXRlcnM7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgc3Ryb2tlUGF0dGVy
bkltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlUGF0dGVybi50aWxlSW1h
Z2VJZGVudGlmaWVyOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIGZpbGxQYXR0
ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUGF0dGVybi50aWxlSW1h
Z2VJZGVudGlmaWVyOyB9CiAKICAgICBzdGF0aWMgdm9pZCBidWlsZGVyU3RhdGUoR3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKQEAgLTI2NSwxOSArMjY4LDI4IEBAIHB1YmxpYzoKICAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNldFN0YXRlPiBkZWNv
ZGUoRGVjb2RlciYpOwogCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmKSBjb25zdDsK
KyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0
ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKIAogcHJpdmF0ZToKLSAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBtX3N0YXRlOworICAgIHN0cnVjdCBQYXR0ZXJu
RGF0YSB7CisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0aWxlSW1hZ2VJZGVu
dGlmaWVyOworICAgICAgICBQYXR0ZXJuOjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgfTsK
KworICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlJiwgY29uc3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRlcm4sIGNvbnN0IFBhdHRlcm5E
YXRhJiBmaWxsUGF0dGVybik7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBtX3N0
YXRlQ2hhbmdlOworICAgIFBhdHRlcm5EYXRhIG1fc3Ryb2tlUGF0dGVybjsKKyAgICBQYXR0ZXJu
RGF0YSBtX2ZpbGxQYXR0ZXJuOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
U2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewotICAgIGF1dG8gY2hh
bmdlRmxhZ3MgPSBtX3N0YXRlLm1fY2hhbmdlRmxhZ3M7CisgICAgYXV0byBjaGFuZ2VGbGFncyA9
IG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFnczsKICAgICBlbmNvZGVyIDw8IGNoYW5nZUZsYWdz
OwogCi0gICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlLm1fc3RhdGU7CisgICAgYXV0byYgc3RhdGUg
PSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMo
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBl
bmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CkBAIC0yODcsOCArMjk5LDEwIEBAIHZv
aWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNo
YW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJuQ2hh
bmdlKSkgewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlUGF0dGVybjsKLSAgICAg
ICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0
ZS5zdHJva2VQYXR0ZXJuOworICAgICAgICBpZiAoYXV0byYgcGF0dGVybiA9IHN0YXRlLnN0cm9r
ZVBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+dGlsZUltYWdlKCku
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmcGF0dGVy
bi0+cGFyYW1ldGVycygpKSwgc2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMpLCAxKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewpAQCAtMjk5LDggKzMxMywxMCBAQCB2b2lk
IFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRlcm5DaGFuZ2Up
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgISFzdGF0ZS5maWxsUGF0dGVybjsKLSAgICAgICAgaWYg
KHN0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuZmlsbFBh
dHRlcm47CisgICAgICAgIGlmIChhdXRvJiBwYXR0ZXJuID0gc3RhdGUuZmlsbFBhdHRlcm4pIHsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+dGlsZUltYWdlKCkucmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBlbmNvZGVyLmVuY29kZUZpeGVkTGVuZ3Ro
RGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmcGF0dGVybi0+cGFyYW1ldGVy
cygpKSwgc2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMpLCAxKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hh
ZG93Q2hhbmdlKSkgewpAQCAtMzY2LDYgKzM4Miw5IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRT
dGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2Ugc3RhdGVDaGFuZ2U7CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncyA9ICpjaGFu
Z2VGbGFnczsKIAorICAgIFBhdHRlcm5EYXRhIHN0cm9rZVBhdHRlcm47CisgICAgUGF0dGVybkRh
dGEgZmlsbFBhdHRlcm47CisKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFncy5jb250
YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2UpKSB7CiAgICAg
ICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0cm9rZUdyYWRpZW50OwogICAgICAgICBkZWNvZGVyID4+
IGhhc1N0cm9rZUdyYWRpZW50OwpAQCAtMzg4LDExICs0MDcsMTYgQEAgT3B0aW9uYWw8U2V0U3Rh
dGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGhhc1N0cm9rZVBhdHRlcm4udmFsdWUoKSkg
ewotICAgICAgICAgICAgYXV0byBzdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6ZGVjb2RlKGRlY29k
ZXIpOwotICAgICAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQorICAgICAgICAgICAgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXI7CisgICAgICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsK
KyAgICAgICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIHN0YXRlQ2hhbmdlLm1f
c3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUoKnN0cm9rZVBhdHRlcm4pOworICAgICAgICAg
ICAgUGF0dGVybjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPigmcGFy
YW1ldGVycyksIHNpemVvZihQYXR0ZXJuOjpQYXJhbWV0ZXJzKSwgMSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3Ryb2tl
UGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgcGFyYW1ldGVycyB9Owog
ICAgICAgICB9CiAgICAgfQogCkBAIC00MTgsMTEgKzQ0MiwxNiBAQCBPcHRpb25hbDxTZXRTdGF0
ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoaGFzRmlsbFBhdHRlcm4udmFsdWUoKSkgewot
ICAgICAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsK
LSAgICAgICAgICAgIGlmICghZmlsbFBhdHRlcm4pCisgICAgICAgICAgICBPcHRpb25hbDxSZW5k
ZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAg
ICAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAg
ICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5m
aWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKKyAgICAgICAgICAgIFBhdHRlcm46
OlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGVG
aXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnBhcmFtZXRlcnMpLCBz
aXplb2YoUGF0dGVybjo6UGFyYW1ldGVycyksIDEpKQorICAgICAgICAgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbGxQYXR0ZXJuID0geyAq
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBwYXJhbWV0ZXJzIH07CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTU4Myw3ICs2MTIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBzdGF0ZUNoYW5nZS5tX3N0YXRlLnNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOwogICAgIH0KIAot
ICAgIHJldHVybiB7IHN0YXRlQ2hhbmdlIH07CisgICAgcmV0dXJuIHt7IHN0YXRlQ2hhbmdlLCBz
dHJva2VQYXR0ZXJuLCBmaWxsUGF0dGVybiB9fTsKIH0KIAogY2xhc3MgU2V0TGluZUNhcCB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggNGNkYzNiMGFlY2M5
NGRjYjE2NjZmMDk5Mjk0MTY2NTE3MjRiM2EzYS4uOTlmNzE2YmFlNTZiZTlhOWU0MmYwYmJiYjM0
ZTI2MzdiY2ZhMGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cApAQCAtODUsOSArODUsMjAgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5SW5saW5lU3RhdGVD
aGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGEKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAordm9pZCBSZWNvcmRlcjo6Y2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYg
aW1hZ2UpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVsZWdhdGUtPmNhY2hl
TmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBH
cmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCiB7CiAgICAgaWYgKCFjb250YWluc09ubHlJ
bmxpbmVTdGF0ZUNoYW5nZXMoY2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7CisgICAgICAgIGlmIChh
dXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikKKyAgICAgICAgICAg
IGNhY2hlTmF0aXZlSW1hZ2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAgICAgICBpZiAoYXV0
byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAgICAgICAgICAgY2Fj
aGVOYXRpdmVJbWFnZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAgIGFwcGVuZDxTZXRT
dGF0ZT4oY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xODMsMTcgKzE5NCwxMyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3SW1hZ2VCdWZmZXIo
V2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9hdFJlYwogCiB2b2lk
IFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9h
dFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAg
ICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBj
YWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICBhcHBlbmQ8RHJhd05hdGl2ZUltYWdlPihpbWFn
ZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgc3Jj
UmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0ZXJuKE5hdGl2ZUlt
YWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYg
ZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAg
Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgYXBwZW5kPERyYXdQYXR0ZXJuPihpbWFnZS5y
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0UmVjdCwgdGlsZVJl
Y3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25zKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjRmNzhhY2I2YzQ5NjM5ODUy
NjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uODA0NmEyMWEyZTE4MTE0OTBjNjcwNjAyOTVjNjdlMGRk
YWFhYzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC0xNzEs
NiArMTcxLDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgd2lsbEFwcGVu
ZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCisgICAgdm9pZCBjYWNoZU5hdGl2ZUltYWdlKE5hdGl2
ZUltYWdlJik7CisKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZs
YWdzKTsKIAogICAgIEZsb2F0UmVjdCBleHRlbnRGcm9tTG9jYWxCb3VuZHMoY29uc3QgRmxvYXRS
ZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAKaW5k
ZXggMzI1ZGI5NzM5ZTlmY2YyMTMxZTkxNGU2YWU1Yzg1YTgyZWJhZTFjOS4uNGQ5MDZhMjQ1NjQ0
NjJmNmUwMTgxNjlkMWIxNjg5OTJkOGRmMmNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlcGxheWVyLmNwcApAQCAtNzAsNiArNzAsMjkgQEAgaW5saW5lIHN0YXRpYyBPcHRpb25h
bDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1hZ2VJdGVtKEdyYXBo
aWMKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCitpbmxpbmUgc3RhdGljIE9w
dGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRTdGF0ZUl0ZW0oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hNYXAmIG5hdGl2ZUlt
YWdlcywgSXRlbUhhbmRsZSBpdGVtKQoreworICAgIGF1dG8mIHNldFN0YXRlSXRlbSA9IGl0ZW0u
Z2V0PFNldFN0YXRlPigpOworCisgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSA9
IG51bGxwdHI7CisgICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOwor
CisgICAgaWYgKGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLnN0cm9rZVBh
dHRlcm5JbWFnZUlkZW50aWZpZXIoKSkgeworICAgICAgICBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBu
YXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAgIGlmICghc3Ryb2tl
UGF0dGVybkltYWdlKQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKKyAg
ICB9CisKKyAgICBpZiAoYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRTdGF0ZUl0ZW0uZmls
bFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkgeworICAgICAgICBmaWxsUGF0dGVybkltYWdlID0g
bmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIWZpbGxQ
YXR0ZXJuSW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOworICAg
IH0KKworICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBzdHJva2VQYXR0ZXJuSW1hZ2Us
IGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIHRlbXBs
YXRlPGNsYXNzIFQ+CiBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZv
bnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRlbSkKIHsKQEAgLTEx
Nyw2ICsxNDAsMTIgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlSZWFzb24+LCBPcHRp
b25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXAKICAgICAgICAgcmV0dXJuIHsg
V1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKKyAgICBpZiAoaXRlbS5pczxT
ZXRTdGF0ZT4oKSkgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVkUmVzb3VyY2VJZGVu
dGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0obV9jb250ZXh0LCBtX25hdGl2ZUltYWdlcywgaXRl
bSkpCisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpNaXNzaW5nQ2FjaGVk
UmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllcikgfTsKKyAg
ICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKKyAgICB9CisKICAg
ICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA1NjMzYTBhZmE2NGRkNjZkNmFlZDllOTdkZTJlNjhk
YmUxNmIzODExLi4xNjVlNjdiYzMwZjQ1YzY0NmFiMmIwNDhlNjIwODNjNzdmNDQxMmM4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCkBAIC03MiwxNSArNzIsMTUgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZmZWN0TG9jYXRpb24u
eCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwogICAgIHRpbGVJbWFnZUNvbnRleHQuZHJh
d0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgaW4tPmFic29sdXRlUGFpbnRSZWN0KCkubG9jYXRpb24o
KSk7CiAKLSAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFn
ZShXVEZNb3ZlKHRpbGVJbWFnZSkpOworICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IEltYWdlQnVm
ZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7CiAgICAgaWYgKCF0
aWxlSW1hZ2VDb3B5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUodGlsZUltYWdlQ29weS5yZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsK
LQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtOwogICAgIHBhdHRlcm5UcmFu
c2Zvcm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRpb24gLSBtYXhFZmZlY3RMb2NhdGlvbik7
Ci0gICAgcGF0dGVybi5nZXQoKS5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVyblRyYW5z
Zm9ybSk7CisKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlQ29w
eS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFuc2Zvcm19KTsKKwog
ICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0
KCk7CiAgICAgZmlsdGVyQ29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsK
ICAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGFic29s
dXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDBkMDQ4MTFiM2U5ODFjNTE2NTEzNTRhZDgwZjBi
Y2Y3NjJhMGJlYmQuLmM3MGMxNGFkZTFmZjViZGVkZTQ3NGNlZmJlMzgxMzA4MDE0NWQxNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBA
IC0zMjY2LDE0ICszMjY2LDEzIEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRl
c2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAgICAgICAgIGlt
YWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB7IHRleHRHYXAsIHlPZmZzZXQgfSwg
MCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9J
bWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7CisgICAg
YXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3Zl
KGltYWdlQnVmZmVyKSk7CisKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVybk9mZnNldFRyYW5z
Zm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0
ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAgIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0uc2NhbGUo
MSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCkpOwotICAgIGZpbGxQYXR0ZXJuLT5zZXRQYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybk9mZnNldFRyYW5zZm9ybSk7CiAKLSAgICByZXR1cm4g
ZmlsbFBhdHRlcm47CisgICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFz
ZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtfSk7CiB9Owog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlMzQyNDMxZDE0OTFmM2YxZDBiYmQ0YmNm
OTVhMDUyNmVkMDMwZmQxLi45NDcxOWIzZWY4NzcyZWZjYTA3YzBlMmIzNWRkMWMwNDA2MDk3MzY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTIsMTYgKzExMiwxMiBAQCBQYXR0ZXJuRGF0YSog
UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIE9wdAogCiAgICAgY29uc3QgSW50U2l6ZSB0aWxlSW1hZ2VTaXplID0gdGlsZUltYWdl
LT5sb2dpY2FsU2l6ZSgpOwogCi0gICAgUmVmUHRyPEltYWdlPiBjb3BpZWRJbWFnZSA9IEltYWdl
QnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7CisgICAgYXV0byBjb3Bp
ZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUlt
YWdlKSk7CiAgICAgaWYgKCFjb3BpZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EYXRhPigpOwotICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3Jl
YXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOwotCiAgICAgLy8g
Q29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgotCisgICAgYXV0byBwYXR0ZXJu
RGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVybkRhdGEtPnRyYW5z
Zm9ybS50cmFuc2xhdGUodGlsZUJvdW5kYXJpZXMubG9jYXRpb24oKSk7CiAgICAgcGF0dGVybkRh
dGEtPnRyYW5zZm9ybS5zY2FsZSh0aWxlQm91bmRhcmllcy5zaXplKCkgLyB0aWxlSW1hZ2VTaXpl
KTsKIApAQCAtMTM1LDcgKzEzMSw5IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBh
dHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgT3B0CiAgICAgICAg
IGlmIChzaG91bGRUcmFuc2Zvcm1PblRleHRQYWludGluZyhyZW5kZXJlciwgYWRkaXRpb25hbFRl
eHRUcmFuc2Zvcm1hdGlvbikpCiAgICAgICAgICAgICBwYXR0ZXJuRGF0YS0+dHJhbnNmb3JtICo9
IGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtYXRpb247CiAgICAgfQotICAgIHBhdHRlcm5EYXRhLT5w
YXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybkRhdGEtPnRyYW5zZm9ybSk7
CisKKyAgICAvLyBCdWlsZCBwYXR0ZXJuLgorICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwg
cGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKIAogICAgIC8vIFZhcmlvdXMgY2FsbHMgYWJvdmUg
bWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNlcyAoSW1hZ2VCdWZm
ZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1hZ2UgY2FjaGUgZm9y
IGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRlbGV0ZWQgYnkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDE5
YWYyOTk2NjgyN2Q0YjYwMWQ4Y2Q1MjdiZjE0YzlhNzdkNzA4OWIuLmJiN2M4NGJmODE0NzVjY2M5
MTlmMDc4MzAwNGQ5Mjk3MTgwMGZlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vi
Q29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTA3NSwxOCArMTA3NSw2IEBAIHN0YXRpYyBXQVJO
X1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbEltYWdlKERlY29kZXImIGRlY29kZXIs
IFJlZlB0cjxJbWFnCiAgICAgcmV0dXJuIGRlY29kZUltYWdlKGRlY29kZXIsIGltYWdlKTsKIH0K
IAotdm9pZCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIsIGNvbnN0IEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBlbmNvZGVPcHRpb25h
bEltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKLX0KLQotYm9vbCBBcmd1
bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEltYWdlSGFu
ZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBpZiAoIWRlY29kZU9wdGlvbmFsSW1hZ2UoZGVjb2Rl
ciwgaW1hZ2VIYW5kbGUuaW1hZ2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+OjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQogewogICAgIGVuY29k
ZXIgPDwgZm9udC0+b3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IDAwYzE0M2ZiYmI4OWQyNjY0Y2FlNTBhNWUxZmJmM2Y4ZTkxNTk1
MDcuLjZmNzIxODBmOTg1MzI3M2UzZjE2ZjYxMGI0ZDUzMWYxYWNmMThhZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0xMDksNyArMTA5LDYg
QEAgY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBjbGFzcyBGb250Owog
Y2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci1jbGFzcyBJbWFn
ZUhhbmRsZTsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7
CkBAIC00MTgsMTEgKzQxNyw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8UmVm
PFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0
Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7Ci0gICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwotICAg
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6
OkltYWdlSGFuZGxlJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewogICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNvZGVy
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3RhdGljIFdBUk5fVU5V
U0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7Cg==
</data>
<flag name="commit-queue"
          id="438124"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419787</attachid>
            <date>2021-02-09 17:01:45 -0800</date>
            <delta_ts>2021-02-09 17:25:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210209170144.patch</filename>
            <type>text/plain</type>
            <size>44989</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdmNjkwYzRmM2Y2ZTAy
NmQ0N2ZjOTA3N2Y3OGM0ODIwZGU2Yzk3OC4uZGI2NzMyMjI3NGE0NDU1MDc0NDRkYzNlYWJlYjYx
ODBlNWQ3Yjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wMi0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZHMgYSBOYXRpdmVJbWFnZSBpbnN0ZWFkIG9mIGFuIEltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBjYWNoaW5nIHRo
ZSBQYXR0ZXJuIGRhdGEgaW4gdGhlIEdQVVAgc3RyYWlnaHRmb3J3YXJkIHNpbmNlCisgICAgICAg
IHdlIG5lZWQgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGFuZCBzZW5kIHRoZSBwYXR0ZXJuIGRh
dGEuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZh
c1BhdHRlcm4pOgorICAgICAgICBFeHRyYWN0IGEgTmF0aXZlSW1hZ2Ugb3V0IG9mIGFuIEltYWdl
LiBUaGUgcGxhdGZvcm0gUGF0dGVybnMgZGVhbCB3aXRoCisgICAgICAgIE5hdGl2ZUltYWdlcyBv
bmx5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgUmVt
b3ZlIEltYWdlSGFuZGxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpzZXRQYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICBNYWtl
IHRoZSBuZXcgc3RydWN0ICdQYXJhbWV0ZXJzJyBob2xkcyBhbGwgdGhlIG1lbWJlcnMgb3RoZXIg
dGhhbiB0aGUKKyAgICAgICAgTmF0aXZlSW1hZ2UuIFRoaXMgc3RydWN0ICsgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmZXIgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIHdpbGwgYmUgcmVjb3Jk
ZWQgZm9yIHRoZSBzdHJva2VQYXR0ZXJuIGFuZCB0aGUgZmlsbFBhdHRlcm4uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICBUaGUgcGxhdGZvcm0gUGF0dGVy
biBkZWFscyBvbmx5IHdpdGggTmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgU2V0
U3RhdGU6OnN0YXRlKCkgaXMgcmVuYW1lZCB0byBTZXRTdGF0ZUl0ZW06OnN0YXRlQ2hhbmdlKCkg
c2luY2UgaXQgCisgICAgICAgIHJldHVybnMgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjph
cHBseSk6CisgICAgICAgIFNldFN0YXRlOjphcHBseSgpIGhhcyB0byBiZSBhIHNwZWNpYWwgY2Fz
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIFNldFN0YXRlIHRvIGJlIHVzZWQgYnkgdGhlIGRl
Y29kZXIuIEFsbCB0aGUgbWVtYmVycworICAgICAgICBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSB3aWxsIGJlIGNvcGllZCBhcyBpcyBidXQgdGhlIHN0cm9rZVBhdHRlcm4KKyAgICAgICAg
YW5kIGZpbGxQYXR0ZXJuIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlaXIgTmF0aXZlSW1h
Z2VzIGFyZSByZXNvbHZlZAorICAgICAgICBpbiB0aGUgU2V0U3RhdGU6OmFwcGx5KCkgbWV0aG9k
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVD
aGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpz
dHJva2VQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmZpbGxQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OnN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUg
ZW5jb2RlIGFuZCB0aGUgZGVjb2Rpbmcgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4g
CisgICAgICAgIGJ5IHVzZSB0aGUgUGF0dGVybjo6UGFyYW1ldGVycyBhbmQgdGhlIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmVyIG9mIHRoZQorICAgICAgICBOYXRpdmVJbWFnZS4gICAgICAKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FjaGVO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFw
cGVuZFN0YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICBDYWNoZSB0aGUgTmF0aXZl
SW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgUmVz
b2x2ZSB0aGUgTmF0aXZlSW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuIGZy
b20gY2FjaGVkCisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6Cisg
ICAgICAgIFBhdHRlcm5zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggTmF0aXZlSW1hZ2VzLgorCiAy
MDIxLTAyLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAg
IEEgUGF0dGVybiB3aXRoIGFuIFNWRyBpbWFnZSBpcyBub3QgcmVuZGVyZWQgY29ycmVjdGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM3OTljZjAxYjAxNGE2OGFkMThmYzJiNGE1NGZkNmY2MzAzMWZkMjQuLjliOTYw
ODFhMGQ5MzEzOGQxNGQ4MjAzOWE5YjFkYjQ5NDdlMGMxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDItMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBQYXR0ZXJuIGhvbGRzIGEgTmF0aXZlSW1hZ2UgaW5zdGVhZCBvZiBhbiBJ
bWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVs
ZXRlIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgdGhlIEltYWdlIHNpbmNlIGl0IGlzIG5v
dCB1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjplbmNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMjEt
MDItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50
IFdlYlByb2Nlc3MgdG8gcmUtZW50ZXIgb24gc3luYyBJUEMgdG8gdGhlIEdQVVByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggNzJlYTFh
ODdjNmQwZTI2MDE4NzU3ZWUyZjdiYzYwNDYzYzlhYTgwNS4uMGFhMWYxMjFiZjY4NTc2NzQ4NGE1
ZDZiMmUyNzkzNWJkODYxNjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0dGVybi5jcHAKQEAgLTI4LDE5ICsyOCwxOSBAQAogCiAjaW5jbHVkZSAiRE9NTWF0cml4
MkRJbml0LmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4UmVhZE9ubHkuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxDYW52YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK1JlZjxDYW52
YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pCi0gICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoaW1h
Z2UpLCByZXBlYXRYLCByZXBlYXRZKSkKK0NhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVm
PE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBv
cmlnaW5DbGVhbikKKyAgICA6IG1fcGF0dGVybihQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIHsgcmVwZWF0WCwgcmVwZWF0WSB9KSkKICAgICAsIG1fb3JpZ2luQ2xlYW4ob3JpZ2luQ2xl
YW4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5k
ZXggYzhhOWUzY2UxNjFiYmI4ZjlhMWQ3NWJlMjlmZGNlYjgyMWNjOTkzMS4uZTQ2ZDIxYmM1MTM1
ZDlhNzRmNDU3NWM5ZGQ2NWU5Y2VjZGNiOGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47
CiBzdHJ1Y3QgRE9NTWF0cml4MkRJbml0OwogCiBjbGFzcyBDYW52YXNQYXR0ZXJuIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q2FudmFzUGF0dGVybj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2Fu
dmFzUGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pOworICAgIHN0YXRpYyBSZWY8Q2FudmFzUGF0dGVybj4gY3Jl
YXRlKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBw
YXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJl
cGVhdFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQ
YXR0ZXJuKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAKICAgICBSZWY8UGF0dGVy
bj4gbV9wYXR0ZXJuOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggODgzMGM1ZGRhZWRhNDdmMjI4MmUwNGQ4MTcyNDM0MWYwNGU4OWMzZC4uOWZmMjJh
N2MzZDVkZWNjZTZhNjRiYWFhNmFjYmVjMTE2YjEwMmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTE5MzcsNyArMTkzNywxNSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlm
IChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNTVkdJbWFnZSgpKQogICAgICAgICBvcmlnaW5DbGVh
biA9IGZhbHNlOwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZSgqY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50
LnJlbmRlcmVyKCkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICBhdXRv
KiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC5yZW5k
ZXJlcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
cmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0
dGVybihDYW52YXNCYXNlJiBjYW52YXMsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQpAQCAt
MTk0OCw4ICsxOTU2LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihDCiAKICAgICBpZiAoIWNv
cGllZEltYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY29waWVkSW1hZ2UtPm5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsg
Q2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjb3BpZWRJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSwgY2Fu
dmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBl
YXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFC
TEUoVklERU8pCkBAIC0xOTY0LDcgKzE5NzYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFz
UGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAog
CiAjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVtZW50Lm5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAg
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
bmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xl
YW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9ICFkcmF3aW5nQ29udGV4
dCgpIHx8IGRyYXdpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CkBAIC0x
OTc0LDcgKzE5ODYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlkZW9FbGVt
ZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAotICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlciksIFByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVh
bikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6
Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCmluZGV4IDBjODVmOGE4Mzc2Nzk2NmJhMjZiNWMzMzNlZDYwYzAxYTUwYWExMTYuLmU1ZjIy
MTBhZTk4NzMzZTk4NGFiNTg0ZjZmOWEzYzg0N2I1YTgwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMjAyLDkgKzEyMDIsMTAgQEAgUmVm
PEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlG
b3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1Bh
dHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgSW1hZ2UmIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZh
c1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7
IH0sIHRpbGVJbWFnZS5zaXplKCkgfTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSh0aWxlSW1hZ2UsIEZsb2F0
UG9pbnQoMCwgMCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwogICAgIGJvb2wgcmVwZWF0WCA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnJlcGVh
dFgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEuLmRhMDEwZjNmZGNkMDY4MDU2Mjhi
ODYwY2FlMzJiZDliZTlhNDU0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaApAQCAtMjEwLDExICsyMTAsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKIAotY2xhc3MgSW1hZ2VIYW5kbGUg
ewotcHVibGljOgotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci19OwotCiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW1hZ2UmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcAppbmRleCA3OTZhMDdjMTg2YjYyZmY0ZTZiNmVhMjYxMDdmZjlmYzRjNDM4ZTcxLi42
MzUzMjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDIzICszMSwyMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYm
IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCitSZWY8UGF0dGVybj4gUGF0
dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1QYXR0
ZXJuOjpQYXR0ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQot
ICAgICwgbV9yZXBlYXRYKHJlcGVhdFgpCi0gICAgLCBtX3JlcGVhdFkocmVwZWF0WSkKKyAgICAs
IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCiBQYXR0ZXJuOjp+UGF0dGVybigpID0g
ZGVmYXVsdDsKIAotdm9pZCBQYXR0ZXJuOjpzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbikKK3ZvaWQgUGF0dGVy
bjo6c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blNwYWNlVHJhbnNmb3JtKQogewotICAgIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24gPSBw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMucGF0dGVyblNwYWNl
VHJhbnNmb3JtID0gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggMmE1NjNkYTI2MTdkMWIwNDI0OGI5
MGFiMDYzOWRiMmNhZjlhODhjMC4uNmFiY2JkZDE1OTUxZDhmZjY5N2E2OGFhYTBlZmZiNmU5ZjU4
ZjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRv
cmNoIE1vYmlsZSwgSW5jLgogICoKQEAgLTUzLDc2ICs1Myw0MyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbWFnZTsKLWNsYXNzIEltYWdlSGFuZGxlOwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBh
cmFtZXRlcnMoYm9vbCByZXBlYXRYID0gdHJ1ZSwgYm9vbCByZXBlYXRZID0gdHJ1ZSwgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSA9IHsgfSkKKyAgICAgICAgICAgIDogcmVw
ZWF0WChyZXBlYXRYKQorICAgICAgICAgICAgLCByZXBlYXRZKHJlcGVhdFkpCisgICAgICAgICAg
ICAsIHBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBib29sIHJlcGVhdFg7CisgICAgICAgIGJvb2wgcmVwZWF0
WTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICB9
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPE5h
dGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAv
LyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVm
YXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24nCisgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0IG1h
cHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJT
cGFjZVRyYW5zZm9ybScKICNpZiAhVVNFKERJUkVDVDJEKQotICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VU
cmFuc2Zvcm1hdGlvbikgY29uc3Q7CisgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29u
c3Q7CiAjZWxzZQotICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4o
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxwaGEsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0OworICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxw
aGEsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdDsKICNl
bmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsgfTsKLSAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3JlcGVhdFg7IH0KLSAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGVhdFk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHZvaWQgc2V0UGF0
dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLnBhdHRlcm5TcGFjZVRyYW5zZm9ybTsgfTsKKyAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WDsgfQorICAgIGJvb2wgcmVwZWF0WSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAg
UGF0dGVybihSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVm
PEltYWdlPiBtX3RpbGVJbWFnZTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKLSAgICBib29sIG1fcmVwZWF0WDsKLSAgICBib29sIG1fcmVwZWF0WTsK
KyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1fdGlsZUltYWdlOworICAgIFBhcmFtZXRlcnMgbV9wYXJh
bWV0ZXJzOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUGF0dGVybjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgSW1hZ2VIYW5kbGUgaW1hZ2VIYW5k
bGU7Ci0gICAgaW1hZ2VIYW5kbGUuaW1hZ2UgPSBtX3RpbGVJbWFnZS5wdHIoKTsKLSAgICBlbmNv
ZGVyIDw8IGltYWdlSGFuZGxlOwotICAgIGVuY29kZXIgPDwgbV9wYXR0ZXJuU3BhY2VUcmFuc2Zv
cm1hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fcmVwZWF0WDsKLSAgICBlbmNvZGVyIDw8IG1fcmVw
ZWF0WTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlZjxQYXR0ZXJu
Pj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8SW1h
Z2VIYW5kbGU+IGltYWdlSGFuZGxlOwotICAgIGRlY29kZXIgPj4gaW1hZ2VIYW5kbGU7Ci0gICAg
aWYgKCFpbWFnZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAg
ZGVjb2RlciA+PiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIXBhdHRlcm5T
cGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8Ym9vbD4gcmVwZWF0WDsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFg7Ci0gICAgaWYg
KCFyZXBlYXRYKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
Ym9vbD4gcmVwZWF0WTsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFk7Ci0gICAgaWYgKCFyZXBlYXRZ
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKGltYWdlSGFuZGxlLT5pbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCAqcmVwZWF0
WCwgKnJlcGVhdFkpOwotICAgIHBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgqcGF0
dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIHJldHVybiBwYXR0ZXJuOwotfQotCiB9IC8v
bmFtZXNwYWNlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDczMjBkYTFjYmZlOTI4NWZkMTI2
ZjAwMjQxNDM4YzRkYmEzOWVjYzkuLjdmYWU3NzdjMzk2NmI0YzQ4NmRlMjIzMmIxOTExMzIzMWZk
OTJkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTY3LDcgKzU2Nyw3IEBAIEZpbGxTb3Vy
Y2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAg
ICBwYXR0ZXJuLm9iamVjdCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICBhdXRvJiBwYXR0ZXJu
SW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgICAgIHBhdHRlcm4u
c2l6ZSA9IEZsb2F0U2l6ZShwYXR0ZXJuSW1hZ2Uud2lkdGgoKSwgcGF0dGVybkltYWdlLmhlaWdo
dCgpKTsKKyAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybkltYWdlLnNpemUoKTsKICAgICAg
ICAgcGF0dGVybi50cmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA1NjBmNzQ3YThmYjY0ODFiZTRhMzAxODU4NTAw
YWE5ZmExNjBmNzg2Li45MGM3ZTA0OTI2MDQ3NmMxZmI4YjMzZDM4OGQ0ZDA1ZWUyZDYyZjQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJu
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dHRlcm5DYWlyby5jcHAKQEAgLTM1LDE4ICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7Cisg
ICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNh
aXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNl
KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHBsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNlciBz
cGFjZSBpdHNlbGYKLSAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0cml4KG1f
cGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOworICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9
IHRvQ2Fpcm9NYXRyaXgobV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pOwogICAgIGNhaXJvX21hdHJp
eF9pbnZlcnQoJm1hdHJpeCk7CiAgICAgY2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4KHBhdHRlcm4s
ICZtYXRyaXgpOwogCi0gICAgaWYgKG1fcmVwZWF0WCB8fCBtX3JlcGVhdFkpCisgICAgaWYgKHJl
cGVhdFgoKSB8fCByZXBlYXRZKCkpCiAgICAgICAgIGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZChw
YXR0ZXJuLCBDQUlST19FWFRFTkRfUkVQRUFUKTsKICAgICByZXR1cm4gcGF0dGVybjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmlu
ZGV4IDY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQuLmYxYjllM2E3YzA1
NTY5YTk4OTFiNjk4ZDI4M2FiNTM5N2M3MjVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU1LDI0ICs1NSwyMSBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJu
UmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLUNHUGF0dGVyblJlZiBQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2Vy
U3BhY2VUcmFuc2Zvcm1hdGlvbikgY29uc3QKK0NHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0p
IGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCkucmVjdCgpOwor
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKIAot
ICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24gKiBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIEFmZmluZVRyYW5zZm9y
bSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICogcGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwog
ICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAK
LSAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7Ci0gICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpKQotICAgICAgICBwbGF0Zm9ybUltYWdl
ID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKLSAgICAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYg
KCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIElmIHdl
J3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2Vk
IHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0
aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCi0gICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkp
CisgICAgaWYgKHJlcGVhdFgoKSAmJiByZXBlYXRZKCkpCiAgICAgICAgIHJldHVybiBDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0s
IGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBz
aG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJl
ZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwpAQCAtODAsOCArNzcsOCBAQCBDR1Bh
dHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElOVF9NQVggaXMgYWxtb3N0IGNvcnJlY3QsIGJ1
dCB0aGVyZSBzZWVtcyB0byBiZSBzb21lIG51bWJlciB3cmFwcGluZyBvY2N1cnJpbmcgbWFraW5n
IHRoZSBmaWxsCiAgICAgLy8gcGF0dGVybiBpcyBub3QgZmlsbGVkIGNvcnJlY3RseS4KICAgICAv
LyBUbyBtYWtlIGVycm9yIG9mIGZsb2F0aW5nIHBvaW50IGxlc3MgdGhhbiAwLjUsIHdlIHVzZSB0
aGUgaGFsZiBvZiB0aGUgbnVtYmVyIG9mIG1hbnRpc3NhIG9mIGZsb2F0ICgxIDw8IDIyKS4KLSAg
ICBDR0Zsb2F0IHhTdGVwID0gbV9yZXBlYXRYID8gdGlsZVJlY3Qud2lkdGgoKSA6ICgxIDw8IDIy
KTsKLSAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAo
MSA8PCAyMik7CisgICAgQ0dGbG9hdCB4U3RlcCA9IHJlcGVhdFgoKSA/IHRpbGVSZWN0LndpZHRo
KCkgOiAoMSA8PCAyMik7CisgICAgQ0dGbG9hdCB5U3RlcCA9IHJlcGVhdFkoKSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZDE1M2RmYTQ1YzIxYWQ4NzNlNGQ0ODQ2
NzFmM2QwNGFjYjc0ODU0Yi4uZTA3OWY3MzBiZTg1OWFjM2IwNWI5NDI5YzMwZTgzNjFkMTQzYWVi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgYm9vbCBE
aXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0
Zm9ybU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBp
dGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5
IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9y
bS1zcGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5tX2NoYW5nZUZs
YWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHND
aGFuZ2UpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VG
bGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
Q2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYg
KHN0YXRlSXRlbS5zdGF0ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0
ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1MGM4ZDhmNzU3N2ExNjcwNWVjZjg1NWFk
MTY5ODE4YjZkZjk4YmJhLi4zOTVmZTY3MWNjZjc0MjJhMTY1Njc2Yzc5Y2QxZTA5ZWY1NTlhOTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtODks
NyArODksNyBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTog
ewotICAgICAgICBnZXQ8U2V0U3RhdGU+KCkuYXBwbHkoY29udGV4dCk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVDYXA6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRl
eCAyMTNkYjljOGNmNDJlYzFhZTJkMTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5mOTAwOTFmMTJkMjVi
YjdjNTYwOTI3NWQwMTRkZWExYWIxMDI5M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC0yMDksMjMgKzIwOSwyOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKIH0K
IAogU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0
YXRlKHN0YXRlLCBmbGFncykKKyAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGUsIGZsYWdzKQogewog
fQogCi1TZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Um
IHN0YXRlQ2hhbmdlKQotICAgIDogbV9zdGF0ZShzdGF0ZUNoYW5nZSkKK1NldFN0YXRlOjpTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0
IFBhdHRlcm5EYXRhJiBzdHJva2VQYXR0ZXJuLCBjb25zdCBQYXR0ZXJuRGF0YSYgZmlsbFBhdHRl
cm4pCisgICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlKQorICAgICwgbV9zdHJva2VQYXR0
ZXJuKHN0cm9rZVBhdHRlcm4pCisgICAgLCBtX2ZpbGxQYXR0ZXJuKGZpbGxQYXR0ZXJuKQogewog
fQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
Cit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQog
ewotICAgIG1fc3RhdGUuYXBwbHkoY29udGV4dCk7CisgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNo
YW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQorICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3Rh
dGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJu
SW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgaWYgKG1fc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybklt
YWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5
KGNvbnRleHQpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0U3RhdGUmIHN0YXRlKQogewotICAgIHRzIDw8IHN0YXRlLnN0YXRlKCk7
CisgICAgdHMgPDwgc3RhdGUuc3RhdGVDaGFuZ2UoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDRjZmJkODliMDQ2NTk1ZjI4MWQ0MWUy
MTIwNWE3ZmYzYTZhNjM2N2UuLjcwNmI4NGZmODA1MjFkMzliYjA1NzViMmI4NjM5MzM1Y2M3NmVh
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjU0LDkgKzI1NCwxMiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxz
ZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0g
ICAgCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQorCisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmIHN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQorICAgIGNv
bnN0IFBhdHRlcm46OlBhcmFtZXRlcnMmIHN0cm9rZVBhdHRlcm5QYXJhbWV0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnM7IH0KKyAgICBjb25zdCBQYXR0ZXJu
OjpQYXJhbWV0ZXJzJiBmaWxsUGF0dGVyblBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bGxQYXR0ZXJuLnBhcmFtZXRlcnM7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
c3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlUGF0
dGVybi50aWxlSW1hZ2VJZGVudGlmaWVyOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUGF0
dGVybi50aWxlSW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICBzdGF0aWMgdm9pZCBidWlsZGVyU3Rh
dGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKQEAgLTI2NSwxOSArMjY4LDI4IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNl
dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKIAog
cHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBtX3N0YXRlOworICAgIHN0
cnVjdCBQYXR0ZXJuRGF0YSB7CisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0
aWxlSW1hZ2VJZGVudGlmaWVyOworICAgICAgICBQYXR0ZXJuOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiwgY29uc3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRlcm4sIGNv
bnN0IFBhdHRlcm5EYXRhJiBmaWxsUGF0dGVybik7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOworICAgIFBhdHRlcm5EYXRhIG1fc3Ryb2tlUGF0dGVybjsK
KyAgICBQYXR0ZXJuRGF0YSBtX2ZpbGxQYXR0ZXJuOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewot
ICAgIGF1dG8gY2hhbmdlRmxhZ3MgPSBtX3N0YXRlLm1fY2hhbmdlRmxhZ3M7CisgICAgYXV0byBj
aGFuZ2VGbGFncyA9IG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFnczsKICAgICBlbmNvZGVyIDw8
IGNoYW5nZUZsYWdzOwogCi0gICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlLm1fc3RhdGU7CisgICAg
YXV0byYgc3RhdGUgPSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7CiAKICAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkg
ewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CkBAIC0yODcsOCAr
Mjk5LDEwIEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
CiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlUGF0
dGVybjsKLSAgICAgICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgICAgICBpZiAoYXV0byYgcGF0dGVybiA9
IHN0YXRlLnN0cm9rZVBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+
dGlsZUltYWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPigmcGF0dGVybi0+cGFyYW1ldGVycygpKSwgc2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMp
LCAxKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewpAQCAtMjk5LDggKzMx
MywxMCBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
ICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBh
dHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIGVuY29kZXIgPDwgISFzdGF0ZS5maWxsUGF0dGVybjsK
LSAgICAgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgZW5jb2RlciA8PCAq
c3RhdGUuZmlsbFBhdHRlcm47CisgICAgICAgIGlmIChhdXRvJiBwYXR0ZXJuID0gc3RhdGUuZmls
bFBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+dGlsZUltYWdlKCku
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmcGF0dGVy
bi0+cGFyYW1ldGVycygpKSwgc2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMpLCAxKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewpAQCAtMzY2LDYgKzM4Miw5IEBAIE9wdGlvbmFsPFNl
dFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncyA9ICpjaGFuZ2VGbGFnczsKIAorICAgIFBhdHRlcm5EYXRhIHN0cm9rZVBhdHRlcm47Cisg
ICAgUGF0dGVybkRhdGEgZmlsbFBhdHRlcm47CisKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKSB7CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0cm9rZUdyYWRpZW50OwogICAgICAg
ICBkZWNvZGVyID4+IGhhc1N0cm9rZUdyYWRpZW50OwpAQCAtMzg4LDExICs0MDcsMTYgQEAgT3B0
aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGhhc1N0cm9rZVBhdHRl
cm4udmFsdWUoKSkgewotICAgICAgICAgICAgYXV0byBzdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6
ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQorICAgICAg
ICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUoKnN0cm9rZVBhdHRlcm4p
OworICAgICAgICAgICAgUGF0dGVybjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmcGFyYW1ldGVycyksIHNpemVvZihQYXR0ZXJuOjpQYXJhbWV0ZXJzKSwgMSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgc3Ryb2tlUGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgcGFy
YW1ldGVycyB9OwogICAgICAgICB9CiAgICAgfQogCkBAIC00MTgsMTEgKzQ0MiwxNiBAQCBPcHRp
b25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoaGFzRmlsbFBhdHRlcm4u
dmFsdWUoKSkgewotICAgICAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29k
ZShkZWNvZGVyKTsKLSAgICAgICAgICAgIGlmICghZmlsbFBhdHRlcm4pCisgICAgICAgICAgICBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOworICAgICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICAgICAgc3RhdGVDaGFu
Z2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKKyAgICAgICAg
ICAgIFBhdHRlcm46OlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnBh
cmFtZXRlcnMpLCBzaXplb2YoUGF0dGVybjo6UGFyYW1ldGVycyksIDEpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbGxQ
YXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBwYXJhbWV0ZXJzIH07CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTU4Myw3ICs2MTIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4g
U2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OwogICAgIH0KIAotICAgIHJldHVybiB7IHN0YXRlQ2hhbmdlIH07CisgICAgcmV0dXJuIHt7IHN0
YXRlQ2hhbmdlLCBzdHJva2VQYXR0ZXJuLCBmaWxsUGF0dGVybiB9fTsKIH0KIAogY2xhc3MgU2V0
TGluZUNhcCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
NGNkYzNiMGFlY2M5NGRjYjE2NjZmMDk5Mjk0MTY2NTE3MjRiM2EzYS4uOTlmNzE2YmFlNTZiZTlh
OWU0MmYwYmJiYjM0ZTI2MzdiY2ZhMGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtODUsOSArODUsMjAgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5
SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGEK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBSZWNvcmRlcjo6Y2FjaGVOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVs
ZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVO
YXRpdmVJbWFnZShpbWFnZSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdl
SXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCiB7CiAgICAgaWYgKCFj
b250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7Cisg
ICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikK
KyAgICAgICAgICAgIGNhY2hlTmF0aXZlSW1hZ2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAg
ICAgICAgICAgY2FjaGVOYXRpdmVJbWFnZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAg
IGFwcGVuZDxTZXRTdGF0ZT4oY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xODMsMTcgKzE5NCwxMyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9h
dFJlYwogCiB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVO
YXRpdmVJbWFnZShpbWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGlt
YWdlKTsKKyAgICBjYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICBhcHBlbmQ8RHJhd05hdGl2
ZUltYWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPmNhY2hl
TmF0aXZlSW1hZ2UoaW1hZ2UpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7CisgICAgY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgYXBwZW5kPERyYXdQYXR0
ZXJuPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjRmNzhh
Y2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uODA0NmEyMWEyZTE4MTE0OTBjNjcw
NjAyOTVjNjdlMGRkYWFhYzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC0xNzEsNiArMTcxLDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCisgICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJik7CisKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKTsKIAogICAgIEZsb2F0UmVjdCBleHRlbnRGcm9tTG9jYWxCb3VuZHMo
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKaW5kZXggMzI1ZGI5NzM5ZTlmY2YyMTMxZTkxNGU2YWU1Yzg1YTgyZWJhZTFjOS4u
NGQ5MDZhMjQ1NjQ0NjJmNmUwMTgxNjlkMWIxNjg5OTJkOGRmMmNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNzAsNiArNzAsMjkgQEAgaW5saW5lIHN0
YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1h
Z2VJdGVtKEdyYXBoaWMKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCitpbmxp
bmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRT
dGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hN
YXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoreworICAgIGF1dG8mIHNldFN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOworCisgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBh
dHRlcm5JbWFnZSA9IG51bGxwdHI7CisgICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2Ug
PSBudWxscHRyOworCisgICAgaWYgKGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJ
dGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkgeworICAgICAgICBzdHJva2VQYXR0
ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAg
IGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlSWRl
bnRpZmllcjsKKyAgICB9CisKKyAgICBpZiAoYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRT
dGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkgeworICAgICAgICBmaWxsUGF0
dGVybkltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAg
ICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VJZGVu
dGlmaWVyOworICAgIH0KKworICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBzdHJva2VQ
YXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Cit9CisKIHRlbXBsYXRlPGNsYXNzIFQ+CiBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRl
bSkKIHsKQEAgLTExNyw2ICsxNDAsMTIgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlS
ZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXAKICAgICAg
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKKyAgICBp
ZiAoaXRlbS5pczxTZXRTdGF0ZT4oKSkgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0obV9jb250ZXh0LCBtX25hdGl2
ZUltYWdlcywgaXRlbSkpCisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllcikgfTsKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
KyAgICB9CisKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiAgICAgcmV0dXJuIHsgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA1NjMzYTBhZmE2NGRkNjZkNmFl
ZDllOTdkZTJlNjhkYmUxNmIzODExLi4xNjVlNjdiYzMwZjQ1YzY0NmFiMmIwNDhlNjIwODNjNzdm
NDQxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCkBAIC03MiwxNSArNzIsMTUgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZm
ZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwogICAgIHRpbGVJbWFn
ZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkubG9jYXRpb24oKSk7CiAKLSAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6
c2lua0ludG9JbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOworICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7
CiAgICAgaWYgKCF0aWxlSW1hZ2VDb3B5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlQ29weS5yZWxlYXNlTm9uTnVsbCgpLCB0
cnVlLCB0cnVlKTsKLQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtOwogICAg
IHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRpb24gLSBtYXhFZmZl
Y3RMb2NhdGlvbik7Ci0gICAgcGF0dGVybi5nZXQoKS5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0o
cGF0dGVyblRyYW5zZm9ybSk7CisKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
dGlsZUltYWdlQ29weS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFu
c2Zvcm19KTsKKwogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdElt
YWdlLT5jb250ZXh0KCk7CiAgICAgZmlsdGVyQ29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3Zl
KHBhdHRlcm4pKTsKICAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDBkMDQ4MTFiM2U5ODFjNTE2
NTEzNTRhZDgwZjBiY2Y3NjJhMGJlYmQuLmM3MGMxNGFkZTFmZjViZGVkZTQ3NGNlZmJlMzgxMzA4
MDE0NWQxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCkBAIC0zMjY2LDE0ICszMjY2LDEzIEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4g
cGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxv
CiAgICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB7IHRleHRHYXAs
IHlPZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgYXV0byBmaWxsUGF0
dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwg
dHJ1ZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJ
bWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVy
bk9mZnNldFRyYW5zZm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShj
b250ZW50T2Zmc2V0ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAgIHBhdHRlcm5PZmZzZXRUcmFu
c2Zvcm0uc2NhbGUoMSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCkpOwotICAgIGZpbGxQYXR0
ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybk9mZnNldFRyYW5zZm9ybSk7CiAK
LSAgICByZXR1cm4gZmlsbFBhdHRlcm47CisgICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh0aWxl
SW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNm
b3JtfSk7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlMzQyNDMxZDE0OTFm
M2YxZDBiYmQ0YmNmOTVhMDUyNmVkMDMwZmQxLi45NDcxOWIzZWY4NzcyZWZjYTA3YzBlMmIzNWRk
MWMwNDA2MDk3MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTIsMTYgKzExMiwxMiBAQCBQ
YXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIE9wdAogCiAgICAgY29uc3QgSW50U2l6ZSB0aWxlSW1hZ2VTaXpl
ID0gdGlsZUltYWdlLT5sb2dpY2FsU2l6ZSgpOwogCi0gICAgUmVmUHRyPEltYWdlPiBjb3BpZWRJ
bWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Cisg
ICAgYXV0byBjb3BpZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdU
Rk1vdmUodGlsZUltYWdlKSk7CiAgICAgaWYgKCFjb3BpZWRJbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEg
PSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwotICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUp
OwotCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgotCisgICAg
YXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVy
bkRhdGEtPnRyYW5zZm9ybS50cmFuc2xhdGUodGlsZUJvdW5kYXJpZXMubG9jYXRpb24oKSk7CiAg
ICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS5zY2FsZSh0aWxlQm91bmRhcmllcy5zaXplKCkgLyB0
aWxlSW1hZ2VTaXplKTsKIApAQCAtMTM1LDcgKzEzMSw5IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
T3B0CiAgICAgICAgIGlmIChzaG91bGRUcmFuc2Zvcm1PblRleHRQYWludGluZyhyZW5kZXJlciwg
YWRkaXRpb25hbFRleHRUcmFuc2Zvcm1hdGlvbikpCiAgICAgICAgICAgICBwYXR0ZXJuRGF0YS0+
dHJhbnNmb3JtICo9IGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtYXRpb247CiAgICAgfQotICAgIHBh
dHRlcm5EYXRhLT5wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybkRhdGEt
PnRyYW5zZm9ybSk7CisKKyAgICAvLyBCdWlsZCBwYXR0ZXJuLgorICAgIHBhdHRlcm5EYXRhLT5w
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsg
dHJ1ZSwgdHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKIAogICAgIC8vIFZhcmlvdXMg
Y2FsbHMgYWJvdmUgbWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNl
cyAoSW1hZ2VCdWZmZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1h
Z2UgY2FjaGUgZm9yIGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRl
bGV0ZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDE5YWYyOTk2NjgyN2Q0YjYwMWQ4Y2Q1MjdiZjE0YzlhNzdkNzA4OWIuLmJiN2M4
NGJmODE0NzVjY2M5MTlmMDc4MzAwNGQ5Mjk3MTgwMGZlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTA3NSwxOCArMTA3NSw2IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbEltYWdlKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxJbWFnCiAgICAgcmV0dXJuIGRlY29kZUltYWdlKGRlY29kZXIs
IGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBl
bmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKLX0K
LQotYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBpZiAoIWRlY29kZU9wdGlvbmFs
SW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQog
ewogICAgIGVuY29kZXIgPDwgZm9udC0+b3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDAwYzE0M2ZiYmI4OWQyNjY0Y2FlNTBhNWUx
ZmJmM2Y4ZTkxNTk1MDcuLjZmNzIxODBmOTg1MzI3M2UzZjE2ZjYxMGI0ZDUzMWYxYWNmMThhZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0x
MDksNyArMTA5LDYgQEAgY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBj
bGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7
Ci1jbGFzcyBJbWFnZUhhbmRsZTsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIEludFNpemU7CkBAIC00MTgsMTEgKzQxNyw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJik7CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUhh
bmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419793</attachid>
            <date>2021-02-09 17:25:30 -0800</date>
            <delta_ts>2021-02-09 18:56:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210209172529.patch</filename>
            <type>text/plain</type>
            <size>44989</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdmNjkwYzRmM2Y2ZTAy
NmQ0N2ZjOTA3N2Y3OGM0ODIwZGU2Yzk3OC4uZGI2NzMyMjI3NGE0NDU1MDc0NDRkYzNlYWJlYjYx
ODBlNWQ3Yjc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wMi0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZHMgYSBOYXRpdmVJbWFnZSBpbnN0ZWFkIG9mIGFuIEltYWdlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBjYWNoaW5nIHRo
ZSBQYXR0ZXJuIGRhdGEgaW4gdGhlIEdQVVAgc3RyYWlnaHRmb3J3YXJkIHNpbmNlCisgICAgICAg
IHdlIG5lZWQgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGFuZCBzZW5kIHRoZSBwYXR0ZXJuIGRh
dGEuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52
YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZh
c1BhdHRlcm4pOgorICAgICAgICBFeHRyYWN0IGEgTmF0aXZlSW1hZ2Ugb3V0IG9mIGFuIEltYWdl
LiBUaGUgcGxhdGZvcm0gUGF0dGVybnMgZGVhbCB3aXRoCisgICAgICAgIE5hdGl2ZUltYWdlcyBv
bmx5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgUmVt
b3ZlIEltYWdlSGFuZGxlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6UGF0dGVybik6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpzZXRQYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4u
aDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICBNYWtl
IHRoZSBuZXcgc3RydWN0ICdQYXJhbWV0ZXJzJyBob2xkcyBhbGwgdGhlIG1lbWJlcnMgb3RoZXIg
dGhhbiB0aGUKKyAgICAgICAgTmF0aXZlSW1hZ2UuIFRoaXMgc3RydWN0ICsgUmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmZXIgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIHdpbGwgYmUgcmVjb3Jk
ZWQgZm9yIHRoZSBzdHJva2VQYXR0ZXJuIGFuZCB0aGUgZmlsbFBhdHRlcm4uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpj
cmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICBUaGUgcGxhdGZvcm0gUGF0dGVy
biBkZWFscyBvbmx5IHdpdGggTmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRp
c3BsYXlMaXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgU2V0
U3RhdGU6OnN0YXRlKCkgaXMgcmVuYW1lZCB0byBTZXRTdGF0ZUl0ZW06OnN0YXRlQ2hhbmdlKCkg
c2luY2UgaXQgCisgICAgICAgIHJldHVybnMgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjph
cHBseSk6CisgICAgICAgIFNldFN0YXRlOjphcHBseSgpIGhhcyB0byBiZSBhIHNwZWNpYWwgY2Fz
ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dEl0ZW1zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAg
ICAgICAgQWRkIGEgY29uc3RydWN0b3IgZm9yIFNldFN0YXRlIHRvIGJlIHVzZWQgYnkgdGhlIGRl
Y29kZXIuIEFsbCB0aGUgbWVtYmVycworICAgICAgICBvZiBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSB3aWxsIGJlIGNvcGllZCBhcyBpcyBidXQgdGhlIHN0cm9rZVBhdHRlcm4KKyAgICAgICAg
YW5kIGZpbGxQYXR0ZXJuIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlaXIgTmF0aXZlSW1h
Z2VzIGFyZSByZXNvbHZlZAorICAgICAgICBpbiB0aGUgU2V0U3RhdGU6OmFwcGx5KCkgbWV0aG9k
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVD
aGFuZ2UgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpz
dHJva2VQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmZpbGxQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZp
ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxs
UGF0dGVybkltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
TGlzdDo6U2V0U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OnN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUg
ZW5jb2RlIGFuZCB0aGUgZGVjb2Rpbmcgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4g
CisgICAgICAgIGJ5IHVzZSB0aGUgUGF0dGVybjo6UGFyYW1ldGVycyBhbmQgdGhlIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmVyIG9mIHRoZQorICAgICAgICBOYXRpdmVJbWFnZS4gICAgICAKKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6Y2FjaGVO
YXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmFw
cGVuZFN0YXRlQ2hhbmdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVj
b3JkZXI6OmRyYXdOYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVjb3JkZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oOgorICAgICAgICBDYWNoZSB0aGUgTmF0aXZl
SW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmFwcGx5U2V0U3RhdGVJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZXBsYXllcjo6YXBwbHlJdGVtKToKKyAgICAgICAgUmVz
b2x2ZSB0aGUgTmF0aXZlSW1hZ2VzIG9mIHN0cm9rZVBhdHRlcm4gYW5kIGZpbGxQYXR0ZXJuIGZy
b20gY2FjaGVkCisgICAgICAgIG1fbmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpw
bGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6Cisg
ICAgICAgIFBhdHRlcm5zIHNob3VsZCBiZSBjcmVhdGVkIHdpdGggTmF0aXZlSW1hZ2VzLgorCiAy
MDIxLTAyLTA4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAg
IEEgUGF0dGVybiB3aXRoIGFuIFNWRyBpbWFnZSBpcyBub3QgcmVuZGVyZWQgY29ycmVjdGx5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGM3OTljZjAxYjAxNGE2OGFkMThmYzJiNGE1NGZkNmY2MzAzMWZkMjQuLjliOTYw
ODFhMGQ5MzEzOGQxNGQ4MjAzOWE5YjFkYjQ5NDdlMGMxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMjEtMDItMDkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSBQYXR0ZXJuIGhvbGRzIGEgTmF0aXZlSW1hZ2UgaW5zdGVhZCBvZiBhbiBJ
bWFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIx
NjM3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRGVs
ZXRlIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgdGhlIEltYWdlIHNpbmNlIGl0IGlzIG5v
dCB1c2VkLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjplbmNvZGUpOiBEZWxldGVk
LgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6CisKIDIwMjEt
MDItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBQcmV2ZW50
IFdlYlByb2Nlc3MgdG8gcmUtZW50ZXIgb24gc3luYyBJUEMgdG8gdGhlIEdQVVByb2Nlc3MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5jcHAKaW5kZXggNzJlYTFh
ODdjNmQwZTI2MDE4NzU3ZWUyZjdiYzYwNDYzYzlhYTgwNS4uMGFhMWYxMjFiZjY4NTc2NzQ4NGE1
ZDZiMmUyNzkzNWJkODYxNjY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvQ2FudmFzUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2Fu
dmFzUGF0dGVybi5jcHAKQEAgLTI4LDE5ICsyOCwxOSBAQAogCiAjaW5jbHVkZSAiRE9NTWF0cml4
MkRJbml0LmgiCiAjaW5jbHVkZSAiRE9NTWF0cml4UmVhZE9ubHkuaCIKLSNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJl
ZjxDYW52YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKK1JlZjxDYW52
YXNQYXR0ZXJuPiBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdl
LCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDYW52YXNQYXR0ZXJuKFdURk1vdmUoaW1hZ2UpLCByZXBlYXRY
LCByZXBlYXRZLCBvcmlnaW5DbGVhbikpOwogfQogCi1DYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pCi0gICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoaW1h
Z2UpLCByZXBlYXRYLCByZXBlYXRZKSkKK0NhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4oUmVm
PE5hdGl2ZUltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBv
cmlnaW5DbGVhbikKKyAgICA6IG1fcGF0dGVybihQYXR0ZXJuOjpjcmVhdGUoV1RGTW92ZShpbWFn
ZSksIHsgcmVwZWF0WCwgcmVwZWF0WSB9KSkKICAgICAsIG1fb3JpZ2luQ2xlYW4ob3JpZ2luQ2xl
YW4pCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKaW5k
ZXggYzhhOWUzY2UxNjFiYmI4ZjlhMWQ3NWJlMjlmZGNlYjgyMWNjOTkzMS4uZTQ2ZDIxYmM1MTM1
ZDlhNzRmNDU3NWM5ZGQ2NWU5Y2VjZGNiOGQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uaApAQCAtMzIsMTMgKzMyLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgSW1hZ2U7CitjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBhdHRlcm47
CiBzdHJ1Y3QgRE9NTWF0cml4MkRJbml0OwogCiBjbGFzcyBDYW52YXNQYXR0ZXJuIDogcHVibGlj
IFJlZkNvdW50ZWQ8Q2FudmFzUGF0dGVybj4gewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q2Fu
dmFzUGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFksIGJvb2wgb3JpZ2luQ2xlYW4pOworICAgIHN0YXRpYyBSZWY8Q2FudmFzUGF0dGVybj4gY3Jl
YXRlKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wg
b3JpZ2luQ2xlYW4pOwogICAgIH5DYW52YXNQYXR0ZXJuKCk7CiAKICAgICBzdGF0aWMgYm9vbCBw
YXJzZVJlcGV0aXRpb25UeXBlKGNvbnN0IFN0cmluZyYsIGJvb2wmIHJlcGVhdFgsIGJvb2wmIHJl
cGVhdFkpOwpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
c2V0VHJhbnNmb3JtKERPTU1hdHJpeDJESW5pdCYmKTsKIAogcHJpdmF0ZToKLSAgICBDYW52YXNQ
YXR0ZXJuKFJlZjxJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3Jp
Z2luQ2xlYW4pOworICAgIENhbnZhc1BhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJl
cGVhdFgsIGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAKICAgICBSZWY8UGF0dGVy
bj4gbV9wYXR0ZXJuOwogICAgIGJvb2wgbV9vcmlnaW5DbGVhbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKaW5kZXggODgzMGM1ZGRhZWRhNDdmMjI4MmUwNGQ4MTcyNDM0MWYwNGU4OWMzZC4uOWZmMjJh
N2MzZDVkZWNjZTZhNjRiYWFhNmFjYmVjMTE2YjEwMmMwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAKQEAgLTE5MzcsNyArMTkzNywxNSBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogICAgIGlm
IChjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNTVkdJbWFnZSgpKQogICAgICAgICBvcmlnaW5DbGVh
biA9IGZhbHNlOwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZSgqY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VFbGVtZW50
LnJlbmRlcmVyKCkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKKyAgICBhdXRv
KiBpbWFnZSA9IGNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC5yZW5k
ZXJlcigpKTsKKyAgICBpZiAoIWltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52
YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBpbWFnZS0+bmF0aXZl
SW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwg
cmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZlB0
cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0
dGVybihDYW52YXNCYXNlJiBjYW52YXMsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQpAQCAt
MTk0OCw4ICsxOTU2LDEyIEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihDCiAKICAgICBpZiAoIWNv
cGllZEltYWdlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3Ig
fTsKKyAgICAKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gY29waWVkSW1hZ2UtPm5hdGl2ZUltYWdl
KCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElu
dmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsg
Q2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjb3BpZWRJbWFnZSwgcmVwZWF0WCwgcmVwZWF0WSwgY2Fu
dmFzLm9yaWdpbkNsZWFuKCkpIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7
IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBl
YXRYLCByZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKIH0KICAgICAKICNpZiBFTkFC
TEUoVklERU8pCkBAIC0xOTY0LDcgKzE5NzYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFz
UGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAog
CiAjaWYgVVNFKENHKQogICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdmlkZW9FbGVtZW50Lm5h
dGl2ZUltYWdlRm9yQ3VycmVudFRpbWUoKSkKLSAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQ
YXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShCaXRtYXBJbWFnZTo6Y3JlYXRlKFdURk1v
dmUobmF0aXZlSW1hZ2UpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAg
ICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUo
bmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xl
YW4pIH07CiAjZW5kaWYKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9ICFkcmF3aW5nQ29udGV4
dCgpIHx8IGRyYXdpbmdDb250ZXh0KCktPmlzQWNjZWxlcmF0ZWRDb250ZXh0KCkgPyBSZW5kZXJp
bmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CkBAIC0x
OTc0LDcgKzE5ODYsNyBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oSAogCiAgICAgdmlkZW9FbGVt
ZW50LnBhaW50Q3VycmVudEZyYW1lSW5Db250ZXh0KGltYWdlQnVmZmVyLT5jb250ZXh0KCksIEZs
b2F0UmVjdChGbG9hdFBvaW50KCksIHNpemUodmlkZW9FbGVtZW50KSkpOwogICAgIAotICAgIHJl
dHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VC
dWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlciksIFByZXNlcnZlUmVzb2x1
dGlvbjo6WWVzKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVh
bikgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6
Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUoaW1hZ2VCdWZm
ZXIpKS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCmluZGV4IDBjODVmOGE4Mzc2Nzk2NmJhMjZiNWMzMzNlZDYwYzAxYTUwYWExMTYuLmU1ZjIy
MTBhZTk4NzMzZTk4NGFiNTg0ZjZmOWEzYzg0N2I1YTgwNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMjAyLDkgKzEyMDIsMTAgQEAgUmVm
PEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlG
b3JDYW52YXNHcmFkaWVudChjb24KIAogUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJ
bnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNQYXR0ZXJuKGNvbnN0IENhbnZhc1Bh
dHRlcm4mIGNhbnZhc1BhdHRlcm4pCiB7Ci0gICAgSW1hZ2UmIHRpbGVJbWFnZSA9IGNhbnZhc1Bh
dHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIGF1dG8mIHRpbGVJbWFnZSA9IGNhbnZh
c1BhdHRlcm4ucGF0dGVybigpLnRpbGVJbWFnZSgpOworICAgIEZsb2F0UmVjdCByZWN0ID0geyB7
IH0sIHRpbGVJbWFnZS5zaXplKCkgfTsKICAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZm
ZXI6OmNyZWF0ZSh0aWxlSW1hZ2Uuc2l6ZSgpLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
KTsKLSAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdJbWFnZSh0aWxlSW1hZ2UsIEZsb2F0
UG9pbnQoMCwgMCkpOworICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd05hdGl2ZUltYWdl
KHRpbGVJbWFnZSwgdGlsZUltYWdlLnNpemUoKSwgcmVjdCwgcmVjdCk7CiAKICAgICBTdHJpbmcg
cmVwZWF0OwogICAgIGJvb2wgcmVwZWF0WCA9IGNhbnZhc1BhdHRlcm4ucGF0dGVybigpLnJlcGVh
dFgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmluZGV4IDQzNmIz
N2Q2YzhlYzZmMDBmNGZlYjRkZDM2ZjRhMjkyM2M3Zjk2ZWEuLmRhMDEwZjNmZGNkMDY4MDU2Mjhi
ODYwY2FlMzJiZDliZTlhNDU0ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2UuaApAQCAtMjEwLDExICsyMTAsNiBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0
cjxUaW1lcj4gbV9hbmltYXRpb25TdGFydFRpbWVyOwogfTsKIAotY2xhc3MgSW1hZ2VIYW5kbGUg
ewotcHVibGljOgotICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2U7Ci19OwotCiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgSW1hZ2UmKTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmNwcAppbmRleCA3OTZhMDdjMTg2YjYyZmY0ZTZiNmVhMjYxMDdmZjlmYzRjNDM4ZTcxLi42
MzUzMjM3NjlmODAzM2RlMzI4ZThkNDRlNTc5NzVhMWQzY2Q2MDY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Vi
a2l0Lm9yZz4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTMxLDIzICszMSwyMiBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVJlZjxQYXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPEltYWdlPiYm
IHRpbGVJbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpCitSZWY8UGF0dGVybj4gUGF0
dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVybihXVEZN
b3ZlKHRpbGVJbWFnZSksIHJlcGVhdFgsIHJlcGVhdFkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBQYXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcGFyYW1ldGVycykpOwogfQogCi1QYXR0
ZXJuOjpQYXR0ZXJuKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVh
dFkpCitQYXR0ZXJuOjpQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgY29uc3QgUGFy
YW1ldGVycyYgcGFyYW1ldGVycykKICAgICA6IG1fdGlsZUltYWdlKFdURk1vdmUoaW1hZ2UpKQot
ICAgICwgbV9yZXBlYXRYKHJlcGVhdFgpCi0gICAgLCBtX3JlcGVhdFkocmVwZWF0WSkKKyAgICAs
IG1fcGFyYW1ldGVycyhwYXJhbWV0ZXJzKQogewogfQogCiBQYXR0ZXJuOjp+UGF0dGVybigpID0g
ZGVmYXVsdDsKIAotdm9pZCBQYXR0ZXJuOjpzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbikKK3ZvaWQgUGF0dGVy
bjo6c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVy
blNwYWNlVHJhbnNmb3JtKQogewotICAgIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24gPSBw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBtX3BhcmFtZXRlcnMucGF0dGVyblNwYWNl
VHJhbnNmb3JtID0gcGF0dGVyblNwYWNlVHJhbnNmb3JtOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKaW5kZXggMmE1NjNkYTI2MTdkMWIwNDI0OGI5
MGFiMDYzOWRiMmNhZjlhODhjMC4uNmFiY2JkZDE1OTUxZDhmZjY5N2E2OGFhYTBlZmZiNmU5ZjU4
ZjYxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJp
YyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRv
cmNoIE1vYmlsZSwgSW5jLgogICoKQEAgLTUzLDc2ICs1Myw0MyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBHcmFwaGljc0NvbnRleHQ7CiBjbGFz
cyBJbWFnZTsKLWNsYXNzIEltYWdlSGFuZGxlOwogCiBjbGFzcyBQYXR0ZXJuIGZpbmFsIDogcHVi
bGljIFJlZkNvdW50ZWQ8UGF0dGVybj4gewogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVw
ZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBzdHJ1Y3QgUGFyYW1ldGVycyB7CisgICAgICAgIFBh
cmFtZXRlcnMoYm9vbCByZXBlYXRYID0gdHJ1ZSwgYm9vbCByZXBlYXRZID0gdHJ1ZSwgQWZmaW5l
VHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSA9IHsgfSkKKyAgICAgICAgICAgIDogcmVw
ZWF0WChyZXBlYXRYKQorICAgICAgICAgICAgLCByZXBlYXRZKHJlcGVhdFkpCisgICAgICAgICAg
ICAsIHBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCisgICAgICAg
IHsKKyAgICAgICAgfQorICAgICAgICBib29sIHJlcGVhdFg7CisgICAgICAgIGJvb2wgcmVwZWF0
WTsKKyAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICB9
OworCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPE5h
dGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29uc3QgUGFyYW1ldGVycyYgPSB7IH0pOwogICAgIFdF
QkNPUkVfRVhQT1JUIH5QYXR0ZXJuKCk7CiAKLSAgICBJbWFnZSYgdGlsZUltYWdlKCkgY29uc3Qg
eyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBOYXRpdmVJbWFnZSYgdGlsZUltYWdl
KCkgY29uc3QgeyByZXR1cm4gbV90aWxlSW1hZ2UuZ2V0KCk7IH0KKyAgICBjb25zdCBQYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAv
LyBQYXR0ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVm
YXVsdCB1c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24nCisgICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0IG1h
cHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJT
cGFjZVRyYW5zZm9ybScKICNpZiAhVVNFKERJUkVDVDJEKQotICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VU
cmFuc2Zvcm1hdGlvbikgY29uc3Q7CisgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29u
c3Q7CiAjZWxzZQotICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4o
Y29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxwaGEsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0OworICAgIFBsYXRmb3JtUGF0dGVyblB0
ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgR3JhcGhpY3NDb250ZXh0JiwgZmxvYXQgYWxw
aGEsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdDsKICNl
bmRpZgotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsgfTsKLSAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3JlcGVhdFg7IH0KLSAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJl
dHVybiBtX3JlcGVhdFk7IH0KLQotICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKLSAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMg
T3B0aW9uYWw8UmVmPFBhdHRlcm4+PiBkZWNvZGUoRGVjb2RlciYpOworICAgIHZvaWQgc2V0UGF0
dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOworICAgIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLnBhdHRlcm5TcGFjZVRyYW5zZm9ybTsgfTsKKyAgICBib29sIHJlcGVhdFgoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WDsgfQorICAgIGJvb2wgcmVwZWF0WSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5yZXBlYXRZOyB9CiAKIHByaXZhdGU6Ci0gICAg
UGF0dGVybihSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKTsKKyAgICBQ
YXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgY29uc3QgUGFyYW1ldGVycyYpOwogCi0gICAgUmVm
PEltYWdlPiBtX3RpbGVJbWFnZTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm1hdGlvbjsKLSAgICBib29sIG1fcmVwZWF0WDsKLSAgICBib29sIG1fcmVwZWF0WTsK
KyAgICBSZWY8TmF0aXZlSW1hZ2U+IG1fdGlsZUltYWdlOworICAgIFBhcmFtZXRlcnMgbV9wYXJh
bWV0ZXJzOwogfTsKIAotdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KLXZvaWQgUGF0dGVybjo6ZW5j
b2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci17Ci0gICAgSW1hZ2VIYW5kbGUgaW1hZ2VIYW5k
bGU7Ci0gICAgaW1hZ2VIYW5kbGUuaW1hZ2UgPSBtX3RpbGVJbWFnZS5wdHIoKTsKLSAgICBlbmNv
ZGVyIDw8IGltYWdlSGFuZGxlOwotICAgIGVuY29kZXIgPDwgbV9wYXR0ZXJuU3BhY2VUcmFuc2Zv
cm1hdGlvbjsKLSAgICBlbmNvZGVyIDw8IG1fcmVwZWF0WDsKLSAgICBlbmNvZGVyIDw8IG1fcmVw
ZWF0WTsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KLU9wdGlvbmFsPFJlZjxQYXR0ZXJu
Pj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCi17Ci0gICAgT3B0aW9uYWw8SW1h
Z2VIYW5kbGU+IGltYWdlSGFuZGxlOwotICAgIGRlY29kZXIgPj4gaW1hZ2VIYW5kbGU7Ci0gICAg
aWYgKCFpbWFnZUhhbmRsZSkKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9w
dGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAg
ZGVjb2RlciA+PiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIXBhdHRlcm5T
cGFjZVRyYW5zZm9ybWF0aW9uKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAg
T3B0aW9uYWw8Ym9vbD4gcmVwZWF0WDsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFg7Ci0gICAgaWYg
KCFyZXBlYXRYKQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgT3B0aW9uYWw8
Ym9vbD4gcmVwZWF0WTsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFk7Ci0gICAgaWYgKCFyZXBlYXRZ
KQotICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKGltYWdlSGFuZGxlLT5pbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCAqcmVwZWF0
WCwgKnJlcGVhdFkpOwotICAgIHBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgqcGF0
dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIHJldHVybiBwYXR0ZXJuOwotfQotCiB9IC8v
bmFtZXNwYWNlCi0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCmluZGV4IDczMjBkYTFjYmZlOTI4NWZkMTI2
ZjAwMjQxNDM4YzRkYmEzOWVjYzkuLjdmYWU3NzdjMzk2NmI0YzQ4NmRlMjIzMmIxOTExMzIzMWZk
OTJkZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcApAQCAtNTY3LDcgKzU2Nyw3IEBAIEZpbGxTb3Vy
Y2U6OkZpbGxTb3VyY2UoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQogICAgICAg
ICBwYXR0ZXJuLm9iamVjdCA9IGFkb3B0UmVmKHN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0
Zm9ybVBhdHRlcm4oQWZmaW5lVHJhbnNmb3JtKCkpKTsKIAogICAgICAgICBhdXRvJiBwYXR0ZXJu
SW1hZ2UgPSBzdGF0ZS5maWxsUGF0dGVybi0+dGlsZUltYWdlKCk7Ci0gICAgICAgIHBhdHRlcm4u
c2l6ZSA9IEZsb2F0U2l6ZShwYXR0ZXJuSW1hZ2Uud2lkdGgoKSwgcGF0dGVybkltYWdlLmhlaWdo
dCgpKTsKKyAgICAgICAgcGF0dGVybi5zaXplID0gcGF0dGVybkltYWdlLnNpemUoKTsKICAgICAg
ICAgcGF0dGVybi50cmFuc2Zvcm0gPSBzdGF0ZS5maWxsUGF0dGVybi0+cGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WCA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRYKCk7CiAgICAgICAgIHBhdHRlcm4ucmVwZWF0WSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5y
ZXBlYXRZKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9QYXR0ZXJuQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vUGF0dGVybkNhaXJvLmNwcAppbmRleCA1NjBmNzQ3YThmYjY0ODFiZTRhMzAxODU4NTAw
YWE5ZmExNjBmNzg2Li42OGRhYmFmOThhY2E5ZDFjZmI3MWUxNjUyMmI5ZGViMjU4MDdmZjFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJu
Q2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1Bh
dHRlcm5DYWlyby5jcHAKQEAgLTM1LDE4ICszNSwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNhaXJvX3BhdHRlcm5fdCogUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYpIGNvbnN0CiB7Ci0gICAgYXV0byBuYXRpdmVJbWFnZSA9IHRpbGVJbWFn
ZSgpLm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7Ci0gICAgaWYgKCFuYXRpdmVJbWFnZSkK
KyAgICBhdXRvIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7Cisg
ICAgaWYgKCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGNh
aXJvX3BhdHRlcm5fdCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNl
KG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCkuZ2V0KCkpOworICAgIGNhaXJvX3BhdHRlcm5f
dCogcGF0dGVybiA9IGNhaXJvX3BhdHRlcm5fY3JlYXRlX2Zvcl9zdXJmYWNlKHBsYXRmb3JtSW1h
Z2UuZ2V0KCkpOwogCiAgICAgLy8gY2Fpcm8gbWVyZ2VzIHBhdHRlciBzcGFjZSBhbmQgdXNlciBz
cGFjZSBpdHNlbGYKLSAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0cml4KG1f
cGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOworICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9
IHRvQ2Fpcm9NYXRyaXgocGF0dGVyblNwYWNlVHJhbnNmb3JtKCkpOwogICAgIGNhaXJvX21hdHJp
eF9pbnZlcnQoJm1hdHJpeCk7CiAgICAgY2Fpcm9fcGF0dGVybl9zZXRfbWF0cml4KHBhdHRlcm4s
ICZtYXRyaXgpOwogCi0gICAgaWYgKG1fcmVwZWF0WCB8fCBtX3JlcGVhdFkpCisgICAgaWYgKHJl
cGVhdFgoKSB8fCByZXBlYXRZKCkpCiAgICAgICAgIGNhaXJvX3BhdHRlcm5fc2V0X2V4dGVuZChw
YXR0ZXJuLCBDQUlST19FWFRFTkRfUkVQRUFUKTsKICAgICByZXR1cm4gcGF0dGVybjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCmlu
ZGV4IDY5NTRjNTY2NTcwYWQ3YWU2YzFlNzYwZjA3ODdkMzc3MGFjYWE2OTQuLmYxYjllM2E3YzA1
NTY5YTk4OTFiNjk4ZDI4M2FiNTM5N2M3MjVmNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggRXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTU1LDI0ICs1NSwyMSBAQCBzdGF0aWMgdm9pZCBwYXR0ZXJu
UmVsZWFzZUNhbGxiYWNrKHZvaWQqIGluZm8pCiAgICAgfSk7CiB9CiAKLUNHUGF0dGVyblJlZiBQ
YXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2Vy
U3BhY2VUcmFuc2Zvcm1hdGlvbikgY29uc3QKK0NHUGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0p
IGNvbnN0CiB7Ci0gICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0gdGlsZUltYWdlKCkucmVjdCgpOwor
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHsgeyB9LCB0aWxlSW1hZ2UoKS5zaXplKCkgfTsKIAot
ICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3Jt
YXRpb24gKiBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIEFmZmluZVRyYW5zZm9y
bSBwYXR0ZXJuVHJhbnNmb3JtID0gdXNlclNwYWNlVHJhbnNmb3JtICogcGF0dGVyblNwYWNlVHJh
bnNmb3JtKCk7CiAgICAgcGF0dGVyblRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oMSwgLTEpOwog
ICAgIHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKDAsIC10aWxlUmVjdC5oZWlnaHQoKSk7CiAK
LSAgICBQbGF0Zm9ybUltYWdlUHRyIHBsYXRmb3JtSW1hZ2U7Ci0gICAgaWYgKGF1dG8gbmF0aXZl
SW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZSgpKQotICAgICAgICBwbGF0Zm9ybUltYWdl
ID0gbmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKTsKLSAgICAKKyAgICBQbGF0Zm9ybUltYWdl
UHRyIHBsYXRmb3JtSW1hZ2UgPSB0aWxlSW1hZ2UoKS5wbGF0Zm9ybUltYWdlKCk7CiAgICAgaWYg
KCFwbGF0Zm9ybUltYWdlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIC8vIElmIHdl
J3JlIHJlcGVhdGluZyBpbiBib3RoIGRpcmVjdGlvbnMsIHdlIGNhbiB1c2UgaW1hZ2UtYmFja2Vk
IHBhdHRlcm5zCiAgICAgLy8gaW5zdGVhZCBvZiBjdXN0b20gcGF0dGVybnMsIGFuZCBhdm9pZCB0
aWxpbmctZWRnZSBwaXhlbCBjcmFja3MuCi0gICAgaWYgKG1fcmVwZWF0WCAmJiBtX3JlcGVhdFkp
CisgICAgaWYgKHJlcGVhdFgoKSAmJiByZXBlYXRZKCkpCiAgICAgICAgIHJldHVybiBDR1BhdHRl
cm5DcmVhdGVXaXRoSW1hZ2UyKHBsYXRmb3JtSW1hZ2UuZ2V0KCksIHBhdHRlcm5UcmFuc2Zvcm0s
IGtDR1BhdHRlcm5UaWxpbmdDb25zdGFudFNwYWNpbmcpOwogCiAgICAgLy8gSWYgRkxUX01BWCBz
aG91bGQgYWxzbyBiZSB1c2VkIGZvciB4U3RlcCBvciB5U3RlcCwgbm90aGluZyBpcyByZW5kZXJl
ZC4gVXNpbmcgZnJhY3Rpb25zIG9mIEZMVF9NQVggYWxzbwpAQCAtODAsOCArNzcsOCBAQCBDR1Bh
dHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdXNlclNwYWNlVHJhbgogICAgIC8vIElOVF9NQVggaXMgYWxtb3N0IGNvcnJlY3QsIGJ1
dCB0aGVyZSBzZWVtcyB0byBiZSBzb21lIG51bWJlciB3cmFwcGluZyBvY2N1cnJpbmcgbWFraW5n
IHRoZSBmaWxsCiAgICAgLy8gcGF0dGVybiBpcyBub3QgZmlsbGVkIGNvcnJlY3RseS4KICAgICAv
LyBUbyBtYWtlIGVycm9yIG9mIGZsb2F0aW5nIHBvaW50IGxlc3MgdGhhbiAwLjUsIHdlIHVzZSB0
aGUgaGFsZiBvZiB0aGUgbnVtYmVyIG9mIG1hbnRpc3NhIG9mIGZsb2F0ICgxIDw8IDIyKS4KLSAg
ICBDR0Zsb2F0IHhTdGVwID0gbV9yZXBlYXRYID8gdGlsZVJlY3Qud2lkdGgoKSA6ICgxIDw8IDIy
KTsKLSAgICBDR0Zsb2F0IHlTdGVwID0gbV9yZXBlYXRZID8gdGlsZVJlY3QuaGVpZ2h0KCkgOiAo
MSA8PCAyMik7CisgICAgQ0dGbG9hdCB4U3RlcCA9IHJlcGVhdFgoKSA/IHRpbGVSZWN0LndpZHRo
KCkgOiAoMSA8PCAyMik7CisgICAgQ0dGbG9hdCB5U3RlcCA9IHJlcGVhdFkoKSA/IHRpbGVSZWN0
LmhlaWdodCgpIDogKDEgPDwgMjIpOwogCiAgICAgLy8gVGhlIHBhdHRlcm4gd2lsbCByZWxlYXNl
IHRoZSBDR0ltYWdlUmVmIHdoZW4gaXQncyBkb25lIHJlbmRlcmluZyBpbiBwYXR0ZXJuUmVsZWFz
ZUNhbGxiYWNrCiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IHBsYXRmb3JtSW1hZ2UubGVha1JlZigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKaW5kZXggZDE1M2RmYTQ1YzIxYWQ4NzNlNGQ0ODQ2
NzFmM2QwNGFjYjc0ODU0Yi4uZTA3OWY3MzBiZTg1OWFjM2IwNWI5NDI5YzMwZTgzNjFkMTQzYWVi
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCkBAIC05MSwxMCArOTEsMTAgQEAgYm9vbCBE
aXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKEFzVGV4dEZsYWdzIGZsYWdzLCBJdGVtSGFu
ZGxlIGl0ZW0pCiAgICAgICAgIGlmICghKGZsYWdzICYgQXNUZXh0RmxhZzo6SW5jbHVkZXNQbGF0
Zm9ybU9wZXJhdGlvbnMpKSB7CiAgICAgICAgICAgICBjb25zdCBhdXRvJiBzdGF0ZUl0ZW0gPSBp
dGVtLmdldDxTZXRTdGF0ZT4oKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBmb3Igbm93LCBvbmx5
IGRyb3AgdGhlIGl0ZW0gaWYgdGhlIG9ubHkgc3RhdGUtY2hhbmdlIGZsYWdzIGFyZSBwbGF0Zm9y
bS1zcGVjaWZpYy4KLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5tX2NoYW5nZUZs
YWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHND
aGFuZ2UpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VG
bGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
Q2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAgICAgaWYg
KHN0YXRlSXRlbS5zdGF0ZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6
OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0
ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1
ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAppbmRleCA1MGM4ZDhmNzU3N2ExNjcwNWVjZjg1NWFk
MTY5ODE4YjZkZjk4YmJhLi4zOTVmZTY3MWNjZjc0MjJhMTY1Njc2Yzc5Y2QxZTA5ZWY1NTlhOTRk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVyLmNwcApAQCAtODks
NyArODksNyBAQCB2b2lkIEl0ZW1IYW5kbGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRTdGF0ZTog
ewotICAgICAgICBnZXQ8U2V0U3RhdGU+KCkuYXBwbHkoY29udGV4dCk7CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5
cGU6OlNldExpbmVDYXA6IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAppbmRl
eCAyMTNkYjljOGNmNDJlYzFhZTJkMTMzOTM3NWQ5ZjU2MzBlNzZkNzQzLi5mOTAwOTFmMTJkMjVi
YjdjNTYwOTI3NWQwMTRkZWExYWIxMDI5M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbXMuY3BwCkBAIC0yMDksMjMgKzIwOSwyOSBAQCBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2V0U3Ryb2tlVGhpY2tuZXNzJiBzdGF0ZSkKIH0K
IAogU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwg
R3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgZmxhZ3MpCi0gICAgOiBtX3N0
YXRlKHN0YXRlLCBmbGFncykKKyAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGUsIGZsYWdzKQogewog
fQogCi1TZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Um
IHN0YXRlQ2hhbmdlKQotICAgIDogbV9zdGF0ZShzdGF0ZUNoYW5nZSkKK1NldFN0YXRlOjpTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGVDaGFuZ2UsIGNvbnN0
IFBhdHRlcm5EYXRhJiBzdHJva2VQYXR0ZXJuLCBjb25zdCBQYXR0ZXJuRGF0YSYgZmlsbFBhdHRl
cm4pCisgICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlQ2hhbmdlKQorICAgICwgbV9zdHJva2VQYXR0
ZXJuKHN0cm9rZVBhdHRlcm4pCisgICAgLCBtX2ZpbGxQYXR0ZXJuKGZpbGxQYXR0ZXJuKQogewog
fQogCi12b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0
Cit2b2lkIFNldFN0YXRlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5hdGl2ZUlt
YWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKQog
ewotICAgIG1fc3RhdGUuYXBwbHkoY29udGV4dCk7CisgICAgaWYgKG1fc3RhdGVDaGFuZ2UubV9j
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNo
YW5nZSkgJiYgc3Ryb2tlUGF0dGVybkltYWdlKQorICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3Rh
dGUuc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpzdHJva2VQYXR0ZXJu
SW1hZ2UpLCBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgaWYgKG1fc3RhdGVDaGFu
Z2UubV9jaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBhdHRl
cm5DaGFuZ2UpICYmIGZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9z
dGF0ZS5maWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShtYWtlUmVmKCpmaWxsUGF0dGVybklt
YWdlKSwgbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICBtX3N0YXRlQ2hhbmdlLmFwcGx5
KGNvbnRleHQpOwogfQogCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgU2V0U3RhdGUmIHN0YXRlKQogewotICAgIHRzIDw8IHN0YXRlLnN0YXRlKCk7
CisgICAgdHMgPDwgc3RhdGUuc3RhdGVDaGFuZ2UoKTsKICAgICByZXR1cm4gdHM7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEl0ZW1zLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCmluZGV4IDRjZmJkODliMDQ2NTk1ZjI4MWQ0MWUy
MTIwNWE3ZmYzYTZhNjM2N2UuLjcwNmI4NGZmODA1MjFkMzliYjA1NzViMmI4NjM5MzM1Y2M3NmVh
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaApAQCAtMjU0LDkgKzI1NCwxMiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGlzRHJhd2luZ0l0ZW0gPSBmYWxz
ZTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwotICAgIFdFQkNP
UkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJik7Ci0g
ICAgCi0gICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZTsgfQorCisgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmIHN0YXRlQ2hhbmdlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZUNoYW5nZTsgfQorICAgIGNv
bnN0IFBhdHRlcm46OlBhcmFtZXRlcnMmIHN0cm9rZVBhdHRlcm5QYXJhbWV0ZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnM7IH0KKyAgICBjb25zdCBQYXR0ZXJu
OjpQYXJhbWV0ZXJzJiBmaWxsUGF0dGVyblBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX2Zp
bGxQYXR0ZXJuLnBhcmFtZXRlcnM7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIg
c3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlUGF0
dGVybi50aWxlSW1hZ2VJZGVudGlmaWVyOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyIGZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUGF0
dGVybi50aWxlSW1hZ2VJZGVudGlmaWVyOyB9CiAKICAgICBzdGF0aWMgdm9pZCBidWlsZGVyU3Rh
dGUoR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKQEAgLTI2NSwxOSArMjY4LDI4IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFNl
dFN0YXRlPiBkZWNvZGUoRGVjb2RlciYpOwogCi0gICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRl
eHQmKSBjb25zdDsKKyAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYsIE5hdGl2ZUltYWdl
KiBzdHJva2VQYXR0ZXJuSW1hZ2UsIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlKTsKIAog
cHJpdmF0ZToKLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSBtX3N0YXRlOworICAgIHN0
cnVjdCBQYXR0ZXJuRGF0YSB7CisgICAgICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciB0
aWxlSW1hZ2VJZGVudGlmaWVyOworICAgICAgICBQYXR0ZXJuOjpQYXJhbWV0ZXJzIHBhcmFtZXRl
cnM7CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JUIFNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiwgY29uc3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRlcm4sIGNv
bnN0IFBhdHRlcm5EYXRhJiBmaWxsUGF0dGVybik7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSBtX3N0YXRlQ2hhbmdlOworICAgIFBhdHRlcm5EYXRhIG1fc3Ryb2tlUGF0dGVybjsK
KyAgICBQYXR0ZXJuRGF0YSBtX2ZpbGxQYXR0ZXJuOwogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4KIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewot
ICAgIGF1dG8gY2hhbmdlRmxhZ3MgPSBtX3N0YXRlLm1fY2hhbmdlRmxhZ3M7CisgICAgYXV0byBj
aGFuZ2VGbGFncyA9IG1fc3RhdGVDaGFuZ2UubV9jaGFuZ2VGbGFnczsKICAgICBlbmNvZGVyIDw8
IGNoYW5nZUZsYWdzOwogCi0gICAgYXV0byYgc3RhdGUgPSBtX3N0YXRlLm1fc3RhdGU7CisgICAg
YXV0byYgc3RhdGUgPSBtX3N0YXRlQ2hhbmdlLm1fc3RhdGU7CiAKICAgICBpZiAoY2hhbmdlRmxh
Z3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkg
ewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlR3JhZGllbnQ7CkBAIC0yODcsOCAr
Mjk5LDEwIEBAIHZvaWQgU2V0U3RhdGU6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
CiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VQYXR0ZXJuQ2hhbmdlKSkgewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuc3Ryb2tlUGF0
dGVybjsKLSAgICAgICAgaWYgKHN0YXRlLnN0cm9rZVBhdHRlcm4pCi0gICAgICAgICAgICBlbmNv
ZGVyIDw8ICpzdGF0ZS5zdHJva2VQYXR0ZXJuOworICAgICAgICBpZiAoYXV0byYgcGF0dGVybiA9
IHN0YXRlLnN0cm9rZVBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+
dGlsZUltYWdlKCkucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBl
bmNvZGVyLmVuY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4
X3QqPigmcGF0dGVybi0+cGFyYW1ldGVycygpKSwgc2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMp
LCAxKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhH
cmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbEdyYWRpZW50Q2hhbmdlKSkgewpAQCAtMjk5LDggKzMx
MywxMCBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
ICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbFBh
dHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIGVuY29kZXIgPDwgISFzdGF0ZS5maWxsUGF0dGVybjsK
LSAgICAgICAgaWYgKHN0YXRlLmZpbGxQYXR0ZXJuKQotICAgICAgICAgICAgZW5jb2RlciA8PCAq
c3RhdGUuZmlsbFBhdHRlcm47CisgICAgICAgIGlmIChhdXRvJiBwYXR0ZXJuID0gc3RhdGUuZmls
bFBhdHRlcm4pIHsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+dGlsZUltYWdlKCku
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCk7CisgICAgICAgICAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPigmcGF0dGVy
bi0+cGFyYW1ldGVycygpKSwgc2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMpLCAxKTsKKyAgICAg
ICAgfQogICAgIH0KIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6U2hhZG93Q2hhbmdlKSkgewpAQCAtMzY2LDYgKzM4Miw5IEBAIE9wdGlvbmFsPFNl
dFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVDaGFuZ2Ugc3RhdGVDaGFuZ2U7CiAgICAgc3RhdGVDaGFuZ2UubV9jaGFuZ2VG
bGFncyA9ICpjaGFuZ2VGbGFnczsKIAorICAgIFBhdHRlcm5EYXRhIHN0cm9rZVBhdHRlcm47Cisg
ICAgUGF0dGVybkRhdGEgZmlsbFBhdHRlcm47CisKICAgICBpZiAoc3RhdGVDaGFuZ2UubV9jaGFu
Z2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFu
Z2UpKSB7CiAgICAgICAgIE9wdGlvbmFsPGJvb2w+IGhhc1N0cm9rZUdyYWRpZW50OwogICAgICAg
ICBkZWNvZGVyID4+IGhhc1N0cm9rZUdyYWRpZW50OwpAQCAtMzg4LDExICs0MDcsMTYgQEAgT3B0
aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGhhc1N0cm9rZVBhdHRl
cm4udmFsdWUoKSkgewotICAgICAgICAgICAgYXV0byBzdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6
ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuKQorICAgICAg
ICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNl
SWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
KQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1vdmUoKnN0cm9rZVBhdHRlcm4p
OworICAgICAgICAgICAgUGF0dGVybjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPigmcGFyYW1ldGVycyksIHNpemVvZihQYXR0ZXJuOjpQYXJhbWV0ZXJzKSwgMSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgc3Ryb2tlUGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgcGFy
YW1ldGVycyB9OwogICAgICAgICB9CiAgICAgfQogCkBAIC00MTgsMTEgKzQ0MiwxNiBAQCBPcHRp
b25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoaGFzRmlsbFBhdHRlcm4u
dmFsdWUoKSkgewotICAgICAgICAgICAgYXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmRlY29k
ZShkZWNvZGVyKTsKLSAgICAgICAgICAgIGlmICghZmlsbFBhdHRlcm4pCisgICAgICAgICAgICBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmllcjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOworICAgICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgICAgICAgICAgc3RhdGVDaGFu
Z2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQYXR0ZXJuKTsKKyAgICAgICAg
ICAgIFBhdHRlcm46OlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnBh
cmFtZXRlcnMpLCBzaXplb2YoUGF0dGVybjo6UGFyYW1ldGVycyksIDEpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbGxQ
YXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBwYXJhbWV0ZXJzIH07CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTU4Myw3ICs2MTIsNyBAQCBPcHRpb25hbDxTZXRTdGF0ZT4g
U2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OwogICAgIH0KIAotICAgIHJldHVybiB7IHN0YXRlQ2hhbmdlIH07CisgICAgcmV0dXJuIHt7IHN0
YXRlQ2hhbmdlLCBzdHJva2VQYXR0ZXJuLCBmaWxsUGF0dGVybiB9fTsKIH0KIAogY2xhc3MgU2V0
TGluZUNhcCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXgg
NGNkYzNiMGFlY2M5NGRjYjE2NjZmMDk5Mjk0MTY2NTE3MjRiM2EzYS4uOTlmNzE2YmFlNTZiZTlh
OWU0MmYwYmJiYjM0ZTI2MzdiY2ZhMGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmNwcApAQCAtODUsOSArODUsMjAgQEAgc3RhdGljIGJvb2wgY29udGFpbnNPbmx5
SW5saW5lU3RhdGVDaGFuZ2VzKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGEK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBSZWNvcmRlcjo6Y2FjaGVOYXRpdmVJbWFnZShO
YXRpdmVJbWFnZSYgaW1hZ2UpCit7CisgICAgaWYgKG1fZGVsZWdhdGUpCisgICAgICAgIG1fZGVs
ZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIG1fZGlzcGxheUxpc3QuY2FjaGVO
YXRpdmVJbWFnZShpbWFnZSk7Cit9CisKIHZvaWQgUmVjb3JkZXI6OmFwcGVuZFN0YXRlQ2hhbmdl
SXRlbShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhbmdlcywgR3JhcGhpY3ND
b250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MgY2hhbmdlRmxhZ3MpCiB7CiAgICAgaWYgKCFj
b250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY2hhbmdlcywgY2hhbmdlRmxhZ3MpKSB7Cisg
ICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuc3Ryb2tlUGF0dGVybikK
KyAgICAgICAgICAgIGNhY2hlTmF0aXZlSW1hZ2UocGF0dGVybi0+dGlsZUltYWdlKCkpOworICAg
ICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLmZpbGxQYXR0ZXJuKQorICAg
ICAgICAgICAgY2FjaGVOYXRpdmVJbWFnZShwYXR0ZXJuLT50aWxlSW1hZ2UoKSk7CiAgICAgICAg
IGFwcGVuZDxTZXRTdGF0ZT4oY2hhbmdlcy5tX3N0YXRlLCBjaGFuZ2VGbGFncyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC0xODMsMTcgKzE5NCwxMyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3
SW1hZ2VCdWZmZXIoV2ViQ29yZTo6SW1hZ2VCdWZmZXImIGltYWdlQnVmZmVyLCBjb25zdCBGbG9h
dFJlYwogCiB2b2lkIFJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdl
LCBjb25zdCBGbG9hdFNpemUmIGltYWdlU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgb3B0
aW9ucykKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVO
YXRpdmVJbWFnZShpbWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGlt
YWdlKTsKKyAgICBjYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICBhcHBlbmQ8RHJhd05hdGl2
ZUltYWdlPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBk
ZXN0UmVjdCwgc3JjUmVjdCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdQYXR0
ZXJuKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPmNhY2hl
TmF0aXZlSW1hZ2UoaW1hZ2UpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7CisgICAgY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgYXBwZW5kPERyYXdQYXR0
ZXJuPihpbWFnZS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKSwgaW1hZ2VTaXplLCBkZXN0
UmVjdCwgdGlsZVJlY3QsIHBhdHRlcm5UcmFuc2Zvcm0sIHBoYXNlLCBzcGFjaW5nLCBvcHRpb25z
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNjRmNzhh
Y2I2YzQ5NjM5ODUyNjZkMmM0MzU3MWViNjk0NDVjZTAzYy4uODA0NmEyMWEyZTE4MTE0OTBjNjcw
NjAyOTVjNjdlMGRkYWFhYzFiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5oCkBAIC0xNzEsNiArMTcxLDggQEAgcHJpdmF0ZToKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgd2lsbEFwcGVuZEl0ZW1PZlR5cGUoSXRlbVR5cGUpOwogCisgICAgdm9pZCBjYWNoZU5hdGl2
ZUltYWdlKE5hdGl2ZUltYWdlJik7CisKICAgICB2b2lkIGFwcGVuZFN0YXRlQ2hhbmdlSXRlbShj
b25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpT
dGF0ZUNoYW5nZUZsYWdzKTsKIAogICAgIEZsb2F0UmVjdCBleHRlbnRGcm9tTG9jYWxCb3VuZHMo
Y29uc3QgRmxvYXRSZWN0JikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBs
YXllci5jcHAKaW5kZXggMzI1ZGI5NzM5ZTlmY2YyMTMxZTkxNGU2YWU1Yzg1YTgyZWJhZTFjOS4u
NGQ5MDZhMjQ1NjQ0NjJmNmUwMTgxNjlkMWIxNjg5OTJkOGRmMmNjYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVw
bGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcApAQCAtNzAsNiArNzAsMjkgQEAgaW5saW5lIHN0
YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5TmF0aXZlSW1h
Z2VJdGVtKEdyYXBoaWMKICAgICByZXR1cm4gcmVzb3VyY2VJZGVudGlmaWVyOwogfQogCitpbmxp
bmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlTZXRT
dGF0ZUl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBOYXRpdmVJbWFnZUhhc2hN
YXAmIG5hdGl2ZUltYWdlcywgSXRlbUhhbmRsZSBpdGVtKQoreworICAgIGF1dG8mIHNldFN0YXRl
SXRlbSA9IGl0ZW0uZ2V0PFNldFN0YXRlPigpOworCisgICAgTmF0aXZlSW1hZ2UqIHN0cm9rZVBh
dHRlcm5JbWFnZSA9IG51bGxwdHI7CisgICAgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2Ug
PSBudWxscHRyOworCisgICAgaWYgKGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJ
dGVtLnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkgeworICAgICAgICBzdHJva2VQYXR0
ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmllcik7CisgICAgICAg
IGlmICghc3Ryb2tlUGF0dGVybkltYWdlKQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlSWRl
bnRpZmllcjsKKyAgICB9CisKKyAgICBpZiAoYXV0byByZXNvdXJjZUlkZW50aWZpZXIgPSBzZXRT
dGF0ZUl0ZW0uZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSkgeworICAgICAgICBmaWxsUGF0
dGVybkltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAg
ICBpZiAoIWZpbGxQYXR0ZXJuSW1hZ2UpCisgICAgICAgICAgICByZXR1cm4gcmVzb3VyY2VJZGVu
dGlmaWVyOworICAgIH0KKworICAgIHNldFN0YXRlSXRlbS5hcHBseShjb250ZXh0LCBzdHJva2VQ
YXR0ZXJuSW1hZ2UsIGZpbGxQYXR0ZXJuSW1hZ2UpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
Cit9CisKIHRlbXBsYXRlPGNsYXNzIFQ+CiBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmllcj4gYXBwbHlGb250SXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZvbnRSZW5kZXJpbmdSZXNvdXJjZU1hcCYgZm9udHMsIEl0ZW1IYW5kbGUgaXRl
bSkKIHsKQEAgLTExNyw2ICsxNDAsMTIgQEAgc3RkOjpwYWlyPE9wdGlvbmFsPFN0b3BSZXBsYXlS
ZWFzb24+LCBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+PiBSZXAKICAgICAg
ICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKICAgICB9CiAKKyAgICBp
ZiAoaXRlbS5pczxTZXRTdGF0ZT4oKSkgeworICAgICAgICBpZiAoYXV0byBtaXNzaW5nQ2FjaGVk
UmVzb3VyY2VJZGVudGlmaWVyID0gYXBwbHlTZXRTdGF0ZUl0ZW0obV9jb250ZXh0LCBtX25hdGl2
ZUltYWdlcywgaXRlbSkpCisgICAgICAgICAgICByZXR1cm4geyBTdG9wUmVwbGF5UmVhc29uOjpN
aXNzaW5nQ2FjaGVkUmVzb3VyY2UsIFdURk1vdmUobWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRp
ZmllcikgfTsKKyAgICAgICAgcmV0dXJuIHsgV1RGOjpudWxsb3B0LCBXVEY6Om51bGxvcHQgfTsK
KyAgICB9CisKICAgICBpdGVtLmFwcGx5KG1fY29udGV4dCk7CiAgICAgcmV0dXJuIHsgV1RGOjpu
dWxsb3B0LCBXVEY6Om51bGxvcHQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCA1NjMzYTBhZmE2NGRkNjZkNmFl
ZDllOTdkZTJlNjhkYmUxNmIzODExLi4xNjVlNjdiYzMwZjQ1YzY0NmFiMmIwNDhlNjIwODNjNzdm
NDQxMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRVRpbGUuY3BwCkBAIC03MiwxNSArNzIsMTUgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3Jt
QXBwbHlTb2Z0d2FyZSgpCiAgICAgdGlsZUltYWdlQ29udGV4dC50cmFuc2xhdGUoLWluTWF4RWZm
ZWN0TG9jYXRpb24ueCgpLCAtaW5NYXhFZmZlY3RMb2NhdGlvbi55KCkpOwogICAgIHRpbGVJbWFn
ZUNvbnRleHQuZHJhd0ltYWdlQnVmZmVyKCppbkJ1ZmZlciwgaW4tPmFic29sdXRlUGFpbnRSZWN0
KCkubG9jYXRpb24oKSk7CiAKLSAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6
c2lua0ludG9JbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOworICAgIGF1dG8gdGlsZUltYWdlQ29w
eSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7
CiAgICAgaWYgKCF0aWxlSW1hZ2VDb3B5KQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlQ29weS5yZWxlYXNlTm9uTnVsbCgpLCB0
cnVlLCB0cnVlKTsKLQogICAgIEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuVHJhbnNmb3JtOwogICAg
IHBhdHRlcm5UcmFuc2Zvcm0udHJhbnNsYXRlKGluTWF4RWZmZWN0TG9jYXRpb24gLSBtYXhFZmZl
Y3RMb2NhdGlvbik7Ci0gICAgcGF0dGVybi5nZXQoKS5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0o
cGF0dGVyblRyYW5zZm9ybSk7CisKKyAgICBhdXRvIHBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUo
dGlsZUltYWdlQ29weS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5UcmFu
c2Zvcm19KTsKKwogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4dCA9IHJlc3VsdElt
YWdlLT5jb250ZXh0KCk7CiAgICAgZmlsdGVyQ29udGV4dC5zZXRGaWxsUGF0dGVybihXVEZNb3Zl
KHBhdHRlcm4pKTsKICAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0UmVjdChGbG9hdFBv
aW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDBkMDQ4MTFiM2U5ODFjNTE2
NTEzNTRhZDgwZjBiY2Y3NjJhMGJlYmQuLmM3MGMxNGFkZTFmZjViZGVkZTQ3NGNlZmJlMzgxMzA4
MDE0NWQxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuY3BwCkBAIC0zMjY2LDE0ICszMjY2LDEzIEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4g
cGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxv
CiAgICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVuLCB7IHRleHRHYXAs
IHlPZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAgYXV0byBmaWxsUGF0
dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwg
dHJ1ZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJ
bWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisKICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVy
bk9mZnNldFRyYW5zZm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnRyYW5zbGF0ZShj
b250ZW50T2Zmc2V0ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAgIHBhdHRlcm5PZmZzZXRUcmFu
c2Zvcm0uc2NhbGUoMSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCkpOwotICAgIGZpbGxQYXR0
ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybk9mZnNldFRyYW5zZm9ybSk7CiAK
LSAgICByZXR1cm4gZmlsbFBhdHRlcm47CisgICAgcmV0dXJuIFBhdHRlcm46OmNyZWF0ZSh0aWxl
SW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuT2Zmc2V0VHJhbnNm
b3JtfSk7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBlMzQyNDMxZDE0OTFm
M2YxZDBiYmQ0YmNmOTVhMDUyNmVkMDMwZmQxLi45NDcxOWIzZWY4NzcyZWZjYTA3YzBlMmIzNWRk
MWMwNDA2MDk3MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTIsMTYgKzExMiwxMiBAQCBQ
YXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIE9wdAogCiAgICAgY29uc3QgSW50U2l6ZSB0aWxlSW1hZ2VTaXpl
ID0gdGlsZUltYWdlLT5sb2dpY2FsU2l6ZSgpOwogCi0gICAgUmVmUHRyPEltYWdlPiBjb3BpZWRJ
bWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7Cisg
ICAgYXV0byBjb3BpZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05hdGl2ZUltYWdlKFdU
Rk1vdmUodGlsZUltYWdlKSk7CiAgICAgaWYgKCFjb3BpZWRJbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8gcGF0dGVybkRhdGEg
PSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwotICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuID0g
UGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUp
OwotCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0aW9uLgotCisgICAg
YXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7CiAgICAgcGF0dGVy
bkRhdGEtPnRyYW5zZm9ybS50cmFuc2xhdGUodGlsZUJvdW5kYXJpZXMubG9jYXRpb24oKSk7CiAg
ICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS5zY2FsZSh0aWxlQm91bmRhcmllcy5zaXplKCkgLyB0
aWxlSW1hZ2VTaXplKTsKIApAQCAtMTM1LDcgKzEzMSw5IEBAIFBhdHRlcm5EYXRhKiBSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
T3B0CiAgICAgICAgIGlmIChzaG91bGRUcmFuc2Zvcm1PblRleHRQYWludGluZyhyZW5kZXJlciwg
YWRkaXRpb25hbFRleHRUcmFuc2Zvcm1hdGlvbikpCiAgICAgICAgICAgICBwYXR0ZXJuRGF0YS0+
dHJhbnNmb3JtICo9IGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtYXRpb247CiAgICAgfQotICAgIHBh
dHRlcm5EYXRhLT5wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybkRhdGEt
PnRyYW5zZm9ybSk7CisKKyAgICAvLyBCdWlsZCBwYXR0ZXJuLgorICAgIHBhdHRlcm5EYXRhLT5w
YXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsg
dHJ1ZSwgdHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKIAogICAgIC8vIFZhcmlvdXMg
Y2FsbHMgYWJvdmUgbWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21lIGZyaW5nZSBjYXNl
cyAoSW1hZ2VCdWZmZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGluIHRoZSBTVkcgaW1h
Z2UgY2FjaGUgZm9yIGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBhdHRlcm5EYXRhIGRl
bGV0ZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDE5YWYyOTk2NjgyN2Q0YjYwMWQ4Y2Q1MjdiZjE0YzlhNzdkNzA4OWIuLmJiN2M4
NGJmODE0NzVjY2M5MTlmMDc4MzAwNGQ5Mjk3MTgwMGZlNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTA3NSwxOCArMTA3NSw2IEBA
IHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25hbEltYWdlKERlY29k
ZXImIGRlY29kZXIsIFJlZlB0cjxJbWFnCiAgICAgcmV0dXJuIGRlY29kZUltYWdlKGRlY29kZXIs
IGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZW5jb2RlKEVu
Y29kZXImIGVuY29kZXIsIGNvbnN0IEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBl
bmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdlLmdldCgpKTsKLX0K
LQotYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBpZiAoIWRlY29kZU9wdGlvbmFs
SW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxSZWY8Rm9udD4+Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZvbnQ+JiBmb250KQog
ewogICAgIGVuY29kZXIgPDwgZm9udC0+b3JpZ2luKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDAwYzE0M2ZiYmI4OWQyNjY0Y2FlNTBhNWUx
ZmJmM2Y4ZTkxNTk1MDcuLjZmNzIxODBmOTg1MzI3M2UzZjE2ZjYxMGI0ZDUzMWYxYWNmMThhZTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0x
MDksNyArMTA5LDYgQEAgY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHM7CiBj
bGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNsYXNzIEhUVFBIZWFkZXJNYXA7
Ci1jbGFzcyBJbWFnZUhhbmRsZTsKIGNsYXNzIEludFBvaW50OwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIEludFNpemU7CkBAIC00MTgsMTEgKzQxNyw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAgc3RhdGljIE9wdGlvbmFsPFdlYkNv
cmU6OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNvZGVyJik7CiB9Owog
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkltYWdlSGFuZGxlPiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpJbWFnZUhh
bmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2Rl
ciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7Ci19OwotCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewogICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgc3Rh
dGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419803</attachid>
            <date>2021-02-09 18:56:46 -0800</date>
            <delta_ts>2021-02-11 21:45:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210209185645.patch</filename>
            <type>text/plain</type>
            <size>44978</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdmNjkwYzRmM2Y2ZTAy
NmQ0N2ZjOTA3N2Y3OGM0ODIwZGU2Yzk3OC4uNDY2YmZlYTE3MjJjNGY5NjlhM2U3Y2Q0NTBhMDFk
NDQ2Nzc4YTcxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wMi0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZCBhIE5hdGl2ZUltYWdlIGluc3RlYWQgb2YgYW4gSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBtYWtlIGNhY2hpbmcgdGhl
IFBhdHRlcm4gZGF0YSBpbiB0aGUgR1BVUCBzdHJhaWdodGZvcndhcmQgc2luY2UKKyAgICAgICAg
YWxsIHdlIG5lZWQgaXMgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGFuZCBlbmNvZGUgdGhlIHBh
dHRlcm4gZGF0YS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1BhdHRlcm4uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAgIEV4dHJhY3QgYSBOYXRpdmVJbWFnZSBvZiBhbiBJ
bWFnZS4gVGhlIHBsYXRmb3JtIFBhdHRlcm5zIGRlYWwgd2l0aAorICAgICAgICBOYXRpdmVJbWFn
ZXMgb25seS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAg
IFJlbW92ZSBJbWFnZUhhbmRsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OlBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6c2V0
UGF0dGVyblNwYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjplbmNvZGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
TWFrZSB0aGUgbmV3IHN0cnVjdCAnUGFyYW1ldGVycycgaG9sZHMgYWxsIHRoZSBtZW1iZXJzIG90
aGVyIHRoYW4gdGhlCisgICAgICAgIE5hdGl2ZUltYWdlLiBUaGlzIHN0cnVjdCArIFJlbmRlcmlu
Z1Jlc291cmNlSWRlbnRpZmVyIG9mIHRoZSBOYXRpdmVJbWFnZQorICAgICAgICB3aWxsIGJlIHJl
Y29yZGVkIGZvciB0aGUgc3Ryb2tlUGF0dGVybiBhbmQgdGhlIGZpbGxQYXR0ZXJuLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhaXJvOjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVy
bjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgVGhlIHBsYXRmb3JtIFBh
dHRlcm4gZGVhbHMgb25seSB3aXRoIE5hdGl2ZUltYWdlcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyk6CisgICAgICAg
IFNldFN0YXRlOjpzdGF0ZSgpIGlzIHJlbmFtZWQgdG8gU2V0U3RhdGVJdGVtOjpzdGF0ZUNoYW5n
ZSgpIHNpbmNlIGl0IAorICAgICAgICByZXR1cm5zIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRs
ZTo6YXBwbHkpOgorICAgICAgICBTZXRTdGF0ZTo6YXBwbHkoKSBoYXMgdG8gYmUgYSBzcGVjaWFs
IGNhc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6
OlNldFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6YXBw
bHkpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIEFkZCBhIG5ldyBjb25zdHJ1Y3RvciBmb3IgU2V0U3RhdGUgdG8gYmUgdXNlZCBi
eSB0aGUgZGVjb2Rlci4gQWxsIHRoZQorICAgICAgICBtZW1iZXJzIG9mIEdyYXBoaWNzQ29udGV4
dFN0YXRlQ2hhbmdlIHdpbGwgYmUgY29waWVkIGJ1dCBzdHJva2VQYXR0ZXJuCisgICAgICAgIGFu
ZCBmaWxsUGF0dGVybiB3aWxsIGJlIGNyZWF0ZWQgb25seSB3aGVuIHRoZWlyIE5hdGl2ZUltYWdl
cyBhcmUgcmVzb2x2ZWQKKyAgICAgICAgaW4gdGhlIFNldFN0YXRlOjphcHBseSgpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdHJva2VQYXR0
ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
U3RhdGU6OmZpbGxQYXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpE
aXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxsUGF0dGVybklt
YWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
U3RhdGU6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0
U3RhdGU6OmRlY29kZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6
OnN0YXRlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUgZW5jb2RlIGFu
ZCB0aGUgZGVjb2Rpbmcgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4gCisgICAgICAg
IGJ5IHVzaW5nIHRoZSBQYXR0ZXJuOjpQYXJhbWV0ZXJzIGFuZCB0aGUgUmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmZXIgb2YKKyAgICAgICAgdGhlIE5hdGl2ZUltYWdlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjYWNoZU5hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFu
Z2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJh
d1BhdHRlcm4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmg6CisgICAgICAgIENhY2hlIHRoZSBOYXRpdmVJbWFnZXMgb2Ygc3Ry
b2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlz
cGxheUxpc3Q6OlJlcGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICBSZXNvbHZlIHRoZSBOYXRp
dmVJbWFnZXMgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4gZnJvbSB0aGUgY2FjaGVk
CisgICAgICAgIE5hdGl2ZUltYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICBQYXR0
ZXJucyBzaG91bGQgYmUgY3JlYXRlZCB3aXRoIE5hdGl2ZUltYWdlcy4KKwogMjAyMS0wMi0wOCAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBBIFBhdHRlcm4g
d2l0aCBhbiBTVkcgaW1hZ2UgaXMgbm90IHJlbmRlcmVkIGNvcnJlY3RseQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBj
Nzk5Y2YwMWIwMTRhNjhhZDE4ZmMyYjRhNTRmZDZmNjMwMzFmZDI0Li4zMGJlMTYwYmM4Y2UzZTMz
ZDRmYjVmOGQ0ZGU2YjE5NGU2Yjc2ZDg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIx
LTAyLTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIE1h
a2UgUGF0dGVybiBob2xkIGEgTmF0aXZlSW1hZ2UgaW5zdGVhZCBvZiBhbiBJbWFnZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNjM3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxJbWFnZUhh
bmRsZT46OmVuY29kZSk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1h
Z2VIYW5kbGU+OjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaDoKKyAgICAgICAgRGVsZXRlIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcg
b2YgSW1hZ2Ugc2luY2UgaXQgaXMgbm90IHVzZWQgYW55bW9yZQorCiAyMDIxLTAyLTA4ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUHJldmVudCBXZWJQcm9jZXNz
IHRvIHJlLWVudGVyIG9uIHN5bmMgSVBDIHRvIHRoZSBHUFVQcm9jZXNzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCmluZGV4IDcyZWExYTg3YzZkMGUyNjAx
ODc1N2VlMmY3YmM2MDQ2M2M5YWE4MDUuLjBhYTFmMTIxYmY2ODU3Njc0ODRhNWQ2YjJlMjc5MzVi
ZDg2MTY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4u
Y3BwCkBAIC0yOCwxOSArMjgsMTkgQEAKIAogI2luY2x1ZGUgIkRPTU1hdHJpeDJESW5pdC5oIgog
I2luY2x1ZGUgIkRPTU1hdHJpeFJlYWRPbmx5LmgiCi0jaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNs
dWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBhdHRlcm4uaCIKICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q2FudmFzUGF0
dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRlKFJlZjxJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCitSZWY8Q2FudmFzUGF0dGVybj4g
Q2FudmFzUGF0dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBl
YXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ2FudmFzUGF0dGVybihXVEZNb3ZlKGltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSwg
b3JpZ2luQ2xlYW4pKTsKIH0KIAotQ2FudmFzUGF0dGVybjo6Q2FudmFzUGF0dGVybihSZWY8SW1h
Z2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFu
KQotICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZNb3ZlKGltYWdlKSwgcmVwZWF0
WCwgcmVwZWF0WSkpCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFn
ZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4p
CisgICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1vdmUoaW1hZ2UpLCB7IHJlcGVh
dFgsIHJlcGVhdFkgfSkpCiAgICAgLCBtX29yaWdpbkNsZWFuKG9yaWdpbkNsZWFuKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCmluZGV4IGM4YTllM2Nl
MTYxYmJiOGY5YTFkNzViZTI5ZmRjZWI4MjFjYzk5MzEuLmU0NmQyMWJjNTEzNWQ5YTc0ZjQ1NzVj
OWRkNjVlOWNlY2RjYjhkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L0NhbnZhc1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQ
YXR0ZXJuLmgKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNs
YXNzIEltYWdlOworY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQYXR0ZXJuOwogc3RydWN0IERP
TU1hdHJpeDJESW5pdDsKIAogY2xhc3MgQ2FudmFzUGF0dGVybiA6IHB1YmxpYyBSZWZDb3VudGVk
PENhbnZhc1BhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENhbnZhc1BhdHRlcm4+
IGNyZWF0ZShSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9y
aWdpbkNsZWFuKTsKKyAgICBzdGF0aWMgUmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0ZShSZWY8TmF0
aXZlSW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFu
KTsKICAgICB+Q2FudmFzUGF0dGVybigpOwogCiAgICAgc3RhdGljIGJvb2wgcGFyc2VSZXBldGl0
aW9uVHlwZShjb25zdCBTdHJpbmcmLCBib29sJiByZXBlYXRYLCBib29sJiByZXBlYXRZKTsKQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRyYW5zZm9y
bShET01NYXRyaXgyREluaXQmJik7CiAKIHByaXZhdGU6Ci0gICAgQ2FudmFzUGF0dGVybihSZWY8
SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKTsK
KyAgICBDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwgYm9vbCByZXBlYXRYLCBib29s
IHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVmPFBhdHRlcm4+IG1fcGF0dGVy
bjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCmluZGV4IDg4
MzBjNWRkYWVkYTQ3ZjIyODJlMDRkODE3MjQzNDFmMDRlODljM2QuLjlmZjIyYTdjM2Q1ZGVjY2U2
YTY0YmFhYTZhY2JlYzExNmIxMDJjMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBAIC0xOTM3
LDcgKzE5MzcsMTUgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKICAgICBpZiAoY2FjaGVkSW1h
Z2UtPmltYWdlKCktPmlzU1ZHSW1hZ2UoKSkKICAgICAgICAgb3JpZ2luQ2xlYW4gPSBmYWxzZTsK
IAotICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVh
dGUoKmNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdlRWxlbWVudC5yZW5kZXJlcigp
KSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAgYXV0byogaW1hZ2UgPSBj
YWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZUVsZW1lbnQucmVuZGVyZXIoKSk7Cisg
ICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUltYWdlKCk7Cisg
ICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRT
dGF0ZUVycm9yIH07CisKKyAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFz
UGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJl
cGVhdFksIG9yaWdpbkNsZWFuKSB9OwogfQogCiBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0
dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQ2FudmFz
QmFzZSYgY2FudmFzLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKQEAgLTE5NDgsOCArMTk1
NiwxMiBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQwogCiAgICAgaWYgKCFjb3BpZWRJbWFnZSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgCisg
ICAgYXV0byBuYXRpdmVJbWFnZSA9IGNvcGllZEltYWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlm
ICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRl
cm46OmNyZWF0ZSgqY29waWVkSW1hZ2UsIHJlcGVhdFgsIHJlcGVhdFksIGNhbnZhcy5vcmlnaW5D
bGVhbigpKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0
ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0
WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpIH07CiB9CiAgICAgCiAjaWYgRU5BQkxFKFZJREVPKQpA
QCAtMTk2NCw3ICsxOTc2LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBD
YW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKIAogI2lmIFVTRShD
RykKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHZpZGVvRWxlbWVudC5uYXRpdmVJbWFnZUZv
ckN1cnJlbnRUaW1lKCkpCi0gICAgICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBD
YW52YXNQYXR0ZXJuOjpjcmVhdGUoQml0bWFwSW1hZ2U6OmNyZWF0ZShXVEZNb3ZlKG5hdGl2ZUlt
YWdlKSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OworICAgICAgICByZXR1cm4g
UmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdl
LnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogI2Vu
ZGlmCiAKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSAhZHJhd2luZ0NvbnRleHQoKSB8fCBkcmF3
aW5nQ29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8gUmVuZGVyaW5nTW9kZTo6QWNj
ZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwpAQCAtMTk3NCw3ICsxOTg2
LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKIAogICAgIHZpZGVvRWxlbWVudC5wYWludEN1
cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLCBGbG9hdFJlY3QoRmxv
YXRQb2ludCgpLCBzaXplKHZpZGVvRWxlbWVudCkpKTsKICAgICAKLSAgICByZXR1cm4gUmVmUHRy
PENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKEltYWdlQnVmZmVyOjpzaW5r
SW50b0ltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBQcmVzZXJ2ZVJlc29sdXRpb246Olllcyku
cmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CisgICAg
cmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShJbWFn
ZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSkucmVsZWFz
ZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07CiB9CiAKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAppbmRleCAw
Yzg1ZjhhODM3Njc5NjZiYTI2YjVjMzMzZWQ2MGMwMWE1MGFhMTE2Li5lNWYyMjEwYWU5ODczM2U5
ODRhYjU4NGY2ZjlhM2M4NDdiNWE4MDQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTIwMiw5ICsxMjAyLDEwIEBAIFJlZjxKU09OOjpBcnJh
eU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzR3Jh
ZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2Fu
dmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJiBjYW52
YXNQYXR0ZXJuKQogewotICAgIEltYWdlJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBhdHRl
cm4oKS50aWxlSW1hZ2UoKTsKKyAgICBhdXRvJiB0aWxlSW1hZ2UgPSBjYW52YXNQYXR0ZXJuLnBh
dHRlcm4oKS50aWxlSW1hZ2UoKTsKKyAgICBGbG9hdFJlY3QgcmVjdCA9IHsgeyB9LCB0aWxlSW1h
Z2Uuc2l6ZSgpIH07CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUo
dGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCk7Ci0gICAgaW1h
Z2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UodGlsZUltYWdlLCBGbG9hdFBvaW50KDAsIDAp
KTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRpdmVJbWFnZSh0aWxlSW1hZ2Us
IHRpbGVJbWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOwogCiAgICAgU3RyaW5nIHJlcGVhdDsKICAg
ICBib29sIHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS5yZXBlYXRYKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRleCA0MzZiMzdkNmM4ZWM2ZjAw
ZjRmZWI0ZGQzNmY0YTI5MjNjN2Y5NmVhLi5kYTAxMGYzZmRjZDA2ODA1NjI4Yjg2MGNhZTMyYmQ5
YmU5YTQ1NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAg
LTIxMCwxMSArMjEwLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VGltZXI+IG1f
YW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CiAKLWNsYXNzIEltYWdlSGFuZGxlIHsKLXB1YmxpYzoK
LSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwotfTsKLQogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRl
cm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKaW5k
ZXggNzk2YTA3YzE4NmI2MmZmNGU2YjZlYTI2MTA3ZmY5ZmM0YzQzOGU3MS4uNjM1MzIzNzY5Zjgw
MzNkZTMyOGU4ZDQ0ZTU3OTc1YTFkM2NkNjA2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0zMSwyMyArMzEsMjIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRlKFJlZjxJbWFnZT4mJiB0aWxlSW1hZ2Us
IGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0
ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0
ZXJzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhdHRlcm4oV1RGTW92ZSh0aWxlSW1h
Z2UpLCByZXBlYXRYLCByZXBlYXRZKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGF0dGVy
bihXVEZNb3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0KIAotUGF0dGVybjo6UGF0dGVy
bihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUGF0dGVy
bjo6UGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMpCiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGltYWdlKSkKLSAgICAsIG1fcmVw
ZWF0WChyZXBlYXRYKQotICAgICwgbV9yZXBlYXRZKHJlcGVhdFkpCisgICAgLCBtX3BhcmFtZXRl
cnMocGFyYW1ldGVycykKIHsKIH0KIAogUGF0dGVybjo6flBhdHRlcm4oKSA9IGRlZmF1bHQ7CiAK
LXZvaWQgUGF0dGVybjo6c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pCit2b2lkIFBhdHRlcm46OnNldFBhdHRl
cm5TcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5z
Zm9ybSkKIHsKLSAgICBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uID0gcGF0dGVyblNwYWNl
VHJhbnNmb3JtYXRpb247CisgICAgbV9wYXJhbWV0ZXJzLnBhdHRlcm5TcGFjZVRyYW5zZm9ybSA9
IHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IDJhNTYzZGEyNjE3ZDFiMDQyNDhiOTBhYjA2MzlkYjJj
YWY5YTg4YzAuLjZhYmNiZGQxNTk1MWQ4ZmY2OTdhNjhhYWEwZWZmYjZlOWY1OGY2MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmgKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBUb3JjaCBNb2JpbGUs
IEluYy4KICAqCkBAIC01Myw3NiArNTMsNDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
QWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgSW1hZ2U7Ci1j
bGFzcyBJbWFnZUhhbmRsZTsKIAogY2xhc3MgUGF0dGVybiBmaW5hbCA6IHB1YmxpYyBSZWZDb3Vu
dGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBh
dHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wg
cmVwZWF0WSk7CisgICAgc3RydWN0IFBhcmFtZXRlcnMgeworICAgICAgICBQYXJhbWV0ZXJzKGJv
b2wgcmVwZWF0WCA9IHRydWUsIGJvb2wgcmVwZWF0WSA9IHRydWUsIEFmZmluZVRyYW5zZm9ybSBw
YXR0ZXJuU3BhY2VUcmFuc2Zvcm0gPSB7IH0pCisgICAgICAgICAgICA6IHJlcGVhdFgocmVwZWF0
WCkKKyAgICAgICAgICAgICwgcmVwZWF0WShyZXBlYXRZKQorICAgICAgICAgICAgLCBwYXR0ZXJu
U3BhY2VUcmFuc2Zvcm0ocGF0dGVyblNwYWNlVHJhbnNmb3JtKQorICAgICAgICB7CisgICAgICAg
IH0KKyAgICAgICAgYm9vbCByZXBlYXRYOworICAgICAgICBib29sIHJlcGVhdFk7CisgICAgICAg
IEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CisgICAgfTsKKworICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4m
JiB0aWxlSW1hZ2UsIGNvbnN0IFBhcmFtZXRlcnMmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9S
VCB+UGF0dGVybigpOwogCi0gICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGlsZUltYWdlLmdldCgpOyB9CisgICAgTmF0aXZlSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGlsZUltYWdlLmdldCgpOyB9CisgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1l
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCi0gICAgLy8gUGF0dGVybiBz
cGFjZSBpcyBhbiBhYnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBz
cGFjZSBieSB0aGUgdHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybWF0aW9uJworICAg
IC8vIFBhdHRlcm4gc3BhY2UgaXMgYW4gYWJzdHJhY3Qgc3BhY2UgdGhhdCBtYXBzIHRvIHRoZSBk
ZWZhdWx0IHVzZXIgc3BhY2UgYnkgdGhlIHRyYW5zZm9ybWF0aW9uICd1c2VyU3BhY2VUcmFuc2Zv
cm0nCiAjaWYgIVVTRShESVJFQ1QyRCkKLSAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRp
b24pIGNvbnN0OworICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0OwogI2Vsc2UK
LSAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBo
aWNzQ29udGV4dCYsIGZsb2F0IGFscGhhLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFj
ZVRyYW5zZm9ybWF0aW9uKSBjb25zdDsKKyAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxh
dGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IGFscGhhLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3Q7CiAjZW5kaWYKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uKTsKLSAgICBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
blNwYWNlVHJhbnNmb3JtYXRpb247IH07Ci0gICAgYm9vbCByZXBlYXRYKCkgY29uc3QgeyByZXR1
cm4gbV9yZXBlYXRYOyB9Ci0gICAgYm9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gbV9yZXBl
YXRZOyB9Ci0KLSAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVy
JikgY29uc3Q7Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJl
ZjxQYXR0ZXJuPj4gZGVjb2RlKERlY29kZXImKTsKKyAgICB2b2lkIHNldFBhdHRlcm5TcGFjZVRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm07IH07CisgICAgYm9vbCByZXBlYXRYKCkgY29uc3QgeyByZXR1
cm4gbV9wYXJhbWV0ZXJzLnJlcGVhdFg7IH0KKyAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJl
dHVybiBtX3BhcmFtZXRlcnMucmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUmVm
PEltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgUGF0dGVybihSZWY8
TmF0aXZlSW1hZ2U+JiYsIGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIFJlZjxJbWFnZT4gbV90
aWxlSW1hZ2U7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRp
b247Ci0gICAgYm9vbCBtX3JlcGVhdFg7Ci0gICAgYm9vbCBtX3JlcGVhdFk7CisgICAgUmVmPE5h
dGl2ZUltYWdlPiBtX3RpbGVJbWFnZTsKKyAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIH07
CiAKLXRlbXBsYXRlPGNsYXNzIEVuY29kZXI+Ci12b2lkIFBhdHRlcm46OmVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAotewotICAgIEltYWdlSGFuZGxlIGltYWdlSGFuZGxlOwotICAgIGlt
YWdlSGFuZGxlLmltYWdlID0gbV90aWxlSW1hZ2UucHRyKCk7Ci0gICAgZW5jb2RlciA8PCBpbWFn
ZUhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0g
ICAgZW5jb2RlciA8PCBtX3JlcGVhdFg7Ci0gICAgZW5jb2RlciA8PCBtX3JlcGVhdFk7Ci19Ci0K
LXRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxSZWY8UGF0dGVybj4+IFBhdHRlcm46
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQotewotICAgIE9wdGlvbmFsPEltYWdlSGFuZGxlPiBp
bWFnZUhhbmRsZTsKLSAgICBkZWNvZGVyID4+IGltYWdlSGFuZGxlOwotICAgIGlmICghaW1hZ2VI
YW5kbGUpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxBZmZp
bmVUcmFuc2Zvcm0+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwotICAgIGRlY29kZXIgPj4g
cGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAgaWYgKCFwYXR0ZXJuU3BhY2VUcmFuc2Zv
cm1hdGlvbikKLSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGJv
b2w+IHJlcGVhdFg7Ci0gICAgZGVjb2RlciA+PiByZXBlYXRYOwotICAgIGlmICghcmVwZWF0WCkK
LSAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVh
dFk7Ci0gICAgZGVjb2RlciA+PiByZXBlYXRZOwotICAgIGlmICghcmVwZWF0WSkKLSAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKLQotICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0
ZShpbWFnZUhhbmRsZS0+aW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgKnJlcGVhdFgsICpyZXBlYXRZ
KTsKLSAgICBwYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKnBhdHRlcm5TcGFjZVRy
YW5zZm9ybWF0aW9uKTsKLSAgICByZXR1cm4gcGF0dGVybjsKLX0KLQogfSAvL25hbWVzcGFjZQot
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWly
b09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Q2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA3MzIwZGExY2JmZTkyODVmZDEyNmYwMDI0MTQzOGM0
ZGJhMzllY2M5Li43ZmFlNzc3YzM5NjZiNGM0ODZkZTIyMzJiMTkxMTMyMzFmZDkyZGYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJh
dGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0Nh
aXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU2Nyw3ICs1NjcsNyBAQCBGaWxsU291cmNlOjpGaWxsU291
cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSkKICAgICAgICAgcGF0dGVybi5v
YmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxsUGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAgICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3Rh
dGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgpOwotICAgICAgICBwYXR0ZXJuLnNpemUgPSBGbG9h
dFNpemUocGF0dGVybkltYWdlLndpZHRoKCksIHBhdHRlcm5JbWFnZS5oZWlnaHQoKSk7CisgICAg
ICAgIHBhdHRlcm4uc2l6ZSA9IHBhdHRlcm5JbWFnZS5zaXplKCk7CiAgICAgICAgIHBhdHRlcm4u
dHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRlcm4tPnBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwog
ICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpOwog
ICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBzdGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVy
bkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRl
cm5DYWlyby5jcHAKaW5kZXggNTYwZjc0N2E4ZmI2NDgxYmU0YTMwMTg1ODUwMGFhOWZhMTYwZjc4
Ni4uNjhkYWJhZjk4YWNhOWQxY2ZiNzFlMTY1MjJiOWRlYjI1ODA3ZmYxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8u
Y3BwCkBAIC0zNSwxOCArMzUsMTggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19wYXR0
ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mKSBjb25zdAogewotICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJ
bWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgYXV0byBw
bGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOworICAgIGlmICghcGxh
dGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBjYWlyb19wYXR0ZXJu
X3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShuYXRpdmVJbWFn
ZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsKKyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4g
PSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jfc3VyZmFjZShwbGF0Zm9ybUltYWdlLmdldCgpKTsK
IAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxm
Ci0gICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4ID0gdG9DYWlyb01hdHJpeChtX3BhdHRlcm5TcGFj
ZVRyYW5zZm9ybWF0aW9uKTsKKyAgICBjYWlyb19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0
cml4KHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpKTsKICAgICBjYWlyb19tYXRyaXhfaW52ZXJ0KCZt
YXRyaXgpOwogICAgIGNhaXJvX3BhdHRlcm5fc2V0X21hdHJpeChwYXR0ZXJuLCAmbWF0cml4KTsK
IAotICAgIGlmIChtX3JlcGVhdFggfHwgbV9yZXBlYXRZKQorICAgIGlmIChyZXBlYXRYKCkgfHwg
cmVwZWF0WSgpKQogICAgICAgICBjYWlyb19wYXR0ZXJuX3NldF9leHRlbmQocGF0dGVybiwgQ0FJ
Uk9fRVhURU5EX1JFUEVBVCk7CiAgICAgcmV0dXJuIHBhdHRlcm47CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAppbmRleCA2OTU0YzU2
NjU3MGFkN2FlNmMxZTc2MGYwNzg3ZDM3NzBhY2FhNjk0Li5mMWI5ZTNhN2MwNTU2OWE5ODkxYjY5
OGQyODNhYjUzOTdjNzI1ZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC01NSwyNCArNTUsMjEgQEAgc3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxs
YmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwogfQogCi1DR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3Jl
YXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNm
b3JtYXRpb24pIGNvbnN0CitDR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0
ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewot
ICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRpbGVJbWFnZSgpLnJlY3QoKTsKKyAgICBGbG9hdFJl
Y3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUltYWdlKCkuc2l6ZSgpIH07CiAKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRy
YW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9ybSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwog
ICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJu
VHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGlsZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgUGxhdGZv
cm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOwotICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdGls
ZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKLSAgICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUlt
YWdlLT5wbGF0Zm9ybUltYWdlKCk7Ci0gICAgCisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9y
bUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZvcm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1J
bWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRp
bmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBjYW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwog
ICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBhdHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2Ug
cGl4ZWwgY3JhY2tzLgotICAgIGlmIChtX3JlcGVhdFggJiYgbV9yZXBlYXRZKQorICAgIGlmIChy
ZXBlYXRYKCkgJiYgcmVwZWF0WSgpKQogICAgICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0
aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgpLCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJu
VGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAogICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28g
YmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAsIG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZy
YWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KQEAgLTgwLDggKzc3LDggQEAgQ0dQYXR0ZXJuUmVmIFBh
dHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJT
cGFjZVRyYW4KICAgICAvLyBJTlRfTUFYIGlzIGFsbW9zdCBjb3JyZWN0LCBidXQgdGhlcmUgc2Vl
bXMgdG8gYmUgc29tZSBudW1iZXIgd3JhcHBpbmcgb2NjdXJyaW5nIG1ha2luZyB0aGUgZmlsbAog
ICAgIC8vIHBhdHRlcm4gaXMgbm90IGZpbGxlZCBjb3JyZWN0bHkuCiAgICAgLy8gVG8gbWFrZSBl
cnJvciBvZiBmbG9hdGluZyBwb2ludCBsZXNzIHRoYW4gMC41LCB3ZSB1c2UgdGhlIGhhbGYgb2Yg
dGhlIG51bWJlciBvZiBtYW50aXNzYSBvZiBmbG9hdCAoMSA8PCAyMikuCi0gICAgQ0dGbG9hdCB4
U3RlcCA9IG1fcmVwZWF0WCA/IHRpbGVSZWN0LndpZHRoKCkgOiAoMSA8PCAyMik7Ci0gICAgQ0dG
bG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRpbGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOwor
ICAgIENHRmxvYXQgeFN0ZXAgPSByZXBlYXRYKCkgPyB0aWxlUmVjdC53aWR0aCgpIDogKDEgPDwg
MjIpOworICAgIENHRmxvYXQgeVN0ZXAgPSByZXBlYXRZKCkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6
ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBwYXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFn
ZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJpbmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawog
ICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0Zm9ybUltYWdlLmxlYWtSZWYoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3QuY3BwCmluZGV4IGQxNTNkZmE0NWMyMWFkODczZTRkNDg0NjcxZjNkMDRhY2I3
NDg1NGIuLmUwNzlmNzMwYmU4NTlhYzNiMDViOTQyOWMzMGU4MzYxZDE0M2FlYjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtOTEsMTAgKzkxLDEwIEBAIGJvb2wgRGlzcGxheUxpc3Q6
OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRGbGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQog
ICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRp
b25zKSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0
U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBGSVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBp
dGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5nZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMu
Ci0gICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFw
aGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAg
ICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0u
c3RhdGUoKS5tX2NoYW5nZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCisgICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRl
Q2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0
SXRlbUJ1ZmZlci5jcHAKaW5kZXggNTBjOGQ4Zjc1NzdhMTY3MDVlY2Y4NTVhZDE2OTgxOGI2ZGY5
OGJiYS4uMzk1ZmU2NzFjY2Y3NDIyYTE2NTY3NmM3OWNkMWUwOWVmNTU5YTk0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVtVHlwZTo6U2V0U3RhdGU6IHsKLSAgICAgICAg
Z2V0PFNldFN0YXRlPigpLmFwcGx5KGNvbnRleHQpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5l
Q2FwOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5Yzhj
ZjQyZWMxYWUyZDEzMzkzNzVkOWY1NjMwZTc2ZDc0My4uZjkwMDkxZjEyZDI1YmI3YzU2MDkyNzVk
MDE0ZGVhMWFiMTAyOTNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApA
QCAtMjA5LDIzICsyMDksMjkgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNldFN0cm9rZVRoaWNrbmVzcyYgc3RhdGUpCiB9CiAKIFNldFN0YXRl
OjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29u
dGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIGZsYWdzKQotICAgIDogbV9zdGF0ZShzdGF0ZSwg
ZmxhZ3MpCisgICAgOiBtX3N0YXRlQ2hhbmdlKHN0YXRlLCBmbGFncykKIHsKIH0KIAotU2V0U3Rh
dGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5n
ZSkKLSAgICA6IG1fc3RhdGUoc3RhdGVDaGFuZ2UpCitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRGF0
YSYgc3Ryb2tlUGF0dGVybiwgY29uc3QgUGF0dGVybkRhdGEmIGZpbGxQYXR0ZXJuKQorICAgIDog
bV9zdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZSkKKyAgICAsIG1fc3Ryb2tlUGF0dGVybihzdHJva2VQ
YXR0ZXJuKQorICAgICwgbV9maWxsUGF0dGVybihmaWxsUGF0dGVybikKIHsKIH0KIAotdm9pZCBT
ZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBTZXRT
dGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tl
UGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSkKIHsKLSAgICBtX3N0
YXRlLmFwcGx5KGNvbnRleHQpOworICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3Mu
Y29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0
cm9rZVBhdHRlcm5JbWFnZSkKKyAgICAgICAgbV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9z
dHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdl
RmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSAm
JiBmaWxsUGF0dGVybkltYWdlKQorICAgICAgICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBh
dHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFrZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmls
bFBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAgbV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsK
IH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNldFN0YXRlJiBzdGF0ZSkKIHsKLSAgICB0cyA8PCBzdGF0ZS5zdGF0ZSgpOworICAgIHRzIDw8
IHN0YXRlLnN0YXRlQ2hhbmdlKCk7CiAgICAgcmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJ
dGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2ZiZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVhN2ZmM2E2
YTYzNjdlLi43MDZiODRmZjgwNTIxZDM5YmIwNTc1YjJiODYzOTMzNWNjNzZlYTBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKQEAgLTI1NCw5ICsyNTQsMTIgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBpc0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBT
ZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYpOwotICAgIAotICAgIGNv
bnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
c3RhdGU7IH0KKworICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNo
YW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGVDaGFuZ2U7IH0KKyAgICBjb25zdCBQYXR0ZXJu
OjpQYXJhbWV0ZXJzJiBzdHJva2VQYXR0ZXJuUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
c3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzOyB9CisgICAgY29uc3QgUGF0dGVybjo6UGFyYW1ldGVy
cyYgZmlsbFBhdHRlcm5QYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9maWxsUGF0dGVybi5w
YXJhbWV0ZXJzOyB9CisgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRl
cm5JbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3N0cm9rZVBhdHRlcm4udGlsZUlt
YWdlSWRlbnRpZmllcjsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0
dGVybkltYWdlSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsbFBhdHRlcm4udGlsZUlt
YWdlSWRlbnRpZmllcjsgfQogCiAgICAgc3RhdGljIHZvaWQgYnVpbGRlclN0YXRlKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCkBAIC0yNjUsMTkgKzI2OCwyOCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVj
b2RlKERlY29kZXImKTsKIAotICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7
CisgICAgdm9pZCBhcHBseShHcmFwaGljc0NvbnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0
dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmlsbFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6Ci0g
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgbV9zdGF0ZTsKKyAgICBzdHJ1Y3QgUGF0dGVy
bkRhdGEgeworICAgICAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIgdGlsZUltYWdlSWRl
bnRpZmllcjsKKyAgICAgICAgUGF0dGVybjo6UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIH07
CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0
ZUNoYW5nZSYsIGNvbnN0IFBhdHRlcm5EYXRhJiBzdHJva2VQYXR0ZXJuLCBjb25zdCBQYXR0ZXJu
RGF0YSYgZmlsbFBhdHRlcm4pOworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgbV9z
dGF0ZUNoYW5nZTsKKyAgICBQYXR0ZXJuRGF0YSBtX3N0cm9rZVBhdHRlcm47CisgICAgUGF0dGVy
bkRhdGEgbV9maWxsUGF0dGVybjsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lk
IFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGNo
YW5nZUZsYWdzID0gbV9zdGF0ZS5tX2NoYW5nZUZsYWdzOworICAgIGF1dG8gY2hhbmdlRmxhZ3Mg
PSBtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3M7CiAgICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFn
czsKIAotICAgIGF1dG8mIHN0YXRlID0gbV9zdGF0ZS5tX3N0YXRlOworICAgIGF1dG8mIHN0YXRl
ID0gbV9zdGF0ZUNoYW5nZS5tX3N0YXRlOwogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5nZSkpIHsKICAgICAgICAg
ZW5jb2RlciA8PCAhIXN0YXRlLnN0cm9rZUdyYWRpZW50OwpAQCAtMjg3LDggKzI5OSwxMCBAQCB2
b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChj
aGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNo
YW5nZSkpIHsKICAgICAgICAgZW5jb2RlciA8PCAhIXN0YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAg
ICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJuKQotICAgICAgICAgICAgZW5jb2RlciA8PCAqc3Rh
dGUuc3Ryb2tlUGF0dGVybjsKKyAgICAgICAgaWYgKGF1dG8mIHBhdHRlcm4gPSBzdGF0ZS5zdHJv
a2VQYXR0ZXJuKSB7CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhdHRlcm4tPnRpbGVJbWFnZSgp
LnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpOworICAgICAgICAgICAgZW5jb2Rlci5lbmNv
ZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnBhdHRl
cm4tPnBhcmFtZXRlcnMoKSksIHNpemVvZihQYXR0ZXJuOjpQYXJhbWV0ZXJzKSwgMSk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKQEAgLTI5OSw4ICszMTMsMTAgQEAgdm9p
ZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
KSkgewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgICAgIGlm
IChzdGF0ZS5maWxsUGF0dGVybikKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxQ
YXR0ZXJuOworICAgICAgICBpZiAoYXV0byYgcGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuKSB7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpOworICAgICAgICAgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0
aERhdGEocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oJnBhdHRlcm4tPnBhcmFtZXRl
cnMoKSksIHNpemVvZihQYXR0ZXJuOjpQYXJhbWV0ZXJzKSwgMSk7CisgICAgICAgIH0KICAgICB9
CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNo
YWRvd0NoYW5nZSkpIHsKQEAgLTM2Niw2ICszODIsOSBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0
U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
Q2hhbmdlIHN0YXRlQ2hhbmdlOwogICAgIHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hh
bmdlRmxhZ3M7CiAKKyAgICBQYXR0ZXJuRGF0YSBzdHJva2VQYXR0ZXJuOworICAgIFBhdHRlcm5E
YXRhIGZpbGxQYXR0ZXJuOworCiAgICAgaWYgKHN0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29u
dGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAg
ICAgICBPcHRpb25hbDxib29sPiBoYXNTdHJva2VHcmFkaWVudDsKICAgICAgICAgZGVjb2RlciA+
PiBoYXNTdHJva2VHcmFkaWVudDsKQEAgLTM4OCwxMSArNDA3LDE2IEBAIE9wdGlvbmFsPFNldFN0
YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChoYXNTdHJva2VQYXR0ZXJuLnZhbHVlKCkp
IHsKLSAgICAgICAgICAgIGF1dG8gc3Ryb2tlUGF0dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNv
ZGVyKTsKLSAgICAgICAgICAgIGlmICghc3Ryb2tlUGF0dGVybikKKyAgICAgICAgICAgIE9wdGlv
bmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlm
aWVyOworICAgICAgICAgICAgZGVjb2RlciA+PiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7
CisgICAgICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcikKICAgICAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgICAgICBzdGF0ZUNoYW5nZS5t
X3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJuKTsKKyAgICAgICAg
ICAgIFBhdHRlcm46OlBhcmFtZXRlcnMgcGFyYW1ldGVyczsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEocmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oJnBh
cmFtZXRlcnMpLCBzaXplb2YoUGF0dGVybjo6UGFyYW1ldGVycyksIDEpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN0cm9r
ZVBhdHRlcm4gPSB7ICpyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIsIHBhcmFtZXRlcnMgfTsK
ICAgICAgICAgfQogICAgIH0KIApAQCAtNDE4LDExICs0NDIsMTYgQEAgT3B0aW9uYWw8U2V0U3Rh
dGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgaWYgKGhhc0ZpbGxQYXR0ZXJuLnZhbHVlKCkpIHsK
LSAgICAgICAgICAgIGF1dG8gZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7
Ci0gICAgICAgICAgICBpZiAoIWZpbGxQYXR0ZXJuKQorICAgICAgICAgICAgT3B0aW9uYWw8UmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgICAgICAgICBkZWNvZGVyID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICAg
ICAgICAgIGlmICghcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKQogICAgICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUu
ZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKCpmaWxsUGF0dGVybik7CisgICAgICAgICAgICBQYXR0ZXJu
OjpQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
Rml4ZWRMZW5ndGhEYXRhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KCZwYXJhbWV0ZXJzKSwg
c2l6ZW9mKFBhdHRlcm46OlBhcmFtZXRlcnMpLCAxKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworICAgICAgICAgICAgCisgICAgICAgICAgICBmaWxsUGF0dGVybiA9IHsg
KnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgcGFyYW1ldGVycyB9OwogICAgICAgICB9CiAg
ICAgfQogCkBAIC01ODMsNyArNjEyLDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFk
b3dzSWdub3JlVHJhbnNmb3JtcyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9CiAK
LSAgICByZXR1cm4geyBzdGF0ZUNoYW5nZSB9OworICAgIHJldHVybiB7eyBzdGF0ZUNoYW5nZSwg
c3Ryb2tlUGF0dGVybiwgZmlsbFBhdHRlcm4gfX07CiB9CiAKIGNsYXNzIFNldExpbmVDYXAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNj
OTRkY2IxNjY2ZjA5OTI5NDE2NjUxNzI0YjNhM2EuLjk5ZjcxNmJhZTU2YmU5YTllNDJmMGJiYmIz
NGUyNjM3YmNmYTBlMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKQEAgLTg1LDkgKzg1LDIwIEBAIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUlubGluZVN0YXRl
Q2hhbmdlcyhjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKK3ZvaWQgUmVjb3JkZXI6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2Um
IGltYWdlKQoreworICAgIGlmIChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNo
ZU5hdGl2ZUltYWdlKGltYWdlKTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOworfQorCiB2b2lkIFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRl
OjpTdGF0ZUNoYW5nZUZsYWdzIGNoYW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5
SW5saW5lU3RhdGVDaGFuZ2VzKGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkgeworICAgICAgICBpZiAo
YXV0byBwYXR0ZXJuID0gY2hhbmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgICAgICAg
ICBjYWNoZU5hdGl2ZUltYWdlKHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICAgICAgaWYgKGF1
dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICAgICAgICAgIGNh
Y2hlTmF0aXZlSW1hZ2UocGF0dGVybi0+dGlsZUltYWdlKCkpOwogICAgICAgICBhcHBlbmQ8U2V0
U3RhdGU+KGNoYW5nZXMubV9zdGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTgzLDE3ICsxOTQsMTMgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVy
KFdlYkNvcmU6OkltYWdlQnVmZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWMKIAogdm9p
ZCBSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxv
YXRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgc3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0g
ICAgaWYgKG1fZGVsZWdhdGUpCi0gICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOwotICAgIG1fZGlzcGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAg
Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1h
Z2UucmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNy
Y1JlY3QsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewot
ICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdl
KGltYWdlKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAg
IGNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIGFwcGVuZDxEcmF3UGF0dGVybj4oaW1hZ2Uu
cmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVS
ZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDY0Zjc4YWNiNmM0OTYzOTg1
MjY2ZDJjNDM1NzFlYjY5NDQ1Y2UwM2MuLjgwNDZhMjFhMmUxODExNDkwYzY3MDYwMjk1YzY3ZTBk
ZGFhYWMxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTcx
LDYgKzE3MSw4IEBAIHByaXZhdGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBl
bmRJdGVtT2ZUeXBlKEl0ZW1UeXBlKTsKIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRp
dmVJbWFnZSYpOworCiAgICAgdm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VG
bGFncyk7CiAKICAgICBGbG9hdFJlY3QgZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0
UmVjdCYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmlu
ZGV4IDMyNWRiOTczOWU5ZmNmMjEzMWU5MTRlNmFlNWM4NWE4MmViYWUxYzkuLjRkOTA2YTI0NTY0
NDYyZjZlMDE4MTY5ZDFiMTY4OTkyZDhkZjJjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZXBsYXllci5jcHAKQEAgLTcwLDYgKzcwLDI5IEBAIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFw
aGljCiAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKIH0KIAoraW5saW5lIHN0YXRpYyBP
cHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJ
bWFnZXMsIEl0ZW1IYW5kbGUgaXRlbSkKK3sKKyAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVt
LmdldDxTZXRTdGF0ZT4oKTsKKworICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2Ug
PSBudWxscHRyOworICAgIE5hdGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsK
KworICAgIGlmIChhdXRvIHJlc291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJva2VQ
YXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlID0g
bmF0aXZlSW1hZ2VzLmdldChyZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXN0cm9r
ZVBhdHRlcm5JbWFnZSkKKyAgICAgICAgICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7Cisg
ICAgfQorCisgICAgaWYgKGF1dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZp
bGxQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkpIHsKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9
IG5hdGl2ZUltYWdlcy5nZXQocmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFmaWxs
UGF0dGVybkltYWdlKQorICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKKyAg
ICB9CisKKyAgICBzZXRTdGF0ZUl0ZW0uYXBwbHkoY29udGV4dCwgc3Ryb2tlUGF0dGVybkltYWdl
LCBmaWxsUGF0dGVybkltYWdlKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiB0ZW1w
bGF0ZTxjbGFzcyBUPgogaW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlk
ZW50aWZpZXI+IGFwcGx5Rm9udEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBG
b250UmVuZGVyaW5nUmVzb3VyY2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CkBAIC0x
MTcsNiArMTQwLDEyIEBAIHN0ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0
aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPj4gUmVwCiAgICAgICAgIHJldHVybiB7
IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiAgICAgfQogCisgICAgaWYgKGl0ZW0uaXM8
U2V0U3RhdGU+KCkpIHsKKyAgICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRl
bnRpZmllciA9IGFwcGx5U2V0U3RhdGVJdGVtKG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0
ZW0pKQorICAgICAgICAgICAgcmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hl
ZFJlc291cmNlLCBXVEZNb3ZlKG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07Cisg
ICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfQorCiAg
ICAgaXRlbS5hcHBseShtX2NvbnRleHQpOwogICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXggNTYzM2EwYWZhNjRkZDY2ZDZhZWQ5ZTk3ZGUyZTY4
ZGJlMTZiMzgxMS4uMTY1ZTY3YmMzMGY0NWM2NDZhYjJiMDQ4ZTYyMDgzYzc3ZjQ0MTJjOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcApAQCAtNzIsMTUgKzcyLDE1IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUoKQogICAgIHRpbGVJbWFnZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9u
LngoKSwgLWluTWF4RWZmZWN0TG9jYXRpb24ueSgpKTsKICAgICB0aWxlSW1hZ2VDb250ZXh0LmRy
YXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9u
KCkpOwogCi0gICAgYXV0byB0aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1h
Z2UoV1RGTW92ZSh0aWxlSW1hZ2UpKTsKKyAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1
ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwogICAgIGlmICgh
dGlsZUltYWdlQ29weSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0
dGVybjo6Y3JlYXRlKHRpbGVJbWFnZUNvcHkucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7
Ci0KICAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJh
bnNmb3JtLnRyYW5zbGF0ZShpbk1heEVmZmVjdExvY2F0aW9uIC0gbWF4RWZmZWN0TG9jYXRpb24p
OwotICAgIHBhdHRlcm4uZ2V0KCkuc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5UcmFu
c2Zvcm0pOworCisgICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZUNv
cHkucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3JtfSk7CisK
ICAgICBHcmFwaGljc0NvbnRleHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4
dCgpOwogICAgIGZpbHRlckNvbnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7
CiAgICAgZmlsdGVyQ29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNv
bHV0ZVBhaW50UmVjdCgpLnNpemUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCAwZDA0ODExYjNlOTgxYzUxNjUxMzU0YWQ4MGYw
YmNmNzYyYTBiZWJkLi5jNzBjMTRhZGUxZmY1YmRlZGU0NzRjZWZiZTM4MTMwODAxNDVkMTUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApA
QCAtMzI2NiwxNCArMzI2NiwxMyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JE
ZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBp
bWFnZUNvbnRleHQuZHJhd1RleHQoZm9udCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zmc2V0IH0s
IDApOwogICAgIH0KIAotICAgIGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRv
SW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwotICAgIGF1dG8gZmlsbFBhdHRlcm4gPSBQYXR0
ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOworICAg
IGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92
ZShpbWFnZUJ1ZmZlcikpOworCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5PZmZzZXRUcmFu
c2Zvcm07CiAgICAgcGF0dGVybk9mZnNldFRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudE9mZnNl
dCArIGRlc2NyaXB0aW9uLnBoYXNlKTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnNjYWxl
KDEgLyBkZXN0Q29udGV4dC5zY2FsZUZhY3RvcigpKTsKLSAgICBmaWxsUGF0dGVybi0+c2V0UGF0
dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0pOwogCi0gICAgcmV0dXJu
IGZpbGxQYXR0ZXJuOworICAgIHJldHVybiBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVh
c2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybX0pOwogfTsK
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKaW5kZXggZTM0MjQzMWQxNDkxZjNmMWQwYmJkNGJj
Zjk1YTA1MjZlZDAzMGZkMS4uOTQ3MTliM2VmODc3MmVmY2EwN2MwZTJiMzVkZDFjMDQwNjA5NzM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZVBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcApAQCAtMTEyLDE2ICsxMTIsMTIgQEAgUGF0dGVybkRhdGEq
IFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBPcHQKIAogICAgIGNvbnN0IEludFNpemUgdGlsZUltYWdlU2l6ZSA9IHRpbGVJbWFn
ZS0+bG9naWNhbFNpemUoKTsKIAotICAgIFJlZlB0cjxJbWFnZT4gY29waWVkSW1hZ2UgPSBJbWFn
ZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOworICAgIGF1dG8gY29w
aWVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJ
bWFnZSkpOwogICAgIGlmICghY29waWVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgLy8gQnVpbGQgcGF0dGVybi4KLSAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1
ZTxQYXR0ZXJuRGF0YT4oKTsKLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNy
ZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsKLQogICAgIC8v
IENvbXB1dGUgcGF0dGVybiBzcGFjZSB0cmFuc2Zvcm1hdGlvbi4KLQorICAgIGF1dG8gcGF0dGVy
bkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT50cmFu
c2Zvcm0udHJhbnNsYXRlKHRpbGVCb3VuZGFyaWVzLmxvY2F0aW9uKCkpOwogICAgIHBhdHRlcm5E
YXRhLT50cmFuc2Zvcm0uc2NhbGUodGlsZUJvdW5kYXJpZXMuc2l6ZSgpIC8gdGlsZUltYWdlU2l6
ZSk7CiAKQEAgLTEzNSw3ICsxMzEsOSBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpidWlsZFBhdHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAg
ICBpZiAoc2hvdWxkVHJhbnNmb3JtT25UZXh0UGFpbnRpbmcocmVuZGVyZXIsIGFkZGl0aW9uYWxU
ZXh0VHJhbnNmb3JtYXRpb24pKQogICAgICAgICAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSAq
PSBhZGRpdGlvbmFsVGV4dFRyYW5zZm9ybWF0aW9uOwogICAgIH0KLSAgICBwYXR0ZXJuRGF0YS0+
cGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0p
OworCisgICAgLy8gQnVpbGQgcGF0dGVybi4KKyAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBh
dHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUs
IHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0gfSk7CiAKICAgICAvLyBWYXJpb3VzIGNhbGxzIGFib3Zl
IG1heSB0cmlnZ2VyIGludmFsaWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMgKEltYWdlQnVm
ZmVyIGFsbG9jYXRpb24KICAgICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdlIGNhY2hlIGZv
ciBleGFtcGxlKS4gVG8gYXZvaWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxldGVkIGJ5CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAx
OWFmMjk5NjY4MjdkNGI2MDFkOGNkNTI3YmYxNGM5YTc3ZDcwODliLi5iYjdjODRiZjgxNDc1Y2Nj
OTE5ZjA3ODMwMDRkOTI5NzE4MDBmZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTEwNzUsMTggKzEwNzUsNiBAQCBzdGF0aWMgV0FS
Tl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlT3B0aW9uYWxJbWFnZShEZWNvZGVyJiBkZWNvZGVy
LCBSZWZQdHI8SW1hZwogICAgIHJldHVybiBkZWNvZGVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9
CiAKLXZvaWQgQXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUpCi17Ci0gICAgZW5jb2RlT3B0aW9u
YWxJbWFnZShlbmNvZGVyLCBpbWFnZUhhbmRsZS5pbWFnZS5nZXQoKSk7Ci19Ci0KLWJvb2wgQXJn
dW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhh
bmRsZSYgaW1hZ2VIYW5kbGUpCi17Ci0gICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29k
ZXIsIGltYWdlSGFuZGxlLmltYWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biB0cnVlOwotfQotCiB2b2lkIEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKIHsKICAgICBlbmNv
ZGVyIDw8IGZvbnQtPm9yaWdpbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaAppbmRleCAwMGMxNDNmYmJiODlkMjY2NGNhZTUwYTVlMWZiZjNmOGU5MTU5
NTA3Li42ZjcyMTgwZjk4NTMyNzNlM2YxNmY2MTBiNGQ1MzFmMWFjZjE4YWU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTA5LDcgKzEwOSw2
IEBAIGNsYXNzIEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogY2xhc3MgRm9udDsK
IGNsYXNzIEZvbnRQbGF0Zm9ybURhdGE7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwotY2xhc3MgSW1h
Z2VIYW5kbGU7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXpl
OwpAQCAtNDE4LDExICs0MTcsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJl
ZjxXZWJDb3JlOjpGb250Pj4gewogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpGb250UGxh
dGZvcm1EYXRhPiBkZWNvZGVQbGF0Zm9ybURhdGEoRGVjb2RlciYpOwogfTsKIAotdGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKLSAg
ICBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3Jl
OjpJbWFnZUhhbmRsZSYpOwotfTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2Rl
ciYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBXQVJOX1VO
VVNFRF9SRVRVUk4gYm9vbCBkZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420097</attachid>
            <date>2021-02-11 21:45:45 -0800</date>
            <delta_ts>2021-02-11 23:07:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210211214544.patch</filename>
            <type>text/plain</type>
            <size>60356</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0MzZiYTM1ZDY0M2I1
MDc3NTcxZjU3ZGVjZTE1YTkxODQ4Zjk5Mi4uOGM4M2JjMTdiNzBhZjNiOTAwMDc4MWFlN2YwODI3
OTA1MjUzZTFmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAyMS0wMi0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZCBhIE5hdGl2ZUltYWdlIGluc3RlYWQgb2YgYW4gSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgd2lsbCBtYWtlIGNhY2hpbmcgdGhl
IFBhdHRlcm4gZGF0YSBpbiB0aGUgR1BVUCBzdHJhaWdodGZvcndhcmQgc2luY2UKKyAgICAgICAg
YWxsIHdlIG5lZWQgaXMgdG8gY2FjaGUgdGhlIE5hdGl2ZUltYWdlIGFuZCBlbmNvZGUgdGhlIHBh
dHRlcm4gZGF0YS4KKworICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhbnZhc1BhdHRlcm46OkNhbnZhc1BhdHRlcm4pOgorICAgICAgICAqIGh0bWwvY2FudmFz
L0NhbnZhc1BhdHRlcm4uaDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5
Rm9yQ2FudmFzUGF0dGVybik6CisgICAgICAgIEV4dHJhY3QgYSBOYXRpdmVJbWFnZSBvZiBhbiBJ
bWFnZS4gVGhlIHBsYXRmb3JtIFBhdHRlcm5zIGRlYWwgd2l0aAorICAgICAgICBOYXRpdmVJbWFn
ZXMgb25seS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmg6CisgICAgICAg
IFJlbW92ZSBJbWFnZUhhbmRsZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1BhdHRl
cm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhdHRlcm46OlBhdHRlcm4pOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6c2V0
UGF0dGVyblNwYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0
ZXJuLmg6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpQYXJhbWV0ZXJzOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6UGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmVuY29kZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpQYXR0ZXJuOjpkZWNvZGUpOiBEZWxldGVkLgorICAgICAgICBNYWtlIHRoZSBu
ZXcgc3RydWN0ICdQYXJhbWV0ZXJzJyBob2xkcyBhbGwgdGhlIG1lbWJlcnMgb3RoZXIgdGhhbiB0
aGUKKyAgICAgICAgTmF0aXZlSW1hZ2UuIFRoaXMgc3RydWN0ICsgUmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmZXIgb2YgdGhlIE5hdGl2ZUltYWdlCisgICAgICAgIHdpbGwgYmUgcmVjb3JkZWQgZm9y
IHRoZSBzdHJva2VQYXR0ZXJuIGFuZCB0aGUgZmlsbFBhdHRlcm4uCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2Fpcm86OkZpbGxTb3VyY2U6OkZpbGxTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJu
OjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NnL1BhdHRlcm5DRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXR0ZXJuOjpjcmVhdGVQ
bGF0Zm9ybVBhdHRlcm4gY29uc3QpOgorICAgICAgICBUaGUgcGxhdGZvcm0gUGF0dGVybiBkZWFs
cyBvbmx5IHdpdGggTmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjpEaXNwbGF5TGlzdDo6c2hvdWxkRHVtcEZvckZsYWdzKToKKyAgICAgICAgU2V0U3RhdGU6
OnN0YXRlKCkgaXMgcmVuYW1lZCB0byBTZXRTdGF0ZUl0ZW06OnN0YXRlQ2hhbmdlKCkgc2luY2Ug
aXQgCisgICAgICAgIHJldHVybnMgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtQnVmZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpJdGVtSGFuZGxlOjphcHBseSk6
CisgICAgICAgIFNldFN0YXRlOjphcHBseSgpIGhhcyB0byBiZSBhIHNwZWNpYWwgY2FzZS4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1z
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6U2V0U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6b3BlcmF0b3I8PCk6CisgICAgICAgIChXZWJDb3Jl
OjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmFwcGx5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
QWRkIGEgbmV3IGNvbnN0cnVjdG9yIGZvciBTZXRTdGF0ZSB0byBiZSB1c2VkIGJ5IHRoZSBkZWNv
ZGVyLiBBbGwgdGhlCisgICAgICAgIG1lbWJlcnMgb2YgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2Ugd2lsbCBiZSBjb3BpZWQgYnV0IHN0cm9rZVBhdHRlcm4KKyAgICAgICAgYW5kIGZpbGxQYXR0
ZXJuIHdpbGwgYmUgY3JlYXRlZCBvbmx5IHdoZW4gdGhlaXIgTmF0aXZlSW1hZ2VzIGFyZSByZXNv
bHZlZAorICAgICAgICBpbiB0aGUgU2V0U3RhdGU6OmFwcGx5KCkuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdGF0ZUNoYW5nZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5QYXJhbWV0
ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6Zmls
bFBhdHRlcm5QYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0
OjpTZXRTdGF0ZTo6c3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllciBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmZpbGxQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6ZGVj
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGUgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICBTcGVjaWFsaXplIHRoZSBlbmNvZGUgYW5kIHRoZSBkZWNv
ZGluZyBvZiBzdHJva2VQYXR0ZXJuIGFuZCBmaWxsUGF0dGVybiAKKyAgICAgICAgYnkgdXNpbmcg
dGhlIFBhdHRlcm46OlBhcmFtZXRlcnMgYW5kIHRoZSBSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZl
ciBvZgorICAgICAgICB0aGUgTmF0aXZlSW1hZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OmNhY2hlTmF0aXZlSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3TmF0aXZlSW1hZ2Up
OgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpkcmF3UGF0dGVybik6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaDoKKyAgICAgICAgQ2FjaGUgdGhlIE5hdGl2ZUltYWdlcyBvZiBzdHJva2VQYXR0ZXJu
IGFuZCBmaWxsUGF0dGVybi4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlM
aXN0OjphcHBseVNldFN0YXRlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
UmVwbGF5ZXI6OmFwcGx5SXRlbSk6CisgICAgICAgIFJlc29sdmUgdGhlIE5hdGl2ZUltYWdlcyBv
ZiBzdHJva2VQYXR0ZXJuIGFuZCBmaWxsUGF0dGVybiBmcm9tIHRoZSBjYWNoZWQKKyAgICAgICAg
TmF0aXZlSW1hZ2VzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cGF0dGVybkZvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybik6CisgICAgICAgIFBhdHRlcm5zIHNob3Vs
ZCBiZSBjcmVhdGVkIHdpdGggTmF0aXZlSW1hZ2VzLgorCiAyMDIxLTAyLTExICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSW50ZWdyYXRpb25dIEFkZCBz
Y3JvbGxhYmxlIG92ZXJmbG93IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZWMyMjkyMDdkM2U4MjA3MGRj
MWQ4YTBjMzhjZTFmODNiYjlhZWE1Yi4uZGE0MjJiNTVkM2I3ZjIyZDM2MmUwY2I5OGNkNGE4YmIz
ODY5MjBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wMi0xMSAgU2FpZCBBYm91
LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4gaG9sZCBh
IE5hdGl2ZUltYWdlIGluc3RlYWQgb2YgYW4gSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5j
cHA6CisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjplbmNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAoSVBDOjpBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2Rl
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6Cisg
ICAgICAgIERlbGV0ZSB0aGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIG9mIEltYWdlIHNpbmNlIGl0
IGlzIG5vdCB1c2VkIGFueW1vcmUKKwogMjAyMS0wMi0xMSAgSmVyIE5vYmxlICA8amVyLm5vYmxl
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBZGQgRXhwZXJpbWVudGFsIE9wdXMgQ29kZWMg
c3VwcG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0
dGVybi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApp
bmRleCA3MmVhMWE4N2M2ZDBlMjYwMTg3NTdlZTJmN2JjNjA0NjNjOWFhODA1Li4wYWExZjEyMWJm
Njg1NzY3NDg0YTVkNmIyZTI3OTM1YmQ4NjE2NjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcApAQCAtMjgsMTkgKzI4LDE5IEBACiAKICNpbmNsdWRl
ICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJET01NYXRyaXhSZWFkT25seS5oIgotI2lu
Y2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKICNpbmNsdWRlICJQYXR0
ZXJuLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8SW1h
Z2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFu
KQorUmVmPENhbnZhc1BhdHRlcm4+IENhbnZhc1BhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1h
Z2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFu
KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENhbnZhc1BhdHRlcm4oV1RGTW92ZShpbWFn
ZSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSk7CiB9CiAKLUNhbnZhc1BhdHRlcm46
OkNhbnZhc1BhdHRlcm4oUmVmPEltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbikKLSAgICA6IG1fcGF0dGVybihQYXR0ZXJuOjpjcmVhdGUo
V1RGTW92ZShpbWFnZSksIHJlcGVhdFgsIHJlcGVhdFkpKQorQ2FudmFzUGF0dGVybjo6Q2FudmFz
UGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBl
YXRZLCBib29sIG9yaWdpbkNsZWFuKQorICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShX
VEZNb3ZlKGltYWdlKSwgeyByZXBlYXRYLCByZXBlYXRZIH0pKQogICAgICwgbV9vcmlnaW5DbGVh
bihvcmlnaW5DbGVhbikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Bh
dHRlcm4uaAppbmRleCBjOGE5ZTNjZTE2MWJiYjhmOWExZDc1YmUyOWZkY2ViODIxY2M5OTMxLi5l
NDZkMjFiYzUxMzVkOWE3NGY0NTc1YzlkZDY1ZTljZWNkY2I4ZDJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVybi5oCkBAIC0zMiwxMyArMzIsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbWFnZTsKK2NsYXNzIE5hdGl2ZUltYWdlOwogY2xh
c3MgUGF0dGVybjsKIHN0cnVjdCBET01NYXRyaXgyREluaXQ7CiAKIGNsYXNzIENhbnZhc1BhdHRl
cm4gOiBwdWJsaWMgUmVmQ291bnRlZDxDYW52YXNQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDYW52YXNQYXR0ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgc3RhdGljIFJlZjxDYW52YXNQ
YXR0ZXJuPiBjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVw
ZWF0WSwgYm9vbCBvcmlnaW5DbGVhbik7CiAgICAgfkNhbnZhc1BhdHRlcm4oKTsKIAogICAgIHN0
YXRpYyBib29sIHBhcnNlUmVwZXRpdGlvblR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCYgcmVwZWF0
WCwgYm9vbCYgcmVwZWF0WSk7CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRp
b25Pcjx2b2lkPiBzZXRUcmFuc2Zvcm0oRE9NTWF0cml4MkRJbml0JiYpOwogCiBwcml2YXRlOgot
ICAgIENhbnZhc1BhdHRlcm4oUmVmPEltYWdlPiYmLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSwgYm9vbCBvcmlnaW5DbGVhbik7CisgICAgQ2FudmFzUGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+
JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKTsKIAogICAg
IFJlZjxQYXR0ZXJuPiBtX3BhdHRlcm47CiAgICAgYm9vbCBtX29yaWdpbkNsZWFuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcAppbmRleCA4ODMwYzVkZGFlZGE0N2YyMjgyZTA0ZDgxNzI0MzQxZjA0ZTg5
YzNkLi45ZmYyMmE3YzNkNWRlY2NlNmE2NGJhYWE2YWNiZWMxMTZiMTAyYzBiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlLmNwcApAQCAtMTkzNyw3ICsxOTM3LDE1IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxD
YW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVy
bihICiAgICAgaWYgKGNhY2hlZEltYWdlLT5pbWFnZSgpLT5pc1NWR0ltYWdlKCkpCiAgICAgICAg
IG9yaWdpbkNsZWFuID0gZmFsc2U7CiAKLSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+
IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKCpjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihp
bWFnZUVsZW1lbnQucmVuZGVyZXIoKSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9
OworICAgIGF1dG8qIGltYWdlID0gY2FjaGVkSW1hZ2UtPmltYWdlRm9yUmVuZGVyZXIoaW1hZ2VF
bGVtZW50LnJlbmRlcmVyKCkpOworICAgIGlmICghaW1hZ2UpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGlt
YWdlLT5uYXRpdmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworCisgICAgcmV0dXJuIFJlZlB0cjxD
YW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNl
Tm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVhbikgfTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
OjpjcmVhdGVQYXR0ZXJuKENhbnZhc0Jhc2UmIGNhbnZhcywgYm9vbCByZXBlYXRYLCBib29sIHJl
cGVhdFkpCkBAIC0xOTQ4LDggKzE5NTYsMTIgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1Bh
dHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEMKIAog
ICAgIGlmICghY29waWVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlk
U3RhdGVFcnJvciB9OworICAgIAorICAgIGF1dG8gbmF0aXZlSW1hZ2UgPSBjb3BpZWRJbWFnZS0+
bmF0aXZlSW1hZ2UoKTsKKyAgICBpZiAoIW5hdGl2ZUltYWdlKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAotICAgIHJldHVybiBSZWZQdHI8Q2FudmFz
UGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoKmNvcGllZEltYWdlLCByZXBlYXRYLCBy
ZXBlYXRZLCBjYW52YXMub3JpZ2luQ2xlYW4oKSkgfTsKKyAgICByZXR1cm4gUmVmUHRyPENhbnZh
c1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25O
dWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OwogfQogICAg
IAogI2lmIEVOQUJMRShWSURFTykKQEAgLTE5NjQsNyArMTk3Niw3IEBAIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRl
UGF0dGVybihICiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKGF1dG8gbmF0aXZlSW1hZ2UgPSB2aWRl
b0VsZW1lbnQubmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpKQotICAgICAgICByZXR1cm4gUmVm
UHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKEJpdG1hcEltYWdlOjpj
cmVhdGUoV1RGTW92ZShuYXRpdmVJbWFnZSkpLCByZXBlYXRYLCByZXBlYXRZLCBvcmlnaW5DbGVh
bikgfTsKKyAgICAgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRl
cm46OmNyZWF0ZShuYXRpdmVJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCByZXBlYXRYLCByZXBlYXRZ
LCBvcmlnaW5DbGVhbikgfTsKICNlbmRpZgogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gIWRy
YXdpbmdDb250ZXh0KCkgfHwgZHJhd2luZ0NvbnRleHQoKS0+aXNBY2NlbGVyYXRlZENvbnRleHQo
KSA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVy
YXRlZDsKQEAgLTE5NzQsNyArMTk4Niw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxDYW52YXNQYXR0
ZXJuPj4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6Y3JlYXRlUGF0dGVybihICiAKICAg
ICB2aWRlb0VsZW1lbnQucGFpbnRDdXJyZW50RnJhbWVJbkNvbnRleHQoaW1hZ2VCdWZmZXItPmNv
bnRleHQoKSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgc2l6ZSh2aWRlb0VsZW1lbnQpKSk7CiAg
ICAgCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNy
ZWF0ZShJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSwgUHJl
c2VydmVSZXNvbHV0aW9uOjpZZXMpLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFks
IG9yaWdpbkNsZWFuKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBDYW52
YXNQYXR0ZXJuOjpjcmVhdGUoSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92
ZShpbWFnZUJ1ZmZlcikpLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdp
bkNsZWFuKSB9OwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5jcHAKaW5kZXggMGM4NWY4YTgzNzY3OTY2YmEyNmI1YzMzM2VkNjBjMDFhNTBh
YTExNi4uZTVmMjIxMGFlOTg3MzNlOTg0YWI1ODRmNmY5YTNjODQ3YjVhODA0OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTEyMDIsOSArMTIw
MiwxMCBAQCBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6
YnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbgogCiBSZWY8SlNPTjo6QXJyYXlPZjxKU09O
OjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29u
c3QgQ2FudmFzUGF0dGVybiYgY2FudmFzUGF0dGVybikKIHsKLSAgICBJbWFnZSYgdGlsZUltYWdl
ID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7CisgICAgYXV0byYgdGlsZUlt
YWdlID0gY2FudmFzUGF0dGVybi5wYXR0ZXJuKCkudGlsZUltYWdlKCk7CisgICAgRmxvYXRSZWN0
IHJlY3QgPSB7IHsgfSwgdGlsZUltYWdlLnNpemUoKSB9OwogICAgIGF1dG8gaW1hZ2VCdWZmZXIg
PSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHRpbGVJbWFnZS5zaXplKCksIFJlbmRlcmluZ01vZGU6OlVu
YWNjZWxlcmF0ZWQpOwotICAgIGltYWdlQnVmZmVyLT5jb250ZXh0KCkuZHJhd0ltYWdlKHRpbGVJ
bWFnZSwgRmxvYXRQb2ludCgwLCAwKSk7CisgICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3
TmF0aXZlSW1hZ2UodGlsZUltYWdlLCB0aWxlSW1hZ2Uuc2l6ZSgpLCByZWN0LCByZWN0KTsKIAog
ICAgIFN0cmluZyByZXBlYXQ7CiAgICAgYm9vbCByZXBlYXRYID0gY2FudmFzUGF0dGVybi5wYXR0
ZXJuKCkucmVwZWF0WCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgK
aW5kZXggNDM2YjM3ZDZjOGVjNmYwMGY0ZmViNGRkMzZmNGEyOTIzYzdmOTZlYS4uZGEwMTBmM2Zk
Y2QwNjgwNTYyOGI4NjBjYWUzMmJkOWJlOWE0NTQ4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCkBAIC0yMTAsMTEgKzIxMCw2IEBAIHByaXZhdGU6CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFRpbWVyPiBtX2FuaW1hdGlvblN0YXJ0VGltZXI7CiB9OwogCi1jbGFzcyBJ
bWFnZUhhbmRsZSB7Ci1wdWJsaWM6Ci0gICAgUmVmUHRyPEltYWdlPiBpbWFnZTsKLX07Ci0KIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBjb25zdCBJbWFnZSYp
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdHRlcm4uY3BwCmluZGV4IDc5NmEwN2MxODZiNjJmZjRlNmI2ZWEyNjEwN2ZmOWZj
NGM0MzhlNzEuLjYzNTMyMzc2OWY4MDMzZGUzMjhlOGQ0NGU1Nzk3NWExZDNjZDYwNjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRl
bCA8ZXJpY0B3ZWJraXQub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMzEsMjMgKzMxLDIyIEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPFBhdHRlcm4+IFBhdHRlcm46OmNyZWF0ZShS
ZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSkKK1JlZjxQ
YXR0ZXJuPiBQYXR0ZXJuOjpjcmVhdGUoUmVmPE5hdGl2ZUltYWdlPiYmIHRpbGVJbWFnZSwgY29u
c3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
YXR0ZXJuKFdURk1vdmUodGlsZUltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpOworICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFBhdHRlcm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCBwYXJhbWV0ZXJzKSk7
CiB9CiAKLVBhdHRlcm46OlBhdHRlcm4oUmVmPEltYWdlPiYmIGltYWdlLCBib29sIHJlcGVhdFgs
IGJvb2wgcmVwZWF0WSkKK1BhdHRlcm46OlBhdHRlcm4oUmVmPE5hdGl2ZUltYWdlPiYmIGltYWdl
LCBjb25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV90aWxlSW1hZ2UoV1RGTW92
ZShpbWFnZSkpCi0gICAgLCBtX3JlcGVhdFgocmVwZWF0WCkKLSAgICAsIG1fcmVwZWF0WShyZXBl
YXRZKQorICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiB7CiB9CiAKIFBhdHRlcm46On5Q
YXR0ZXJuKCkgPSBkZWZhdWx0OwogCi12b2lkIFBhdHRlcm46OnNldFBhdHRlcm5TcGFjZVRyYW5z
Zm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uKQor
dm9pZCBQYXR0ZXJuOjpzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCiB7Ci0gICAgbV9wYXR0ZXJuU3BhY2VUcmFuc2Zv
cm1hdGlvbiA9IHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOworICAgIG1fcGFyYW1ldGVycy5w
YXR0ZXJuU3BhY2VUcmFuc2Zvcm0gPSBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm07CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdHRlcm4uaAppbmRleCAyYTU2M2RhMjYx
N2QxYjA0MjQ4YjkwYWIwNjM5ZGIyY2FmOWE4OGMwLi44M2QyNTNiYjc0Y2JhZDBhZmU1NmY2YTRl
ZTU4NDgwMzA5YWZiMDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9QYXR0ZXJuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0
dGVybi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywg
MjAwOCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAy
MDA3LTIwMDggVG9yY2ggTW9iaWxlLCBJbmMuCiAgKgpAQCAtNTMsNjIgKzUzLDU4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIEFmZmluZVRyYW5zZm9ybTsKIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIGNsYXNzIEltYWdlOwotY2xhc3MgSW1hZ2VIYW5kbGU7CiAKIGNsYXNzIFBhdHRlcm4g
ZmluYWwgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXR0ZXJuPiB7CiBwdWJsaWM6Ci0gICAgV0VCQ09S
RV9FWFBPUlQgc3RhdGljIFJlZjxQYXR0ZXJuPiBjcmVhdGUoUmVmPEltYWdlPiYmIHRpbGVJbWFn
ZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIHN0cnVjdCBQYXJhbWV0ZXJzIHsK
KyAgICAgICAgUGFyYW1ldGVycyhib29sIHJlcGVhdFggPSB0cnVlLCBib29sIHJlcGVhdFkgPSB0
cnVlLCBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblNwYWNlVHJhbnNmb3JtID0geyB9KQorICAgICAg
ICAgICAgOiByZXBlYXRYKHJlcGVhdFgpCisgICAgICAgICAgICAsIHJlcGVhdFkocmVwZWF0WSkK
KyAgICAgICAgICAgICwgcGF0dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5TcGFjZVRyYW5zZm9y
bSkKKyAgICAgICAgeworICAgICAgICB9CisgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVj
b2Rlcj4gc3RhdGljIE9wdGlvbmFsPFBhcmFtZXRlcnM+IGRlY29kZShEZWNvZGVyJik7CisgICAg
ICAgIGJvb2wgcmVwZWF0WDsKKyAgICAgICAgYm9vbCByZXBlYXRZOworICAgICAgICBBZmZpbmVU
cmFuc2Zvcm0gcGF0dGVyblNwYWNlVHJhbnNmb3JtOworICAgIH07CisKKyAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUlt
YWdlLCBjb25zdCBQYXJhbWV0ZXJzJiA9IHsgfSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgflBhdHRl
cm4oKTsKIAotICAgIEltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3RpbGVJbWFn
ZS5nZXQoKTsgfQorICAgIE5hdGl2ZUltYWdlJiB0aWxlSW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X3RpbGVJbWFnZS5nZXQoKTsgfQorICAgIGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMoKSBj
b25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KIAotICAgIC8vIFBhdHRlcm4gc3BhY2UgaXMg
YW4gYWJzdHJhY3Qgc3BhY2UgdGhhdCBtYXBzIHRvIHRoZSBkZWZhdWx0IHVzZXIgc3BhY2UgYnkg
dGhlIHRyYW5zZm9ybWF0aW9uICd1c2VyU3BhY2VUcmFuc2Zvcm1hdGlvbicKKyAgICAvLyBQYXR0
ZXJuIHNwYWNlIGlzIGFuIGFic3RyYWN0IHNwYWNlIHRoYXQgbWFwcyB0byB0aGUgZGVmYXVsdCB1
c2VyIHNwYWNlIGJ5IHRoZSB0cmFuc2Zvcm1hdGlvbiAndXNlclNwYWNlVHJhbnNmb3JtJwogI2lm
ICFVU0UoRElSRUNUMkQpCi0gICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRmb3JtUGF0
dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uKSBjb25z
dDsKKyAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdDsKICNlbHNlCi0gICAgUGxh
dGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBHcmFwaGljc0NvbnRl
eHQmLCBmbG9hdCBhbHBoYSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zv
cm1hdGlvbikgY29uc3Q7CisgICAgUGxhdGZvcm1QYXR0ZXJuUHRyIGNyZWF0ZVBsYXRmb3JtUGF0
dGVybihjb25zdCBHcmFwaGljc0NvbnRleHQmLCBmbG9hdCBhbHBoYSwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0OwogI2VuZGlmCi0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7Ci0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5TcGFjZVRy
YW5zZm9ybWF0aW9uOyB9OwotICAgIGJvb2wgcmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
ZWF0WDsgfQotICAgIGJvb2wgcmVwZWF0WSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwZWF0WTsgfQot
Ci0gICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwotICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBPcHRpb25hbDxSZWY8UGF0dGVy
bj4+IGRlY29kZShEZWNvZGVyJik7CisgICAgdm9pZCBzZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0o
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CisgICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0
ZXJuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnMucGF0dGVyblNw
YWNlVHJhbnNmb3JtOyB9OworICAgIGJvb2wgcmVwZWF0WCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFy
YW1ldGVycy5yZXBlYXRYOyB9CisgICAgYm9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzLnJlcGVhdFk7IH0KIAogcHJpdmF0ZToKLSAgICBQYXR0ZXJuKFJlZjxJbWFnZT4m
JiwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFkpOworICAgIFBhdHRlcm4oUmVmPE5hdGl2ZUlt
YWdlPiYmLCBjb25zdCBQYXJhbWV0ZXJzJik7CiAKLSAgICBSZWY8SW1hZ2U+IG1fdGlsZUltYWdl
OwotICAgIEFmZmluZVRyYW5zZm9ybSBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwotICAg
IGJvb2wgbV9yZXBlYXRYOwotICAgIGJvb2wgbV9yZXBlYXRZOworICAgIFJlZjxOYXRpdmVJbWFn
ZT4gbV90aWxlSW1hZ2U7CisgICAgUGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiB9OwogCiB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgotdm9pZCBQYXR0ZXJuOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rl
cikgY29uc3QKK3ZvaWQgUGF0dGVybjo6UGFyYW1ldGVyczo6ZW5jb2RlKEVuY29kZXImIGVuY29k
ZXIpIGNvbnN0CiB7Ci0gICAgSW1hZ2VIYW5kbGUgaW1hZ2VIYW5kbGU7Ci0gICAgaW1hZ2VIYW5k
bGUuaW1hZ2UgPSBtX3RpbGVJbWFnZS5wdHIoKTsKLSAgICBlbmNvZGVyIDw8IGltYWdlSGFuZGxl
OwotICAgIGVuY29kZXIgPDwgbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBlbmNv
ZGVyIDw8IG1fcmVwZWF0WDsKLSAgICBlbmNvZGVyIDw8IG1fcmVwZWF0WTsKKyAgICBlbmNvZGVy
IDw8IHJlcGVhdFg7CisgICAgZW5jb2RlciA8PCByZXBlYXRZOworICAgIGVuY29kZXIgPDwgcGF0
dGVyblNwYWNlVHJhbnNmb3JtOwogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgotT3B0aW9u
YWw8UmVmPFBhdHRlcm4+PiBQYXR0ZXJuOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK09wdGlv
bmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IFBhdHRlcm46OlBhcmFtZXRlcnM6OmRlY29kZShEZWNv
ZGVyJiBkZWNvZGVyKQogewotICAgIE9wdGlvbmFsPEltYWdlSGFuZGxlPiBpbWFnZUhhbmRsZTsK
LSAgICBkZWNvZGVyID4+IGltYWdlSGFuZGxlOwotICAgIGlmICghaW1hZ2VIYW5kbGUpCi0gICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+
IHBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwotICAgIGRlY29kZXIgPj4gcGF0dGVyblNwYWNl
VHJhbnNmb3JtYXRpb247Ci0gICAgaWYgKCFwYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbikKLSAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKLQogICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVhdFg7
CiAgICAgZGVjb2RlciA+PiByZXBlYXRYOwogICAgIGlmICghcmVwZWF0WCkKQEAgLTExOSwxMCAr
MTE1LDEyIEBAIE9wdGlvbmFsPFJlZjxQYXR0ZXJuPj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgaWYgKCFyZXBlYXRZKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGltYWdlSGFuZGxlLT5pbWFn
ZS5yZWxlYXNlTm9uTnVsbCgpLCAqcmVwZWF0WCwgKnJlcGVhdFkpOwotICAgIHBhdHRlcm4tPnNl
dFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgqcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAg
IHJldHVybiBwYXR0ZXJuOworICAgIE9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gcGF0dGVyblNw
YWNlVHJhbnNmb3JtOworICAgIGRlY29kZXIgPj4gcGF0dGVyblNwYWNlVHJhbnNmb3JtOworICAg
IGlmICghcGF0dGVyblNwYWNlVHJhbnNmb3JtKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworCisgICAgcmV0dXJuIHt7ICpyZXBlYXRYLCAqcmVwZWF0WSwgKnBhdHRlcm5TcGFjZVRyYW5z
Zm9ybSB9fTsKIH0KIAogfSAvL25hbWVzcGFjZQotCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAppbmRleCA3
MzIwZGExY2JmZTkyODVmZDEyNmYwMDI0MTQzOGM0ZGJhMzllY2M5Li43ZmFlNzc3YzM5NjZiNGM0
ODZkZTIyMzJiMTkxMTMyMzFmZDkyZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKQEAgLTU2Nyw3
ICs1NjcsNyBAQCBGaWxsU291cmNlOjpGaWxsU291cmNlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiBzdGF0ZSkKICAgICAgICAgcGF0dGVybi5vYmplY3QgPSBhZG9wdFJlZihzdGF0ZS5maWxs
UGF0dGVybi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKEFmZmluZVRyYW5zZm9ybSgpKSk7CiAKICAg
ICAgICAgYXV0byYgcGF0dGVybkltYWdlID0gc3RhdGUuZmlsbFBhdHRlcm4tPnRpbGVJbWFnZSgp
OwotICAgICAgICBwYXR0ZXJuLnNpemUgPSBGbG9hdFNpemUocGF0dGVybkltYWdlLndpZHRoKCks
IHBhdHRlcm5JbWFnZS5oZWlnaHQoKSk7CisgICAgICAgIHBhdHRlcm4uc2l6ZSA9IHBhdHRlcm5J
bWFnZS5zaXplKCk7CiAgICAgICAgIHBhdHRlcm4udHJhbnNmb3JtID0gc3RhdGUuZmlsbFBhdHRl
cm4tPnBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFggPSBz
dGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WCgpOwogICAgICAgICBwYXR0ZXJuLnJlcGVhdFkgPSBz
dGF0ZS5maWxsUGF0dGVybi0+cmVwZWF0WSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRlcm5DYWlyby5jcHAKaW5kZXggNTYwZjc0N2E4
ZmI2NDgxYmU0YTMwMTg1ODUwMGFhOWZhMTYwZjc4Ni4uNjhkYWJhZjk4YWNhOWQxY2ZiNzFlMTY1
MjJiOWRlYjI1ODA3ZmYxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vUGF0dGVybkNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCkBAIC0zNSwxOCArMzUsMTggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjYWlyb19wYXR0ZXJuX3QqIFBhdHRlcm46OmNyZWF0ZVBsYXRm
b3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKSBjb25zdAogewotICAgIGF1dG8gbmF0
aXZlSW1hZ2UgPSB0aWxlSW1hZ2UoKS5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAg
IGlmICghbmF0aXZlSW1hZ2UpCisgICAgYXV0byBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCku
cGxhdGZvcm1JbWFnZSgpOworICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKLSAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJu
X2NyZWF0ZV9mb3Jfc3VyZmFjZShuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpLmdldCgpKTsK
KyAgICBjYWlyb19wYXR0ZXJuX3QqIHBhdHRlcm4gPSBjYWlyb19wYXR0ZXJuX2NyZWF0ZV9mb3Jf
c3VyZmFjZShwbGF0Zm9ybUltYWdlLmdldCgpKTsKIAogICAgIC8vIGNhaXJvIG1lcmdlcyBwYXR0
ZXIgc3BhY2UgYW5kIHVzZXIgc3BhY2UgaXRzZWxmCi0gICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4
ID0gdG9DYWlyb01hdHJpeChtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uKTsKKyAgICBjYWly
b19tYXRyaXhfdCBtYXRyaXggPSB0b0NhaXJvTWF0cml4KHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgp
KTsKICAgICBjYWlyb19tYXRyaXhfaW52ZXJ0KCZtYXRyaXgpOwogICAgIGNhaXJvX3BhdHRlcm5f
c2V0X21hdHJpeChwYXR0ZXJuLCAmbWF0cml4KTsKIAotICAgIGlmIChtX3JlcGVhdFggfHwgbV9y
ZXBlYXRZKQorICAgIGlmIChyZXBlYXRYKCkgfHwgcmVwZWF0WSgpKQogICAgICAgICBjYWlyb19w
YXR0ZXJuX3NldF9leHRlbmQocGF0dGVybiwgQ0FJUk9fRVhURU5EX1JFUEVBVCk7CiAgICAgcmV0
dXJuIHBhdHRlcm47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9QYXR0ZXJuQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvUGF0dGVybkNHLmNwcAppbmRleCA2OTU0YzU2NjU3MGFkN2FlNmMxZTc2MGYwNzg3ZDM3NzBh
Y2FhNjk0Li5mMWI5ZTNhN2MwNTU2OWE5ODkxYjY5OGQyODNhYjUzOTdjNzI1ZjU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMTcgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVs
IDxlcmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01NSwyNCArNTUsMjEgQEAg
c3RhdGljIHZvaWQgcGF0dGVyblJlbGVhc2VDYWxsYmFjayh2b2lkKiBpbmZvKQogICAgIH0pOwog
fQogCi1DR1BhdHRlcm5SZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0CitDR1BhdHRlcm5S
ZWYgUGF0dGVybjo6Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dXNlclNwYWNlVHJhbnNmb3JtKSBjb25zdAogewotICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IHRp
bGVJbWFnZSgpLnJlY3QoKTsKKyAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB7IHsgfSwgdGlsZUlt
YWdlKCkuc2l6ZSgpIH07CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9
IHVzZXJTcGFjZVRyYW5zZm9ybWF0aW9uICogbV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsK
KyAgICBBZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSA9IHVzZXJTcGFjZVRyYW5zZm9y
bSAqIHBhdHRlcm5TcGFjZVRyYW5zZm9ybSgpOwogICAgIHBhdHRlcm5UcmFuc2Zvcm0uc2NhbGVO
b25Vbmlmb3JtKDEsIC0xKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZSgwLCAtdGls
ZVJlY3QuaGVpZ2h0KCkpOwogCi0gICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlOwot
ICAgIGlmIChhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUltYWdlKCkubmF0aXZlSW1hZ2UoKSkKLSAg
ICAgICAgcGxhdGZvcm1JbWFnZSA9IG5hdGl2ZUltYWdlLT5wbGF0Zm9ybUltYWdlKCk7Ci0gICAg
CisgICAgUGxhdGZvcm1JbWFnZVB0ciBwbGF0Zm9ybUltYWdlID0gdGlsZUltYWdlKCkucGxhdGZv
cm1JbWFnZSgpOwogICAgIGlmICghcGxhdGZvcm1JbWFnZSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICAvLyBJZiB3ZSdyZSByZXBlYXRpbmcgaW4gYm90aCBkaXJlY3Rpb25zLCB3ZSBj
YW4gdXNlIGltYWdlLWJhY2tlZCBwYXR0ZXJucwogICAgIC8vIGluc3RlYWQgb2YgY3VzdG9tIHBh
dHRlcm5zLCBhbmQgYXZvaWQgdGlsaW5nLWVkZ2UgcGl4ZWwgY3JhY2tzLgotICAgIGlmIChtX3Jl
cGVhdFggJiYgbV9yZXBlYXRZKQorICAgIGlmIChyZXBlYXRYKCkgJiYgcmVwZWF0WSgpKQogICAg
ICAgICByZXR1cm4gQ0dQYXR0ZXJuQ3JlYXRlV2l0aEltYWdlMihwbGF0Zm9ybUltYWdlLmdldCgp
LCBwYXR0ZXJuVHJhbnNmb3JtLCBrQ0dQYXR0ZXJuVGlsaW5nQ29uc3RhbnRTcGFjaW5nKTsKIAog
ICAgIC8vIElmIEZMVF9NQVggc2hvdWxkIGFsc28gYmUgdXNlZCBmb3IgeFN0ZXAgb3IgeVN0ZXAs
IG5vdGhpbmcgaXMgcmVuZGVyZWQuIFVzaW5nIGZyYWN0aW9ucyBvZiBGTFRfTUFYIGFsc28KQEAg
LTgwLDggKzc3LDggQEAgQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVy
bihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW4KICAgICAvLyBJTlRfTUFYIGlz
IGFsbW9zdCBjb3JyZWN0LCBidXQgdGhlcmUgc2VlbXMgdG8gYmUgc29tZSBudW1iZXIgd3JhcHBp
bmcgb2NjdXJyaW5nIG1ha2luZyB0aGUgZmlsbAogICAgIC8vIHBhdHRlcm4gaXMgbm90IGZpbGxl
ZCBjb3JyZWN0bHkuCiAgICAgLy8gVG8gbWFrZSBlcnJvciBvZiBmbG9hdGluZyBwb2ludCBsZXNz
IHRoYW4gMC41LCB3ZSB1c2UgdGhlIGhhbGYgb2YgdGhlIG51bWJlciBvZiBtYW50aXNzYSBvZiBm
bG9hdCAoMSA8PCAyMikuCi0gICAgQ0dGbG9hdCB4U3RlcCA9IG1fcmVwZWF0WCA/IHRpbGVSZWN0
LndpZHRoKCkgOiAoMSA8PCAyMik7Ci0gICAgQ0dGbG9hdCB5U3RlcCA9IG1fcmVwZWF0WSA/IHRp
bGVSZWN0LmhlaWdodCgpIDogKDEgPDwgMjIpOworICAgIENHRmxvYXQgeFN0ZXAgPSByZXBlYXRY
KCkgPyB0aWxlUmVjdC53aWR0aCgpIDogKDEgPDwgMjIpOworICAgIENHRmxvYXQgeVN0ZXAgPSBy
ZXBlYXRZKCkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6ICgxIDw8IDIyKTsKIAogICAgIC8vIFRoZSBw
YXR0ZXJuIHdpbGwgcmVsZWFzZSB0aGUgQ0dJbWFnZVJlZiB3aGVuIGl0J3MgZG9uZSByZW5kZXJp
bmcgaW4gcGF0dGVyblJlbGVhc2VDYWxsYmFjawogICAgIENHSW1hZ2VSZWYgaW1hZ2UgPSBwbGF0
Zm9ybUltYWdlLmxlYWtSZWYoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3QuY3BwCmluZGV4IGQxNTNk
ZmE0NWMyMWFkODczZTRkNDg0NjcxZjNkMDRhY2I3NDg1NGIuLmUwNzlmNzMwYmU4NTlhYzNiMDVi
OTQyOWMzMGU4MzYxZDE0M2FlYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcApAQCAtOTEs
MTAgKzkxLDEwIEBAIGJvb2wgRGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyhBc1RleHRG
bGFncyBmbGFncywgSXRlbUhhbmRsZSBpdGVtKQogICAgICAgICBpZiAoIShmbGFncyAmIEFzVGV4
dEZsYWc6OkluY2x1ZGVzUGxhdGZvcm1PcGVyYXRpb25zKSkgewogICAgICAgICAgICAgY29uc3Qg
YXV0byYgc3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CiAgICAgICAgICAgICAvLyBG
SVhNRTogZm9yIG5vdywgb25seSBkcm9wIHRoZSBpdGVtIGlmIHRoZSBvbmx5IHN0YXRlLWNoYW5n
ZSBmbGFncyBhcmUgcGxhdGZvcm0tc3BlY2lmaWMuCi0gICAgICAgICAgICBpZiAoc3RhdGVJdGVt
LnN0YXRlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3Vi
cGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0
ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1
YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGUoKS5tX2NoYW5nZUZsYWdzID09IEdy
YXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHNDaGFuZ2UpCisg
ICAgICAgICAgICBpZiAoc3RhdGVJdGVtLnN0YXRlQ2hhbmdlKCkubV9jaGFuZ2VGbGFncyA9PSBH
cmFwaGljc0NvbnRleHRTdGF0ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKaW5kZXggNTBjOGQ4
Zjc1NzdhMTY3MDVlY2Y4NTVhZDE2OTgxOGI2ZGY5OGJiYS4uMzk1ZmU2NzFjY2Y3NDIyYTE2NTY3
NmM3OWNkMWUwOWVmNTU5YTk0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRl
bUJ1ZmZlci5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBJdGVtSGFuZGxlOjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJ
dGVtVHlwZTo6U2V0U3RhdGU6IHsKLSAgICAgICAgZ2V0PFNldFN0YXRlPigpLmFwcGx5KGNvbnRl
eHQpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIEl0ZW1UeXBlOjpTZXRMaW5lQ2FwOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RJdGVtcy5jcHAKaW5kZXggMjEzZGI5YzhjZjQyZWMxYWUyZDEzMzkzNzVkOWY1NjMwZTc2
ZDc0My4uZjkwMDkxZjEyZDI1YmI3YzU2MDkyNzVkMDE0ZGVhMWFiMTAyOTNkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3Bs
YXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtMjA5LDIzICsyMDksMjkgQEAgc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0cm9rZVRo
aWNrbmVzcyYgc3RhdGUpCiB9CiAKIFNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSYgc3RhdGUsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGZsYWdzKQotICAgIDogbV9zdGF0ZShzdGF0ZSwgZmxhZ3MpCisgICAgOiBtX3N0YXRlQ2hhbmdl
KHN0YXRlLCBmbGFncykKIHsKIH0KIAotU2V0U3RhdGU6OlNldFN0YXRlKGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSkKLSAgICA6IG1fc3RhdGUoc3RhdGVDaGFu
Z2UpCitTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2Um
IHN0YXRlQ2hhbmdlLCBjb25zdCBQYXR0ZXJuRGF0YSYgc3Ryb2tlUGF0dGVybiwgY29uc3QgUGF0
dGVybkRhdGEmIGZpbGxQYXR0ZXJuKQorICAgIDogbV9zdGF0ZUNoYW5nZShzdGF0ZUNoYW5nZSkK
KyAgICAsIG1fc3Ryb2tlUGF0dGVybihzdHJva2VQYXR0ZXJuKQorICAgICwgbV9maWxsUGF0dGVy
bihmaWxsUGF0dGVybikKIHsKIH0KIAotdm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0KSBjb25zdAordm9pZCBTZXRTdGF0ZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSog
ZmlsbFBhdHRlcm5JbWFnZSkKIHsKLSAgICBtX3N0YXRlLmFwcGx5KGNvbnRleHQpOworICAgIGlm
IChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZVBhdHRlcm5DaGFuZ2UpICYmIHN0cm9rZVBhdHRlcm5JbWFnZSkKKyAgICAgICAg
bV9zdGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFr
ZVJlZigqc3Ryb2tlUGF0dGVybkltYWdlKSwgbV9zdHJva2VQYXR0ZXJuLnBhcmFtZXRlcnMpOwor
ICAgIGlmIChtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdlKSAmJiBmaWxsUGF0dGVybkltYWdlKQorICAgICAg
ICBtX3N0YXRlQ2hhbmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUobWFr
ZVJlZigqZmlsbFBhdHRlcm5JbWFnZSksIG1fZmlsbFBhdHRlcm4ucGFyYW1ldGVycyk7CisgICAg
bV9zdGF0ZUNoYW5nZS5hcHBseShjb250ZXh0KTsKIH0KIAogc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNldFN0YXRlJiBzdGF0ZSkKIHsKLSAgICB0
cyA8PCBzdGF0ZS5zdGF0ZSgpOworICAgIHRzIDw8IHN0YXRlLnN0YXRlQ2hhbmdlKCk7CiAgICAg
cmV0dXJuIHRzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAppbmRleCA0Y2Zi
ZDg5YjA0NjU5NWYyODFkNDFlMjEyMDVhN2ZmM2E2YTYzNjdlLi4yYzIyZWJhMjIxZDk0ZWZkNjBj
NGU1MjRiYTJmNGJjZjk0YzEyNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgK
QEAgLTI1NCw5ICsyNTQsMTIgQEAgcHVibGljOgogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBp
c0RyYXdpbmdJdGVtID0gZmFsc2U7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5n
ZUZsYWdzKTsKLSAgICBXRUJDT1JFX0VYUE9SVCBTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRl
eHRTdGF0ZUNoYW5nZSYpOwotICAgIAotICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hh
bmdlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKworICAgIGNvbnN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGVDaGFuZ2U7IH0KKyAgICBjb25zdCBQYXR0ZXJuOjpQYXJhbWV0ZXJzJiBzdHJva2VQYXR0ZXJu
UGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzOyB9
CisgICAgY29uc3QgUGF0dGVybjo6UGFyYW1ldGVycyYgZmlsbFBhdHRlcm5QYXJhbWV0ZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9maWxsUGF0dGVybi5wYXJhbWV0ZXJzOyB9CisgICAgUmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyIHN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX3N0cm9rZVBhdHRlcm4udGlsZUltYWdlSWRlbnRpZmllcjsgfQorICAgIFJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciBmaWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fZmlsbFBhdHRlcm4udGlsZUltYWdlSWRlbnRpZmllcjsgfQogCiAgICAgc3Rh
dGljIHZvaWQgYnVpbGRlclN0YXRlKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiwgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCkBA
IC0yNjUsMTkgKzI2OCwyOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4g
dm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBPcHRpb25hbDxTZXRTdGF0ZT4gZGVjb2RlKERlY29kZXImKTsKIAotICAgIHZvaWQg
YXBwbHkoR3JhcGhpY3NDb250ZXh0JikgY29uc3Q7CisgICAgdm9pZCBhcHBseShHcmFwaGljc0Nv
bnRleHQmLCBOYXRpdmVJbWFnZSogc3Ryb2tlUGF0dGVybkltYWdlLCBOYXRpdmVJbWFnZSogZmls
bFBhdHRlcm5JbWFnZSk7CiAKIHByaXZhdGU6Ci0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UgbV9zdGF0ZTsKKyAgICBzdHJ1Y3QgUGF0dGVybkRhdGEgeworICAgICAgICBSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXIgdGlsZUltYWdlSWRlbnRpZmllcjsKKyAgICAgICAgUGF0dGVybjo6
UGFyYW1ldGVycyBwYXJhbWV0ZXJzOworICAgIH07CisKKyAgICBXRUJDT1JFX0VYUE9SVCBTZXRT
dGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYsIGNvbnN0IFBhdHRlcm5EYXRh
JiBzdHJva2VQYXR0ZXJuLCBjb25zdCBQYXR0ZXJuRGF0YSYgZmlsbFBhdHRlcm4pOworCisgICAg
R3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UgbV9zdGF0ZUNoYW5nZTsKKyAgICBQYXR0ZXJuRGF0
YSBtX3N0cm9rZVBhdHRlcm47CisgICAgUGF0dGVybkRhdGEgbV9maWxsUGF0dGVybjsKIH07CiAK
IHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2RlciYg
ZW5jb2RlcikgY29uc3QKIHsKLSAgICBhdXRvIGNoYW5nZUZsYWdzID0gbV9zdGF0ZS5tX2NoYW5n
ZUZsYWdzOworICAgIGF1dG8gY2hhbmdlRmxhZ3MgPSBtX3N0YXRlQ2hhbmdlLm1fY2hhbmdlRmxh
Z3M7CiAgICAgZW5jb2RlciA8PCBjaGFuZ2VGbGFnczsKIAotICAgIGF1dG8mIHN0YXRlID0gbV9z
dGF0ZS5tX3N0YXRlOworICAgIGF1dG8mIHN0YXRlID0gbV9zdGF0ZUNoYW5nZS5tX3N0YXRlOwog
CiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJv
a2VHcmFkaWVudENoYW5nZSkpIHsKICAgICAgICAgZW5jb2RlciA8PCAhIXN0YXRlLnN0cm9rZUdy
YWRpZW50OwpAQCAtMjg3LDggKzI5OSwxMCBAQCB2b2lkIFNldFN0YXRlOjplbmNvZGUoRW5jb2Rl
ciYgZW5jb2RlcikgY29uc3QKIAogICAgIGlmIChjaGFuZ2VGbGFncy5jb250YWlucyhHcmFwaGlj
c0NvbnRleHRTdGF0ZTo6U3Ryb2tlUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgZW5jb2RlciA8
PCAhIXN0YXRlLnN0cm9rZVBhdHRlcm47Ci0gICAgICAgIGlmIChzdGF0ZS5zdHJva2VQYXR0ZXJu
KQotICAgICAgICAgICAgZW5jb2RlciA8PCAqc3RhdGUuc3Ryb2tlUGF0dGVybjsKKyAgICAgICAg
aWYgKGF1dG8mIHBhdHRlcm4gPSBzdGF0ZS5zdHJva2VQYXR0ZXJuKSB7CisgICAgICAgICAgICBl
bmNvZGVyIDw8IHBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cigpOworICAgICAgICAgICAgZW5jb2RlciA8PCBwYXR0ZXJuLT5wYXJhbWV0ZXJzKCk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OkZpbGxHcmFkaWVudENoYW5nZSkpIHsKQEAgLTI5OSw4ICszMTMsMTAgQEAgdm9p
ZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAKICAgICBpZiAoY2hh
bmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OkZpbGxQYXR0ZXJuQ2hhbmdl
KSkgewogICAgICAgICBlbmNvZGVyIDw8ICEhc3RhdGUuZmlsbFBhdHRlcm47Ci0gICAgICAgIGlm
IChzdGF0ZS5maWxsUGF0dGVybikKLSAgICAgICAgICAgIGVuY29kZXIgPDwgKnN0YXRlLmZpbGxQ
YXR0ZXJuOworICAgICAgICBpZiAoYXV0byYgcGF0dGVybiA9IHN0YXRlLmZpbGxQYXR0ZXJuKSB7
CisgICAgICAgICAgICBlbmNvZGVyIDw8IHBhdHRlcm4tPnRpbGVJbWFnZSgpLnJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcigpOworICAgICAgICAgICAgZW5jb2RlciA8PCBwYXR0ZXJuLT5wYXJh
bWV0ZXJzKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFp
bnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSkpIHsKQEAgLTM2Niw2ICszODIs
OSBAQCBPcHRpb25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIHN0YXRlQ2hhbmdlOwogICAgIHN0YXRl
Q2hhbmdlLm1fY2hhbmdlRmxhZ3MgPSAqY2hhbmdlRmxhZ3M7CiAKKyAgICBQYXR0ZXJuRGF0YSBz
dHJva2VQYXR0ZXJuOworICAgIFBhdHRlcm5EYXRhIGZpbGxQYXR0ZXJuOworCiAgICAgaWYgKHN0
YXRlQ2hhbmdlLm1fY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZUdyYWRpZW50Q2hhbmdlKSkgewogICAgICAgICBPcHRpb25hbDxib29sPiBoYXNTdHJva2VH
cmFkaWVudDsKICAgICAgICAgZGVjb2RlciA+PiBoYXNTdHJva2VHcmFkaWVudDsKQEAgLTM4OCwx
MSArNDA3LDE3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIGlm
IChoYXNTdHJva2VQYXR0ZXJuLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGF1dG8gc3Ryb2tlUGF0
dGVybiA9IFBhdHRlcm46OmRlY29kZShkZWNvZGVyKTsKLSAgICAgICAgICAgIGlmICghc3Ryb2tl
UGF0dGVybikKKyAgICAgICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
cj4gcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICAgICAgZGVjb2RlciA+PiBy
ZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIXJlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgICAgICAgICAgCisgICAgICAgICAgICBPcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBw
YXJhbWV0ZXJzOworICAgICAgICAgICAgZGVjb2RlciA+PiBwYXJhbWV0ZXJzOworICAgICAgICAg
ICAgaWYgKCFwYXJhbWV0ZXJzKQogICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CiAKLSAgICAgICAgICAgIHN0YXRlQ2hhbmdlLm1fc3RhdGUuc3Ryb2tlUGF0dGVybiA9IFdURk1v
dmUoKnN0cm9rZVBhdHRlcm4pOworICAgICAgICAgICAgc3Ryb2tlUGF0dGVybiA9IHsgKnJlbmRl
cmluZ1Jlc291cmNlSWRlbnRpZmllciwgKnBhcmFtZXRlcnMgfTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNDE4LDExICs0NDMsMTcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ICAgICAgICAgaWYgKGhhc0ZpbGxQYXR0ZXJuLnZhbHVlKCkpIHsKLSAgICAgICAgICAgIGF1dG8g
ZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpkZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgICAgICBpZiAo
IWZpbGxQYXR0ZXJuKQorICAgICAgICAgICAgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVu
dGlmaWVyPiByZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICBkZWNvZGVy
ID4+IHJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGlmICghcmVuZGVy
aW5nUmVzb3VyY2VJZGVudGlmaWVyKQorICAgICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICAgICAgICAgIE9wdGlvbmFsPFBhdHRlcm46OlBhcmFtZXRlcnM+IHBhcmFtZXRl
cnM7CisgICAgICAgICAgICBkZWNvZGVyID4+IHBhcmFtZXRlcnM7CisgICAgICAgICAgICBpZiAo
IXBhcmFtZXRlcnMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAg
ICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5maWxsUGF0dGVybiA9IFdURk1vdmUoKmZpbGxQ
YXR0ZXJuKTsKKyAgICAgICAgICAgIGZpbGxQYXR0ZXJuID0geyAqcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyLCAqcGFyYW1ldGVycyB9OwogICAgICAgICB9CiAgICAgfQogCkBAIC01ODMsNyAr
NjE0LDcgQEAgT3B0aW9uYWw8U2V0U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICAgICAgc3RhdGVDaGFuZ2UubV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3Jt
cyA9ICpzaGFkb3dzSWdub3JlVHJhbnNmb3JtczsKICAgICB9CiAKLSAgICByZXR1cm4geyBzdGF0
ZUNoYW5nZSB9OworICAgIHJldHVybiB7eyBzdGF0ZUNoYW5nZSwgc3Ryb2tlUGF0dGVybiwgZmls
bFBhdHRlcm4gfX07CiB9CiAKIGNsYXNzIFNldExpbmVDYXAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDRjZGMzYjBhZWNjOTRkY2IxNjY2ZjA5OTI5NDE2
NjUxNzI0YjNhM2EuLjk5ZjcxNmJhZTU2YmU5YTllNDJmMGJiYmIzNGUyNjM3YmNmYTBlMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTg1LDkgKzg1LDIw
IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjb25zdCBHcmFw
aGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgY2hhCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK3ZvaWQg
UmVjb3JkZXI6OmNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmIGltYWdlKQoreworICAgIGlm
IChtX2RlbGVnYXRlKQorICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdl
KTsKKyAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworfQorCiB2b2lk
IFJlY29yZGVyOjphcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGVDaGFuZ2UmIGNoYW5nZXMsIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdz
IGNoYW5nZUZsYWdzKQogewogICAgIGlmICghY29udGFpbnNPbmx5SW5saW5lU3RhdGVDaGFuZ2Vz
KGNoYW5nZXMsIGNoYW5nZUZsYWdzKSkgeworICAgICAgICBpZiAoYXV0byBwYXR0ZXJuID0gY2hh
bmdlcy5tX3N0YXRlLnN0cm9rZVBhdHRlcm4pCisgICAgICAgICAgICBjYWNoZU5hdGl2ZUltYWdl
KHBhdHRlcm4tPnRpbGVJbWFnZSgpKTsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5n
ZXMubV9zdGF0ZS5maWxsUGF0dGVybikKKyAgICAgICAgICAgIGNhY2hlTmF0aXZlSW1hZ2UocGF0
dGVybi0+dGlsZUltYWdlKCkpOwogICAgICAgICBhcHBlbmQ8U2V0U3RhdGU+KGNoYW5nZXMubV9z
dGF0ZSwgY2hhbmdlRmxhZ3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTgzLDE3ICsx
OTQsMTMgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0ltYWdlQnVmZmVyKFdlYkNvcmU6OkltYWdlQnVm
ZmVyJiBpbWFnZUJ1ZmZlciwgY29uc3QgRmxvYXRSZWMKIAogdm9pZCBSZWNvcmRlcjo6ZHJhd05h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiBpbWFnZVNpemUs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgSW1hZ2VQYWludGluZ09wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKG1fZGVsZWdhdGUp
Ci0gICAgICAgIG1fZGVsZWdhdGUtPmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwotICAgIG1fZGlz
cGxheUxpc3QuY2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgY2FjaGVOYXRpdmVJbWFnZShp
bWFnZSk7CiAgICAgYXBwZW5kPERyYXdOYXRpdmVJbWFnZT4oaW1hZ2UucmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHNyY1JlY3QsIG9wdGlvbnMpOwog
fQogCiB2b2lkIFJlY29yZGVyOjpkcmF3UGF0dGVybihOYXRpdmVJbWFnZSYgaW1hZ2UsIGNvbnN0
IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBG
bG9hdFJlY3QmIHRpbGVSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIGNv
bnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmIChtX2RlbGVnYXRl
KQotICAgICAgICBtX2RlbGVnYXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKLSAgICBtX2Rp
c3BsYXlMaXN0LmNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOworICAgIGNhY2hlTmF0aXZlSW1hZ2Uo
aW1hZ2UpOwogICAgIGFwcGVuZDxEcmF3UGF0dGVybj4oaW1hZ2UucmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyKCksIGltYWdlU2l6ZSwgZGVzdFJlY3QsIHRpbGVSZWN0LCBwYXR0ZXJuVHJhbnNm
b3JtLCBwaGFzZSwgc3BhY2luZywgb3B0aW9ucyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCmluZGV4IDY0Zjc4YWNiNmM0OTYzOTg1MjY2ZDJjNDM1NzFlYjY5NDQ1
Y2UwM2MuLjgwNDZhMjFhMmUxODExNDkwYzY3MDYwMjk1YzY3ZTBkZGFhYWMxYjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtMTcxLDYgKzE3MSw4IEBAIHByaXZh
dGU6CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxBcHBlbmRJdGVtT2ZUeXBlKEl0ZW1U
eXBlKTsKIAorICAgIHZvaWQgY2FjaGVOYXRpdmVJbWFnZShOYXRpdmVJbWFnZSYpOworCiAgICAg
dm9pZCBhcHBlbmRTdGF0ZUNoYW5nZUl0ZW0oY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFu
Z2UmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7CiAKICAgICBGbG9h
dFJlY3QgZXh0ZW50RnJvbUxvY2FsQm91bmRzKGNvbnN0IEZsb2F0UmVjdCYpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVwbGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCmluZGV4IDMyNWRiOTczOWU5ZmNm
MjEzMWU5MTRlNmFlNWM4NWE4MmViYWUxYzkuLjRkOTA2YTI0NTY0NDYyZjZlMDE4MTY5ZDFiMTY4
OTkyZDhkZjJjY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHAK
QEAgLTcwLDYgKzcwLDI5IEBAIGlubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3Vy
Y2VJZGVudGlmaWVyPiBhcHBseU5hdGl2ZUltYWdlSXRlbShHcmFwaGljCiAgICAgcmV0dXJuIHJl
c291cmNlSWRlbnRpZmllcjsKIH0KIAoraW5saW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdS
ZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5U2V0U3RhdGVJdGVtKEdyYXBoaWNzQ29udGV4dCYgY29u
dGV4dCwgY29uc3QgTmF0aXZlSW1hZ2VIYXNoTWFwJiBuYXRpdmVJbWFnZXMsIEl0ZW1IYW5kbGUg
aXRlbSkKK3sKKyAgICBhdXRvJiBzZXRTdGF0ZUl0ZW0gPSBpdGVtLmdldDxTZXRTdGF0ZT4oKTsK
KworICAgIE5hdGl2ZUltYWdlKiBzdHJva2VQYXR0ZXJuSW1hZ2UgPSBudWxscHRyOworICAgIE5h
dGl2ZUltYWdlKiBmaWxsUGF0dGVybkltYWdlID0gbnVsbHB0cjsKKworICAgIGlmIChhdXRvIHJl
c291cmNlSWRlbnRpZmllciA9IHNldFN0YXRlSXRlbS5zdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlm
aWVyKCkpIHsKKyAgICAgICAgc3Ryb2tlUGF0dGVybkltYWdlID0gbmF0aXZlSW1hZ2VzLmdldChy
ZXNvdXJjZUlkZW50aWZpZXIpOworICAgICAgICBpZiAoIXN0cm9rZVBhdHRlcm5JbWFnZSkKKyAg
ICAgICAgICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7CisgICAgfQorCisgICAgaWYgKGF1
dG8gcmVzb3VyY2VJZGVudGlmaWVyID0gc2V0U3RhdGVJdGVtLmZpbGxQYXR0ZXJuSW1hZ2VJZGVu
dGlmaWVyKCkpIHsKKyAgICAgICAgZmlsbFBhdHRlcm5JbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQo
cmVzb3VyY2VJZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKCFmaWxsUGF0dGVybkltYWdlKQorICAg
ICAgICAgICAgcmV0dXJuIHJlc291cmNlSWRlbnRpZmllcjsKKyAgICB9CisKKyAgICBzZXRTdGF0
ZUl0ZW0uYXBwbHkoY29udGV4dCwgc3Ryb2tlUGF0dGVybkltYWdlLCBmaWxsUGF0dGVybkltYWdl
KTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTxjbGFzcyBUPgogaW5s
aW5lIHN0YXRpYyBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IGFwcGx5Rm9u
dEl0ZW0oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250UmVuZGVyaW5nUmVzb3Vy
Y2VNYXAmIGZvbnRzLCBJdGVtSGFuZGxlIGl0ZW0pCiB7CkBAIC0xMTcsNiArMTQwLDEyIEBAIHN0
ZDo6cGFpcjxPcHRpb25hbDxTdG9wUmVwbGF5UmVhc29uPiwgT3B0aW9uYWw8UmVuZGVyaW5nUmVz
b3VyY2VJZGVudGlmaWVyPj4gUmVwCiAgICAgICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RG
OjpudWxsb3B0IH07CiAgICAgfQogCisgICAgaWYgKGl0ZW0uaXM8U2V0U3RhdGU+KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gbWlzc2luZ0NhY2hlZFJlc291cmNlSWRlbnRpZmllciA9IGFwcGx5U2V0
U3RhdGVJdGVtKG1fY29udGV4dCwgbV9uYXRpdmVJbWFnZXMsIGl0ZW0pKQorICAgICAgICAgICAg
cmV0dXJuIHsgU3RvcFJlcGxheVJlYXNvbjo6TWlzc2luZ0NhY2hlZFJlc291cmNlLCBXVEZNb3Zl
KG1pc3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIpIH07CisgICAgICAgIHJldHVybiB7IFdU
Rjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CisgICAgfQorCiAgICAgaXRlbS5hcHBseShtX2Nv
bnRleHQpOwogICAgIHJldHVybiB7IFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0IH07CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5j
cHAKaW5kZXggNTYzM2EwYWZhNjRkZDY2ZDZhZWQ5ZTk3ZGUyZTY4ZGJlMTZiMzgxMS4uMTY1ZTY3
YmMzMGY0NWM2NDZhYjJiMDQ4ZTYyMDgzYzc3ZjQ0MTJjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtNzIsMTUgKzcy
LDE1IEBAIHZvaWQgRkVUaWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIHRpbGVJbWFn
ZUNvbnRleHQudHJhbnNsYXRlKC1pbk1heEVmZmVjdExvY2F0aW9uLngoKSwgLWluTWF4RWZmZWN0
TG9jYXRpb24ueSgpKTsKICAgICB0aWxlSW1hZ2VDb250ZXh0LmRyYXdJbWFnZUJ1ZmZlcigqaW5C
dWZmZXIsIGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpLmxvY2F0aW9uKCkpOwogCi0gICAgYXV0byB0
aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZSh0aWxlSW1h
Z2UpKTsKKyAgICBhdXRvIHRpbGVJbWFnZUNvcHkgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRp
dmVJbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwogICAgIGlmICghdGlsZUltYWdlQ29weSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJ
bWFnZUNvcHkucmVsZWFzZU5vbk51bGwoKSwgdHJ1ZSwgdHJ1ZSk7Ci0KICAgICBBZmZpbmVUcmFu
c2Zvcm0gcGF0dGVyblRyYW5zZm9ybTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnRyYW5zbGF0ZShp
bk1heEVmZmVjdExvY2F0aW9uIC0gbWF4RWZmZWN0TG9jYXRpb24pOwotICAgIHBhdHRlcm4uZ2V0
KCkuc2V0UGF0dGVyblNwYWNlVHJhbnNmb3JtKHBhdHRlcm5UcmFuc2Zvcm0pOworCisgICAgYXV0
byBwYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKHRpbGVJbWFnZUNvcHkucmVsZWFzZU5vbk51bGwo
KSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJuVHJhbnNmb3JtfSk7CisKICAgICBHcmFwaGljc0NvbnRl
eHQmIGZpbHRlckNvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwogICAgIGZpbHRlckNv
bnRleHQuc2V0RmlsbFBhdHRlcm4oV1RGTW92ZShwYXR0ZXJuKSk7CiAgICAgZmlsdGVyQ29udGV4
dC5maWxsUmVjdChGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBhYnNvbHV0ZVBhaW50UmVjdCgpLnNp
emUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
QmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcAppbmRleCAwZDA0ODExYjNlOTgxYzUxNjUxMzU0YWQ4MGYwYmNmNzYyYTBiZWJkLi5jNzBj
MTRhZGUxZmY1YmRlZGU0NzRjZWZiZTM4MTMwODAxNDVkMTUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzI2NiwxNCArMzI2Niwx
MyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJu
RGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBpbWFnZUNvbnRleHQuZHJhd1Rl
eHQoZm9udCwgdGV4dFJ1biwgeyB0ZXh0R2FwLCB5T2Zmc2V0IH0sIDApOwogICAgIH0KIAotICAg
IGF1dG8gdGlsZUltYWdlID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvSW1hZ2UoV1RGTW92ZShpbWFn
ZUJ1ZmZlcikpOwotICAgIGF1dG8gZmlsbFBhdHRlcm4gPSBQYXR0ZXJuOjpjcmVhdGUodGlsZUlt
YWdlLnJlbGVhc2VOb25OdWxsKCksIHRydWUsIHRydWUpOworICAgIGF1dG8gdGlsZUltYWdlID0g
SW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZShpbWFnZUJ1ZmZlcikpOwor
CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm07CiAgICAgcGF0dGVy
bk9mZnNldFRyYW5zZm9ybS50cmFuc2xhdGUoY29udGVudE9mZnNldCArIGRlc2NyaXB0aW9uLnBo
YXNlKTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3JtLnNjYWxlKDEgLyBkZXN0Q29udGV4dC5z
Y2FsZUZhY3RvcigpKTsKLSAgICBmaWxsUGF0dGVybi0+c2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KHBhdHRlcm5PZmZzZXRUcmFuc2Zvcm0pOwogCi0gICAgcmV0dXJuIGZpbGxQYXR0ZXJuOworICAg
IHJldHVybiBQYXR0ZXJuOjpjcmVhdGUodGlsZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1
ZSwgdHJ1ZSwgcGF0dGVybk9mZnNldFRyYW5zZm9ybX0pOwogfTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVy
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAKaW5kZXggZTM0MjQzMWQxNDkxZjNmMWQwYmJkNGJjZjk1YTA1MjZlZDAzMGZkMS4u
OTQ3MTliM2VmODc3MmVmY2EwN2MwZTJiMzVkZDFjMDQwNjA5NzM2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcApAQCAtMTEyLDE2ICsxMTIsMTIgQEAgUGF0dGVybkRhdGEqIFJlbmRlclNWR1Jlc291cmNl
UGF0dGVybjo6YnVpbGRQYXR0ZXJuKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBPcHQKIAogICAg
IGNvbnN0IEludFNpemUgdGlsZUltYWdlU2l6ZSA9IHRpbGVJbWFnZS0+bG9naWNhbFNpemUoKTsK
IAotICAgIFJlZlB0cjxJbWFnZT4gY29waWVkSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9J
bWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOworICAgIGF1dG8gY29waWVkSW1hZ2UgPSBJbWFnZUJ1
ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKHRpbGVJbWFnZSkpOwogICAgIGlmICgh
Y29waWVkSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgLy8gQnVpbGQgcGF0
dGVybi4KLSAgICBhdXRvIHBhdHRlcm5EYXRhID0gbWFrZVVuaXF1ZTxQYXR0ZXJuRGF0YT4oKTsK
LSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3BpZWRJbWFnZS5y
ZWxlYXNlTm9uTnVsbCgpLCB0cnVlLCB0cnVlKTsKLQogICAgIC8vIENvbXB1dGUgcGF0dGVybiBz
cGFjZSB0cmFuc2Zvcm1hdGlvbi4KLQorICAgIGF1dG8gcGF0dGVybkRhdGEgPSBtYWtlVW5pcXVl
PFBhdHRlcm5EYXRhPigpOwogICAgIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0udHJhbnNsYXRlKHRp
bGVCb3VuZGFyaWVzLmxvY2F0aW9uKCkpOwogICAgIHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0uc2Nh
bGUodGlsZUJvdW5kYXJpZXMuc2l6ZSgpIC8gdGlsZUltYWdlU2l6ZSk7CiAKQEAgLTEzNSw3ICsx
MzEsOSBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRl
cm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogICAgICAgICBpZiAoc2hvdWxkVHJhbnNm
b3JtT25UZXh0UGFpbnRpbmcocmVuZGVyZXIsIGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtYXRpb24p
KQogICAgICAgICAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSAqPSBhZGRpdGlvbmFsVGV4dFRy
YW5zZm9ybWF0aW9uOwogICAgIH0KLSAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybi0+c2V0UGF0dGVy
blNwYWNlVHJhbnNmb3JtKHBhdHRlcm5EYXRhLT50cmFuc2Zvcm0pOworCisgICAgLy8gQnVpbGQg
cGF0dGVybi4KKyAgICBwYXR0ZXJuRGF0YS0+cGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZShjb3Bp
ZWRJbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCB7IHRydWUsIHRydWUsIHBhdHRlcm5EYXRhLT50cmFu
c2Zvcm0gfSk7CiAKICAgICAvLyBWYXJpb3VzIGNhbGxzIGFib3ZlIG1heSB0cmlnZ2VyIGludmFs
aWRhdGlvbnMgaW4gc29tZSBmcmluZ2UgY2FzZXMgKEltYWdlQnVmZmVyIGFsbG9jYXRpb24KICAg
ICAvLyBmYWlsdXJlcyBpbiB0aGUgU1ZHIGltYWdlIGNhY2hlIGZvciBleGFtcGxlKS4gVG8gYXZv
aWQgaGF2aW5nIG91ciBQYXR0ZXJuRGF0YSBkZWxldGVkIGJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAppbmRleCAxOWFmMjk5NjY4MjdkNGI2MDFk
OGNkNTI3YmYxNGM5YTc3ZDcwODliLi5iYjdjODRiZjgxNDc1Y2NjOTE5ZjA3ODMwMDRkOTI5NzE4
MDBmZTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTEwNzUsMTggKzEwNzUsNiBAQCBzdGF0aWMgV0FSTl9VTlVTRURfUkVUVVJOIGJv
b2wgZGVjb2RlT3B0aW9uYWxJbWFnZShEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8SW1hZwogICAg
IHJldHVybiBkZWNvZGVJbWFnZShkZWNvZGVyLCBpbWFnZSk7CiB9CiAKLXZvaWQgQXJndW1lbnRD
b2RlcjxJbWFnZUhhbmRsZT46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBJbWFnZUhh
bmRsZSYgaW1hZ2VIYW5kbGUpCi17Ci0gICAgZW5jb2RlT3B0aW9uYWxJbWFnZShlbmNvZGVyLCBp
bWFnZUhhbmRsZS5pbWFnZS5nZXQoKSk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxJbWFnZUhh
bmRsZT46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBJbWFnZUhhbmRsZSYgaW1hZ2VIYW5kbGUp
Ci17Ci0gICAgaWYgKCFkZWNvZGVPcHRpb25hbEltYWdlKGRlY29kZXIsIGltYWdlSGFuZGxlLmlt
YWdlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQotCiB2b2lk
IEFyZ3VtZW50Q29kZXI8UmVmPEZvbnQ+Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0
IFJlZjxXZWJDb3JlOjpGb250PiYgZm9udCkKIHsKICAgICBlbmNvZGVyIDw8IGZvbnQtPm9yaWdp
bigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCAwMGMxNDNmYmJiODlkMjY2NGNhZTUwYTVlMWZiZjNmOGU5MTU5NTA3Li42ZjcyMTgwZjk4NTMy
NzNlM2YxNmY2MTBiNGQ1MzFmMWFjZjE4YWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaApAQCAtMTA5LDcgKzEwOSw2IEBAIGNsYXNzIEZpeGVkUG9z
aXRpb25WaWV3cG9ydENvbnN0cmFpbnRzOwogY2xhc3MgRm9udDsKIGNsYXNzIEZvbnRQbGF0Zm9y
bURhdGE7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOwotY2xhc3MgSW1hZ2VIYW5kbGU7CiBjbGFzcyBJ
bnRQb2ludDsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtNDE4LDExICs0MTcs
NiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFJlZjxXZWJDb3JlOjpGb250Pj4g
ewogICAgIHN0YXRpYyBPcHRpb25hbDxXZWJDb3JlOjpGb250UGxhdGZvcm1EYXRhPiBkZWNvZGVQ
bGF0Zm9ybURhdGEoRGVjb2RlciYpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpJbWFnZUhhbmRsZT4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShFbmNv
ZGVyJiwgY29uc3QgV2ViQ29yZTo6SW1hZ2VIYW5kbGUmKTsKLSAgICBzdGF0aWMgV0FSTl9VTlVT
RURfUkVUVVJOIGJvb2wgZGVjb2RlKERlY29kZXImLCBXZWJDb3JlOjpJbWFnZUhhbmRsZSYpOwot
fTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3Q+IHsKICAgICBzdGF0aWMgdm9pZCBlbmNvZGUoRW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDc1N2Rh
NzRkMjJiM2FhNmJkNDg1ODExYWNjOGJjZWVkZmJjNWY2ZTEuLjYzN2NiY2Y4MzNjM2FhZDEwYTY0
NTllYTA4ZjllYjM4NWI1OWRmNGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wMi0xMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nl
c3NdIEltcGxlbWVudCBTZXRTdGF0ZSBEaXNwbGF5TGlzdCBpdGVtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTk0NjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgIFVubWFyayB0ZXN0cyB0aGF0IGFyZSBubyBsb25nZXIgY3Jhc2guCisK
IDIwMjEtMDItMTEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyNzA1NzguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3Mv
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAxMmNhMWNlNmFhMTkxM2VlMjFlNmU2NGI3NDBjM2Y5Njc2
MzY4ZGE5Li5jM2Q0ZGUzZDkzYTgzNzAzYTg3NWY1MzQwZWQ1ZjJmM2RkM2ZjNTc1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91
dFRlc3RzL2dwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsNDUgKzEsMyBAQAotY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEuY2FudmFzcGF0dGVybi5o
dG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQWxw
aGEuaW1hZ2VwYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNv
bXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5jb3B5Lmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5kZXN0aW5hdGlvbi1hdG9w
Lmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVy
ZWQucGF0dGVybi5kZXN0aW5hdGlvbi1pbi5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5jb21wb3NpdGUudW5jb3ZlcmVkLnBhdHRlcm4uc291cmNlLWluLmh0bWwgWyBDcmFz
aCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5z
b3VyY2Utb3V0Lmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4u
YW5pbWF0ZWQuZ2lmLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRl
cm4uYmFzaWMuY2FudmFzLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBh
dHRlcm4uYmFzaWMuaW1hZ2UuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
cGF0dGVybi5iYXNpYy5ub2NvbnRleHQuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVz
dHMvMmQucGF0dGVybi5jcm9zc2NhbnZhcy5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5wYXR0ZXJuLm1vZGlmeS5jYW52YXMxLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnBhdHRlcm4ubW9kaWZ5LmNhbnZhczIuaHRtbCBbIENyYXNoIF0KLWNhbnZh
cy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5tb2RpZnkuaW1hZ2UxLmh0bWwgWyBDcmFzaCBdCi1j
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ubW9kaWZ5LmltYWdlMi5odG1sIFsgQ3Jhc2gg
XQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLnBhaW50Lm5vcmVwZWF0LmJhc2ljLmh0
bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBl
YXQuY29vcmQxLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4u
cGFpbnQubm9yZXBlYXQuY29vcmQyLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQzLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQub3V0c2lkZS5odG1sIFsgQ3Jh
c2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmNh
bnZhcy5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLnBhaW50
Lm9yaWVudGF0aW9uLmltYWdlLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LnBhdHRlcm4ucGFpbnQucmVwZWF0LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0LmNvb3JkMS5odG1sIFsgQ3Jhc2ggXQotY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLnBhaW50LnJlcGVhdC5jb29yZDIuaHRtbCBbIENy
YXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXQuY29vcmQz
Lmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQucmVw
ZWF0Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVy
bi5wYWludC5yZXBlYXR4LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eC5jb29yZDEuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4Lm91dHNpZGUuaHRtbCBbIENyYXNo
IF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXR5LmJhc2ljLmh0
bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0
eS5jb29yZDEuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5w
YWludC5yZXBlYXR5Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMv
MmQucGF0dGVybi5yZXBlYXQuZW1wdHkuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVz
dHMvMmQucGF0dGVybi5yZXBlYXQubnVsbC5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5zaGFkb3cucGF0dGVybi5hbHBoYS5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi5iYXNpYy5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0dGVybi50cmFuc3BhcmVudC4xLmh0bWwgWyBDcmFzaCBd
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5zcGFyZW50LjIuaHRt
bCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvaW5pdGlhbC5yZXNldC5wYXR0ZXJuLmh0
bWwgWyBDcmFzaCBdCi0KIGNvbXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMtY29t
cG9zaXRpbmcuaHRtbCBbIEZhaWx1cmUgXQogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vc3Bh
bk92ZXJsYXBzQ2FudmFzLmh0bWwgWyBGYWlsdXJlIF0KIApAQCAtNTcsMzEgKzE1LDEwIEBAIGZh
c3QvY2FudmFzL2NhbnZhcy1ibGVuZGluZy1jbGlwcGluZy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0
L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctY29sb3Itb3Zlci1jb2xvci5odG1sIFsgRmFpbHVyZSBd
CiBmYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctY29sb3Itb3Zlci1ncmFkaWVudC5odG1sIFsg
RmFpbHVyZSBdCiBmYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctY29sb3Itb3Zlci1pbWFnZS5o
dG1sIFsgVGltZW91dCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctY29sb3Itb3Zlci1w
YXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctZ3JhZGll
bnQtb3Zlci1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRp
bmctaW1hZ2Utb3Zlci1wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMt
YmxlbmRpbmctcGF0dGVybi1vdmVyLWNvbG9yLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9j
YW52YXMtYmxlbmRpbmctcGF0dGVybi1vdmVyLWdyYWRpZW50Lmh0bWwgWyBDcmFzaCBdCi1mYXN0
L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctcGF0dGVybi1vdmVyLWltYWdlLmh0bWwgWyBDcmFzaCBd
Ci1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctcGF0dGVybi1vdmVyLXBhdHRlcm4uaHRtbCBb
IENyYXNoIF0KLWZhc3QvY2FudmFzL2NhbnZhcy1jcmVhdGVQYXR0ZXJuLWZpbGxSZWN0LXNoYWRv
dy5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLWNyZWF0ZVBhdHRlcm4tdmlkZW8t
bG9hZGluZy5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLWNyZWF0ZVBhdHRlcm4t
dmlkZW8tbW9kaWZ5Lmh0bWwgWyBDcmFzaCBdCiBmYXN0L2NhbnZhcy9jYW52YXMtZHJhd0ltYWdl
LWNvbXBvc2l0ZS1jb3B5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWZhc3QvY2FudmFzL2Nh
bnZhcy1maWxsUGF0aC1wYXR0ZXJuLXNoYWRvdy5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMv
Y2FudmFzLWltYWdlLXNoYWRvdy5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLWlt
YWdlU21vb3RoaW5nRW5hYmxlZC1wYXR0ZXJucy5odG1sIFsgQ3Jhc2ggXQogZmFzdC9jYW52YXMv
Y2FudmFzLWxhcmdlLWRpbWVuc2lvbnMuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9jYW52YXMvY2Fu
dmFzLXBhdHRlcm4tYmVoYXZpb3VyLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMt
cGF0dGVybi1tb2RpZnkuaHRtbCBbIENyYXNoIF0KLWZhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJu
LXRyYW5zZm9ybS5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4td2l0
aC10cmFuc2Zvcm0uaHRtbCBbIENyYXNoIF0KIGZhc3QvY2FudmFzL2NhbnZhcy1yZW5kZXItbGF5
ZXIuaHRtbCBbIEZhaWx1cmUgXQogZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEt
bGVhdmVzLWJpdHMtYmVoaW5kLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWZhc3QvY2FudmFz
L2ltYWdlLW9iamVjdC1pbi1jYW52YXMuaHRtbCBbIENyYXNoIF0KLWZhc3QvY2FudmFzL2ltYWdl
LXBhdHRlcm4tcm90YXRlLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgt
dHJhbnNmb3JtLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9wYXR0ZXJuZmlsbC1yZXBlYXQu
aHRtbCBbIENyYXNoIF0KIGZhc3QvY2FudmFzL3dlYmdsL2NhbnZhcy0yZC13ZWJnbC10ZXh0dXJl
Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmdsL2NhbnZhcy10ZXN0Lmh0bWwgWyBG
YWlsdXJlIF0KIGZhc3QvY2FudmFzL3dlYmdsL2NvbnRleHQtY3JlYXRpb24tYXR0cmlidXRlcy5o
dG1sIFsgRmFpbHVyZSBdCkBAIC0xOTUsOTggKzEzMiwxMyBAQCBpbXBvcnRlZC9ibGluay9mYXN0
L2NhbnZhcy9jYW52YXMtc3RhdGUtcGVyc2lzdGVuY2Utbm8tZGlydHkuaHRtbCBbIEltYWdlT25s
eUZhaQogaW1wb3J0ZWQvYmxpbmsvZmFzdC9jYW52YXMvY2FudmFzLXVuYmFsYW5jZWQtc2F2ZS5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiBpbXBvcnRlZC9ibGluay9zdmcvY2FudmFzL2NhbnZh
cy1kcmF3LXBhdHRlcm4tc2l6ZS5odG1sIFsgQ3Jhc2ggXQogCi1pbXBvcnRlZC93M2MvY2FudmFz
LzJkLmNvbXBvc2l0ZS5nbG9iYWxBbHBoYS5jYW52YXNwYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1p
bXBvcnRlZC93M2MvY2FudmFzLzJkLmNvbXBvc2l0ZS5nbG9iYWxBbHBoYS5pbWFnZXBhdHRlcm4u
aHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQuY29tcG9zaXRlLnVuY292ZXJl
ZC5wYXR0ZXJuLmNvcHkuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQuY29t
cG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLmRlc3RpbmF0aW9uLWF0b3AuaHRtbCBbIENyYXNoIF0K
LWltcG9ydGVkL3czYy9jYW52YXMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLmRlc3Rp
bmF0aW9uLWluLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLmNvbXBvc2l0
ZS51bmNvdmVyZWQucGF0dGVybi5zb3VyY2UtaW4uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3cz
Yy9jYW52YXMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLnNvdXJjZS1vdXQuaHRtbCBb
IENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5iYXNpYy5jYW52YXMuaHRt
bCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5iYXNpYy5pbWFnZS5o
dG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLmJhc2ljLm5vY29u
dGV4dC5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLmNyb3Nz
Y2FudmFzLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ubW9k
aWZ5LmNhbnZhczEuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVy
bi5tb2RpZnkuY2FudmFzMi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5w
YXR0ZXJuLnBhaW50Lm5vcmVwZWF0LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
Y2FudmFzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQxLmh0bWwgWyBDcmFzaCBdCi1p
bXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQyLmh0bWwg
WyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQu
Y29vcmQzLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFp
bnQubm9yZXBlYXQub3V0c2lkZS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8y
ZC5wYXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmNhbnZhcy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmltYWdlLmh0bWwgWyBD
cmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0LmJhc2lj
Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVw
ZWF0LmNvb3JkMS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJu
LnBhaW50LnJlcGVhdC5jb29yZDIuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMv
MmQucGF0dGVybi5wYWludC5yZXBlYXQuY29vcmQzLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93
M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0K
LWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4LmJhc2ljLmh0bWwg
WyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eC5j
b29yZDEuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5wYWlu
dC5yZXBlYXR4Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQu
cGF0dGVybi5wYWludC5yZXBlYXR5LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
Y2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eS5jb29yZDEuaHRtbCBbIENyYXNoIF0KLWlt
cG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR5Lm91dHNpZGUuaHRtbCBb
IENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5yZXBlYXQuZW1wdHkuaHRt
bCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5yZXBlYXQubnVsbC5o
dG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5zaGFkb3cucGF0dGVybi5hbHBo
YS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5zaGFkb3cucGF0dGVybi5i
YXNpYy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5zaGFkb3cucGF0dGVy
bi50cmFuc3BhcmVudC4xLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnNo
YWRvdy5wYXR0ZXJuLnRyYW5zcGFyZW50LjIuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9j
YW52YXMvaW5pdGlhbC5yZXNldC5wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
Y2FudmFzL3NlY3VyaXR5LnBhdHRlcm4uY2FudmFzLnRpbWluZy5odG1sIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvdzNjL2NhbnZhcy9zZWN1cml0eS5wYXR0ZXJuLmNyb3NzLmh0bWwgWyBDcmFzaCBdCiBp
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2ZldGNoL3JhbmdlL2dlbmVyYWwud2luZG93
Lmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gv
cmFuZ2Uvc3cuaHR0cHMud2luZG93Lmh0bWwgWyBGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9jb21wb3NpdGluZy8yZC5jb21wb3Np
dGUuZ2xvYmFsQWxwaGEuY2FudmFzcGF0dGVybi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2NvbXBvc2l0aW5nLzJkLmNv
bXBvc2l0ZS5nbG9iYWxBbHBoYS5pbWFnZXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9jb21wb3NpdGluZy8y
ZC5jb21wb3NpdGUudW5jb3ZlcmVkLnBhdHRlcm4uY29weS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2NvbXBvc2l0aW5n
LzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5kZXN0aW5hdGlvbi1hdG9wLmh0bWwgWyBD
cmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1l
bnQvY29tcG9zaXRpbmcvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLmRlc3RpbmF0aW9u
LWluLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
Y2FudmFzL2VsZW1lbnQvY29tcG9zaXRpbmcvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJu
LnNvdXJjZS1pbi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L2NvbXBvc2l0aW5nLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQu
cGF0dGVybi5zb3VyY2Utb3V0Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5w
YXR0ZXJuLmFuaW1hdGVkLmdpZi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQu
cGF0dGVybi5iYXNpYy5jYW52YXMuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJk
LnBhdHRlcm4uYmFzaWMuaW1hZ2UuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJk
LnBhdHRlcm4uYmFzaWMubm9jb250ZXh0Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxl
cy8yZC5wYXR0ZXJuLmNyb3NzY2FudmFzLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxl
cy8yZC5wYXR0ZXJuLm1vZGlmeS5jYW52YXMxLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0
eWxlcy8yZC5wYXR0ZXJuLm1vZGlmeS5jYW52YXMyLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tl
LXN0eWxlcy8yZC5wYXR0ZXJuLm1vZGlmeS5pbWFnZTEuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJv
a2Utc3R5bGVzLzJkLnBhdHRlcm4ubW9kaWZ5LmltYWdlMi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0
cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5ub3JlcGVhdC5iYXNpYy5odG1sIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2Zp
bGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5ub3JlcGVhdC5jb29yZDEuaHRt
bCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQu
Y29vcmQyLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLnBhaW50
Lm5vcmVwZWF0LmNvb3JkMy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0
dGVybi5wYWludC5ub3JlcGVhdC5vdXRzaWRlLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0
eWxlcy8yZC5wYXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmNhbnZhcy5odG1sIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwt
YW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5vcmllbnRhdGlvbi5pbWFnZS5odG1s
IFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXQuYmFz
aWMuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQucmVw
ZWF0LmNvb3JkMS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5w
YWludC5yZXBlYXQuY29vcmQyLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5w
YXR0ZXJuLnBhaW50LnJlcGVhdC5jb29yZDMuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5
bGVzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1z
dHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eC5iYXNpYy5odG1sIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2Zp
bGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4LmNvb3JkMS5odG1s
IFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4Lm91
dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQu
cmVwZWF0eS5iYXNpYy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVy
bi5wYWludC5yZXBlYXR5LmNvb3JkMS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMv
MmQucGF0dGVybi5wYWludC5yZXBlYXR5Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJv
a2Utc3R5bGVzLzJkLnBhdHRlcm4ucmVwZWF0LmVtcHR5Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ry
b2tlLXN0eWxlcy8yZC5wYXR0ZXJuLnRyYW5zZm9ybS5pZGVudGl0eS5odG1sIFsgQ3Jhc2ggXQog
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ltYWdl
LXNtb290aGluZy9pbWFnZXNtb290aGluZy5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ltYWdlYml0bWFwL2NyZWF0ZUlt
YWdlQml0bWFwLW9yaWdpbi5zdWIuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2xpbmUtc3R5bGVzLzJkLmxpbmUuY2Fw
LmNsb3NlZC5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L3BhdGgtb2JqZWN0cy8yZC5wYXRoLmFyYy5hbmdsZS4yLmh0bWwg
WyBDcmFzaCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2Vs
ZW1lbnQvcGF0aC1vYmplY3RzLzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIFsgRmFpbHVyZSBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvc2hh
ZG93cy8yZC5zaGFkb3cucGF0dGVybi5hbHBoYS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L3NoYWRvd3MvMmQuc2hhZG93
LnBhdHRlcm4uYmFzaWMuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9zaGFkb3dzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5z
cGFyZW50LjEuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC9zaGFkb3dzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5zcGFyZW50
LjIuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9z
ZW1hbnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtY2FudmFzLWVsZW1lbnQvaW5pdGlhbC5yZXNl
dC5wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLWNhbnZhcy1lbGVtZW50L3NlY3Vy
aXR5LnBhdHRlcm4uY2FudmFzLnRpbWluZy5jcm9zcy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3Ro
ZS1jYW52YXMtZWxlbWVudC9zZWN1cml0eS5wYXR0ZXJuLmNhbnZhcy50aW1pbmcucmVkaXJlY3Qu
aHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1h
bnRpY3MvZW1iZWRkZWQtY29udGVudC90aGUtY2FudmFzLWVsZW1lbnQvc2VjdXJpdHkucGF0dGVy
bi5jcm9zcy5jcm9zcy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1jYW52YXMtZWxlbWVudC9z
ZWN1cml0eS5wYXR0ZXJuLmNyb3NzLnJlZGlyZWN0Lmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhl
LXZpZGVvLWVsZW1lbnQvdmlkZW9fdGltZXVwZGF0ZV9vbl9zZWVrLmh0bWwgWyBGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRp
YVJlY29yZGVyLXBlZXJjb25uZWN0aW9uLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KIAo=
</data>
<flag name="review"
          id="438499"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420101</attachid>
            <date>2021-02-12 00:07:25 -0800</date>
            <delta_ts>2021-02-12 01:10:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221637-20210212000724.patch</filename>
            <type>text/plain</type>
            <size>60452</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNzU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjA0MzZiYTM1ZDY0M2I1
MDc3NTcxZjU3ZGVjZTE1YTkxODQ4Zjk5Mi4uYTQ1Y2JmMGZlZTRmNmUyZWU4OTUyOGNiYmYyZjYx
OTEwNjM4OTFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMiBAQAorMjAyMS0wMi0xMSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIFBhdHRlcm4g
aG9sZCBhIE5hdGl2ZUltYWdlIGluc3RlYWQgb2YgYW4gSW1hZ2UKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTYzNworCisgICAgICAgIFJldmlld2Vk
IGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBUaGlzIHdpbGwgbWFrZSBjYWNoaW5nIHRoZSBQ
YXR0ZXJuIGRhdGEgaW4gdGhlIEdQVVAgc3RyYWlnaHRmb3J3YXJkIHNpbmNlCisgICAgICAgIGFs
bCB3ZSBuZWVkIGlzIHRvIGNhY2hlIHRoZSBOYXRpdmVJbWFnZSBhbmQgZW5jb2RlIHRoZSBwYXR0
ZXJuIGRhdGEuCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1BhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0ZXJuKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNQYXR0ZXJuLmg6CisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2Fu
dmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZv
ckNhbnZhc1BhdHRlcm4pOgorICAgICAgICBFeHRyYWN0IGEgTmF0aXZlSW1hZ2Ugb2YgYW4gSW1h
Z2UuIFRoZSBwbGF0Zm9ybSBQYXR0ZXJucyBkZWFsIHdpdGgKKyAgICAgICAgTmF0aXZlSW1hZ2Vz
IG9ubHkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oOgorICAgICAgICBS
ZW1vdmUgSW1hZ2VIYW5kbGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJu
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYXR0ZXJuOjpQYXR0ZXJuKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OnNldFBh
dHRlcm5TcGFjZVRyYW5zZm9ybSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVy
bi5oOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm46OlBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXR0ZXJuOjplbmNvZGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UGF0dGVybjo6ZGVjb2RlKTogRGVsZXRlZC4KKyAgICAgICAgTWFrZSB0aGUgbmV3
IHN0cnVjdCAnUGFyYW1ldGVycycgaG9sZHMgYWxsIHRoZSBtZW1iZXJzIG90aGVyIHRoYW4gdGhl
CisgICAgICAgIE5hdGl2ZUltYWdlLiBUaGlzIHN0cnVjdCArIFJlbmRlcmluZ1Jlc291cmNlSWRl
bnRpZmVyIG9mIHRoZSBOYXRpdmVJbWFnZQorICAgICAgICB3aWxsIGJlIHJlY29yZGVkIGZvciB0
aGUgc3Ryb2tlUGF0dGVybiBhbmQgdGhlIGZpbGxQYXR0ZXJuLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhaXJvOjpGaWxsU291cmNlOjpGaWxsU291cmNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6
Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jZy9QYXR0ZXJuQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGF0dGVybjo6Y3JlYXRlUGxh
dGZvcm1QYXR0ZXJuIGNvbnN0KToKKyAgICAgICAgVGhlIHBsYXRmb3JtIFBhdHRlcm4gZGVhbHMg
b25seSB3aXRoIE5hdGl2ZUltYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6RGlzcGxheUxpc3Q6OnNob3VsZER1bXBGb3JGbGFncyk6CisgICAgICAgIFNldFN0YXRlOjpz
dGF0ZSgpIGlzIHJlbmFtZWQgdG8gU2V0U3RhdGVJdGVtOjpzdGF0ZUNoYW5nZSgpIHNpbmNlIGl0
IAorICAgICAgICByZXR1cm5zIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbUJ1ZmZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6SXRlbUhhbmRsZTo6YXBwbHkpOgor
ICAgICAgICBTZXRTdGF0ZTo6YXBwbHkoKSBoYXMgdG8gYmUgYSBzcGVjaWFsIGNhc2UuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OlNldFN0YXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6YXBwbHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6Om9wZXJhdG9yPDwpOgorICAgICAgICAoV2ViQ29yZTo6
RGlzcGxheUxpc3Q6OlNldFN0YXRlOjphcHBseSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIEFk
ZCBhIG5ldyBjb25zdHJ1Y3RvciBmb3IgU2V0U3RhdGUgdG8gYmUgdXNlZCBieSB0aGUgZGVjb2Rl
ci4gQWxsIHRoZQorICAgICAgICBtZW1iZXJzIG9mIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdl
IHdpbGwgYmUgY29waWVkIGJ1dCBzdHJva2VQYXR0ZXJuCisgICAgICAgIGFuZCBmaWxsUGF0dGVy
biB3aWxsIGJlIGNyZWF0ZWQgb25seSB3aGVuIHRoZWlyIE5hdGl2ZUltYWdlcyBhcmUgcmVzb2x2
ZWQKKyAgICAgICAgaW4gdGhlIFNldFN0YXRlOjphcHBseSgpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpTZXRTdGF0ZTo6c3RhdGVDaGFuZ2UgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpzdHJva2VQYXR0ZXJuUGFyYW1ldGVy
cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmZpbGxQ
YXR0ZXJuUGFyYW1ldGVycyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6
U2V0U3RhdGU6OnN0cm9rZVBhdHRlcm5JbWFnZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6RGlzcGxheUxpc3Q6OlNldFN0YXRlOjpmaWxsUGF0dGVybkltYWdlSWRlbnRpZmll
ciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmVuY29k
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OmRlY29k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6U2V0U3RhdGU6OnN0YXRlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgU3BlY2lhbGl6ZSB0aGUgZW5jb2RlIGFuZCB0aGUgZGVjb2Rp
bmcgb2Ygc3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4gCisgICAgICAgIGJ5IHVzaW5nIHRo
ZSBQYXR0ZXJuOjpQYXJhbWV0ZXJzIGFuZCB0aGUgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmZXIg
b2YKKyAgICAgICAgdGhlIE5hdGl2ZUltYWdlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpjYWNoZU5hdGl2ZUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6YXBwZW5kU3RhdGVDaGFuZ2VJdGVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd05hdGl2ZUltYWdlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd1BhdHRlcm4pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmg6CisgICAgICAgIENhY2hlIHRoZSBOYXRpdmVJbWFnZXMgb2Ygc3Ryb2tlUGF0dGVybiBh
bmQgZmlsbFBhdHRlcm4uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZXBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlz
dDo6YXBwbHlTZXRTdGF0ZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJl
cGxheWVyOjphcHBseUl0ZW0pOgorICAgICAgICBSZXNvbHZlIHRoZSBOYXRpdmVJbWFnZXMgb2Yg
c3Ryb2tlUGF0dGVybiBhbmQgZmlsbFBhdHRlcm4gZnJvbSB0aGUgY2FjaGVkCisgICAgICAgIE5h
dGl2ZUltYWdlcy4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnBhdHRlcm5Gb3JEZXNjcmlwdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
UmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBhdHRlcm4pOgorICAgICAgICBQYXR0ZXJucyBzaG91bGQg
YmUgY3JlYXRlZCB3aXRoIE5hdGl2ZUltYWdlcy4KKwogMjAyMS0wMi0xMSAgWmFsYW4gQnVqdGFz
ICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0ludGVncmF0aW9uXSBBZGQgc2Ny
b2xsYWJsZSBvdmVyZmxvdyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVjMjI5MjA3ZDNlODIwNzBkYzFk
OGEwYzM4Y2UxZjgzYmI5YWVhNWIuLjM2MjA5NjZmZGI3Njk3MGE3OTBiZDkyMzVhN2VmMGM2ZTQ3
Y2VmYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMTEgIFNhaWQgQWJvdS1I
YWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBQYXR0ZXJuIGhvbGQgYSBO
YXRpdmVJbWFnZSBpbnN0ZWFkIG9mIGFuIEltYWdlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzcKKworICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBGcmFzZXIuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoK
KyAgICAgICAgKElQQzo6QXJndW1lbnRDb2RlcjxJbWFnZUhhbmRsZT46OmVuY29kZSk6IERlbGV0
ZWQuCisgICAgICAgIChJUEM6OkFyZ3VtZW50Q29kZXI8SW1hZ2VIYW5kbGU+OjpkZWNvZGUpOiBE
ZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAg
ICAgRGVsZXRlIHRoZSBlbmNvZGluZyBhbmQgZGVjb2Rpbmcgb2YgSW1hZ2Ugc2luY2UgaXQgaXMg
bm90IHVzZWQgYW55bW9yZQorCiAyMDIxLTAyLTExICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBw
bGUuY29tPgogCiAgICAgICAgIFtNYWNdIEFkZCBFeHBlcmltZW50YWwgT3B1cyBDb2RlYyBzdXBw
b3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCmluZGV4
IDcyZWExYTg3YzZkMGUyNjAxODc1N2VlMmY3YmM2MDQ2M2M5YWE4MDUuLjBhYTFmMTIxYmY2ODU3
Njc0ODRhNWQ2YjJlMjc5MzViZDg2MTY2ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL0NhbnZhc1BhdHRlcm4uY3BwCkBAIC0yOCwxOSArMjgsMTkgQEAKIAogI2luY2x1ZGUgIkRP
TU1hdHJpeDJESW5pdC5oIgogI2luY2x1ZGUgIkRPTU1hdHJpeFJlYWRPbmx5LmgiCi0jaW5jbHVk
ZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgogI2luY2x1ZGUgIlBhdHRlcm4u
aCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1SZWY8Q2FudmFzUGF0dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRlKFJlZjxJbWFnZT4m
JiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCitS
ZWY8Q2FudmFzUGF0dGVybj4gQ2FudmFzUGF0dGVybjo6Y3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4m
JiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pCiB7
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ2FudmFzUGF0dGVybihXVEZNb3ZlKGltYWdlKSwg
cmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pKTsKIH0KIAotQ2FudmFzUGF0dGVybjo6Q2Fu
dmFzUGF0dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
LCBib29sIG9yaWdpbkNsZWFuKQotICAgIDogbV9wYXR0ZXJuKFBhdHRlcm46OmNyZWF0ZShXVEZN
b3ZlKGltYWdlKSwgcmVwZWF0WCwgcmVwZWF0WSkpCitDYW52YXNQYXR0ZXJuOjpDYW52YXNQYXR0
ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiBpbWFnZSwgYm9vbCByZXBlYXRYLCBib29sIHJlcGVhdFks
IGJvb2wgb3JpZ2luQ2xlYW4pCisgICAgOiBtX3BhdHRlcm4oUGF0dGVybjo6Y3JlYXRlKFdURk1v
dmUoaW1hZ2UpLCB7IHJlcGVhdFgsIHJlcGVhdFkgfSkpCiAgICAgLCBtX29yaWdpbkNsZWFuKG9y
aWdpbkNsZWFuKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
Q2FudmFzUGF0dGVybi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUGF0dGVy
bi5oCmluZGV4IGM4YTllM2NlMTYxYmJiOGY5YTFkNzViZTI5ZmRjZWI4MjFjYzk5MzEuLmU0NmQy
MWJjNTEzNWQ5YTc0ZjQ1NzVjOWRkNjVlOWNlY2RjYjhkMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNQYXR0ZXJuLmgKQEAgLTMyLDEzICszMiwxMyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEltYWdlOworY2xhc3MgTmF0aXZlSW1hZ2U7CiBjbGFzcyBQ
YXR0ZXJuOwogc3RydWN0IERPTU1hdHJpeDJESW5pdDsKIAogY2xhc3MgQ2FudmFzUGF0dGVybiA6
IHB1YmxpYyBSZWZDb3VudGVkPENhbnZhc1BhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENhbnZhc1BhdHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9v
bCByZXBlYXRZLCBib29sIG9yaWdpbkNsZWFuKTsKKyAgICBzdGF0aWMgUmVmPENhbnZhc1BhdHRl
cm4+IGNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZ
LCBib29sIG9yaWdpbkNsZWFuKTsKICAgICB+Q2FudmFzUGF0dGVybigpOwogCiAgICAgc3RhdGlj
IGJvb2wgcGFyc2VSZXBldGl0aW9uVHlwZShjb25zdCBTdHJpbmcmLCBib29sJiByZXBlYXRYLCBi
b29sJiByZXBlYXRZKTsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IHNldFRyYW5zZm9ybShET01NYXRyaXgyREluaXQmJik7CiAKIHByaXZhdGU6Ci0gICAg
Q2FudmFzUGF0dGVybihSZWY8SW1hZ2U+JiYsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZLCBi
b29sIG9yaWdpbkNsZWFuKTsKKyAgICBDYW52YXNQYXR0ZXJuKFJlZjxOYXRpdmVJbWFnZT4mJiwg
Ym9vbCByZXBlYXRYLCBib29sIHJlcGVhdFksIGJvb2wgb3JpZ2luQ2xlYW4pOwogCiAgICAgUmVm
PFBhdHRlcm4+IG1fcGF0dGVybjsKICAgICBib29sIG1fb3JpZ2luQ2xlYW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCmluZGV4IDg4MzBjNWRkYWVkYTQ3ZjIyODJlMDRkODE3MjQzNDFmMDRlODljM2Qu
LjlmZjIyYTdjM2Q1ZGVjY2U2YTY0YmFhYTZhY2JlYzExNmIxMDJjMGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwCkBAIC0xOTM3LDcgKzE5MzcsMTUgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZh
c1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgK
ICAgICBpZiAoY2FjaGVkSW1hZ2UtPmltYWdlKCktPmlzU1ZHSW1hZ2UoKSkKICAgICAgICAgb3Jp
Z2luQ2xlYW4gPSBmYWxzZTsKIAotICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0dGVybj4geyBD
YW52YXNQYXR0ZXJuOjpjcmVhdGUoKmNhY2hlZEltYWdlLT5pbWFnZUZvclJlbmRlcmVyKGltYWdl
RWxlbWVudC5yZW5kZXJlcigpKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xlYW4pIH07Cisg
ICAgYXV0byogaW1hZ2UgPSBjYWNoZWRJbWFnZS0+aW1hZ2VGb3JSZW5kZXJlcihpbWFnZUVsZW1l
bnQucmVuZGVyZXIoKSk7CisgICAgaWYgKCFpbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICBhdXRvIG5hdGl2ZUltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlKCk7CisgICAgaWYgKCFuYXRpdmVJbWFnZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisKKyAgICByZXR1cm4gUmVmUHRyPENhbnZh
c1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25O
dWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9OwogfQogCiBFeGNlcHRpb25P
cjxSZWZQdHI8Q2FudmFzUGF0dGVybj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNy
ZWF0ZVBhdHRlcm4oQ2FudmFzQmFzZSYgY2FudmFzLCBib29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0
WSkKQEAgLTE5NDgsOCArMTk1NiwxMiBAQCBFeGNlcHRpb25PcjxSZWZQdHI8Q2FudmFzUGF0dGVy
bj4+IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OmNyZWF0ZVBhdHRlcm4oQwogCiAgICAg
aWYgKCFjb3BpZWRJbWFnZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CisgICAgCisgICAgYXV0byBuYXRpdmVJbWFnZSA9IGNvcGllZEltYWdlLT5uYXRp
dmVJbWFnZSgpOworICAgIGlmICghbmF0aXZlSW1hZ2UpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0
ZXJuPiB7IENhbnZhc1BhdHRlcm46OmNyZWF0ZSgqY29waWVkSW1hZ2UsIHJlcGVhdFgsIHJlcGVh
dFksIGNhbnZhcy5vcmlnaW5DbGVhbigpKSB9OworICAgIHJldHVybiBSZWZQdHI8Q2FudmFzUGF0
dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUobmF0aXZlSW1hZ2UucmVsZWFzZU5vbk51bGwo
KSwgcmVwZWF0WCwgcmVwZWF0WSwgY2FudmFzLm9yaWdpbkNsZWFuKCkpIH07CiB9CiAgICAgCiAj
aWYgRU5BQkxFKFZJREVPKQpAQCAtMTk2NCw3ICsxOTc2LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRy
PENhbnZhc1BhdHRlcm4+PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0
ZXJuKEgKIAogI2lmIFVTRShDRykKICAgICBpZiAoYXV0byBuYXRpdmVJbWFnZSA9IHZpZGVvRWxl
bWVudC5uYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkpCi0gICAgICAgIHJldHVybiBSZWZQdHI8
Q2FudmFzUGF0dGVybj4geyBDYW52YXNQYXR0ZXJuOjpjcmVhdGUoQml0bWFwSW1hZ2U6OmNyZWF0
ZShXVEZNb3ZlKG5hdGl2ZUltYWdlKSksIHJlcGVhdFgsIHJlcGVhdFksIG9yaWdpbkNsZWFuKSB9
OworICAgICAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6
Y3JlYXRlKG5hdGl2ZUltYWdlLnJlbGVhc2VOb25OdWxsKCksIHJlcGVhdFgsIHJlcGVhdFksIG9y
aWdpbkNsZWFuKSB9OwogI2VuZGlmCiAKICAgICBhdXRvIHJlbmRlcmluZ01vZGUgPSAhZHJhd2lu
Z0NvbnRleHQoKSB8fCBkcmF3aW5nQ29udGV4dCgpLT5pc0FjY2VsZXJhdGVkQ29udGV4dCgpID8g
UmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVk
OwpAQCAtMTk3NCw3ICsxOTg2LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPENhbnZhc1BhdHRlcm4+
PiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjcmVhdGVQYXR0ZXJuKEgKIAogICAgIHZp
ZGVvRWxlbWVudC5wYWludEN1cnJlbnRGcmFtZUluQ29udGV4dChpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBzaXplKHZpZGVvRWxlbWVudCkpKTsKICAgICAK
LSAgICByZXR1cm4gUmVmUHRyPENhbnZhc1BhdHRlcm4+IHsgQ2FudmFzUGF0dGVybjo6Y3JlYXRl
KEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBQcmVzZXJ2
ZVJlc29sdXRpb246OlllcykucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3Jp
Z2luQ2xlYW4pIH07CisgICAgcmV0dXJuIFJlZlB0cjxDYW52YXNQYXR0ZXJuPiB7IENhbnZhc1Bh
dHRlcm46OmNyZWF0ZShJbWFnZUJ1ZmZlcjo6c2lua0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGlt
YWdlQnVmZmVyKSkucmVsZWFzZU5vbk51bGwoKSwgcmVwZWF0WCwgcmVwZWF0WSwgb3JpZ2luQ2xl
YW4pIH07CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzLmNwcAppbmRleCAwYzg1ZjhhODM3Njc5NjZiYTI2YjVjMzMzZWQ2MGMwMWE1MGFhMTE2
Li5lNWYyMjEwYWU5ODczM2U5ODRhYjU4NGY2ZjlhM2M4NDdiNWE4MDQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAtMTIwMiw5ICsxMjAyLDEw
IEBAIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWls
ZEFycmF5Rm9yQ2FudmFzR3JhZGllbnQoY29uCiAKIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZh
bHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFycmF5Rm9yQ2FudmFzUGF0dGVybihjb25zdCBD
YW52YXNQYXR0ZXJuJiBjYW52YXNQYXR0ZXJuKQogewotICAgIEltYWdlJiB0aWxlSW1hZ2UgPSBj
YW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2UoKTsKKyAgICBhdXRvJiB0aWxlSW1hZ2Ug
PSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4oKS50aWxlSW1hZ2UoKTsKKyAgICBGbG9hdFJlY3QgcmVj
dCA9IHsgeyB9LCB0aWxlSW1hZ2Uuc2l6ZSgpIH07CiAgICAgYXV0byBpbWFnZUJ1ZmZlciA9IElt
YWdlQnVmZmVyOjpjcmVhdGUodGlsZUltYWdlLnNpemUoKSwgUmVuZGVyaW5nTW9kZTo6VW5hY2Nl
bGVyYXRlZCk7Ci0gICAgaW1hZ2VCdWZmZXItPmNvbnRleHQoKS5kcmF3SW1hZ2UodGlsZUltYWdl
LCBGbG9hdFBvaW50KDAsIDApKTsKKyAgICBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLmRyYXdOYXRp
dmVJbWFnZSh0aWxlSW1hZ2UsIHRpbGVJbWFnZS5zaXplKCksIHJlY3QsIHJlY3QpOwogCiAgICAg
U3RyaW5nIHJlcGVhdDsKICAgICBib29sIHJlcGVhdFggPSBjYW52YXNQYXR0ZXJuLnBhdHRlcm4o
KS5yZXBlYXRYKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuaAppbmRl
eCA0MzZiMzdkNmM4ZWM2ZjAwZjRmZWI0ZGQzNmY0YTI5MjNjN2Y5NmVhLi5kYTAxMGYzZmRjZDA2
ODA1NjI4Yjg2MGNhZTMyYmQ5YmU5YTQ1NDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlLmgKQEAgLTIxMCwxMSArMjEwLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8VGltZXI+IG1fYW5pbWF0aW9uU3RhcnRUaW1lcjsKIH07CiAKLWNsYXNzIEltYWdl
SGFuZGxlIHsKLXB1YmxpYzoKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlOwotfTsKLQogV1RGOjpU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IEltYWdlJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1BhdHRlcm4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGF0dGVybi5jcHAKaW5kZXggNzk2YTA3YzE4NmI2MmZmNGU2YjZlYTI2MTA3ZmY5ZmM0YzQz
OGU3MS4uNjM1MzIzNzY5ZjgwMzNkZTMyOGU4ZDQ0ZTU3OTc1YTFkM2NkNjA2NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5jcHAKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IEVyaWMgU2VpZGVsIDxl
cmljQHdlYmtpdC5vcmc+CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMSwyMyArMzEsMjIgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8UGF0dGVybj4gUGF0dGVybjo6Y3JlYXRlKFJlZjxJ
bWFnZT4mJiB0aWxlSW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9vbCByZXBlYXRZKQorUmVmPFBhdHRl
cm4+IFBhdHRlcm46OmNyZWF0ZShSZWY8TmF0aXZlSW1hZ2U+JiYgdGlsZUltYWdlLCBjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFBhdHRl
cm4oV1RGTW92ZSh0aWxlSW1hZ2UpLCByZXBlYXRYLCByZXBlYXRZKSk7CisgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUGF0dGVybihXVEZNb3ZlKHRpbGVJbWFnZSksIHBhcmFtZXRlcnMpKTsKIH0K
IAotUGF0dGVybjo6UGF0dGVybihSZWY8SW1hZ2U+JiYgaW1hZ2UsIGJvb2wgcmVwZWF0WCwgYm9v
bCByZXBlYXRZKQorUGF0dGVybjo6UGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+JiYgaW1hZ2UsIGNv
bnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgOiBtX3RpbGVJbWFnZShXVEZNb3ZlKGlt
YWdlKSkKLSAgICAsIG1fcmVwZWF0WChyZXBlYXRYKQotICAgICwgbV9yZXBlYXRZKHJlcGVhdFkp
CisgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1ldGVycykKIHsKIH0KIAogUGF0dGVybjo6flBhdHRl
cm4oKSA9IGRlZmF1bHQ7CiAKLXZvaWQgUGF0dGVybjo6c2V0UGF0dGVyblNwYWNlVHJhbnNmb3Jt
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb24pCit2b2lk
IFBhdHRlcm46OnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5TcGFjZVRyYW5zZm9ybSkKIHsKLSAgICBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0
aW9uID0gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CisgICAgbV9wYXJhbWV0ZXJzLnBhdHRl
cm5TcGFjZVRyYW5zZm9ybSA9IHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGF0dGVybi5oCmluZGV4IDJhNTYzZGEyNjE3ZDFi
MDQyNDhiOTBhYjA2MzlkYjJjYWY5YTg4YzAuLmI1MTBhN2RkMGNiMjc4NWE1ZWVkNzkyMGMxOTRh
NzEyNzZkNGY5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1BhdHRlcm4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9QYXR0ZXJu
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYt
MjAyMSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAy
MDA4IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KICAqCkBAIC01Myw2MCArNTMsNjYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0
OwogY2xhc3MgSW1hZ2U7Ci1jbGFzcyBJbWFnZUhhbmRsZTsKIAogY2xhc3MgUGF0dGVybiBmaW5h
bCA6IHB1YmxpYyBSZWZDb3VudGVkPFBhdHRlcm4+IHsKIHB1YmxpYzoKLSAgICBXRUJDT1JFX0VY
UE9SVCBzdGF0aWMgUmVmPFBhdHRlcm4+IGNyZWF0ZShSZWY8SW1hZ2U+JiYgdGlsZUltYWdlLCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgc3RydWN0IFBhcmFtZXRlcnMgeworICAg
ICAgICBQYXJhbWV0ZXJzKGJvb2wgcmVwZWF0WCA9IHRydWUsIGJvb2wgcmVwZWF0WSA9IHRydWUs
IEFmZmluZVRyYW5zZm9ybSBwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0gPSB7IH0pCisgICAgICAgICAg
ICA6IHBhdHRlcm5TcGFjZVRyYW5zZm9ybShwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0pCisgICAgICAg
ICAgICAsIHJlcGVhdFgocmVwZWF0WCkKKyAgICAgICAgICAgICwgcmVwZWF0WShyZXBlYXRZKQor
ICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9p
ZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgT3B0aW9uYWw8UGFyYW1ldGVycz4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAg
QWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICAgICAgYm9vbCByZXBl
YXRYOworICAgICAgICBib29sIHJlcGVhdFk7CisgICAgfTsKKworICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyBSZWY8UGF0dGVybj4gY3JlYXRlKFJlZjxOYXRpdmVJbWFnZT4mJiB0aWxlSW1hZ2Us
IGNvbnN0IFBhcmFtZXRlcnMmID0geyB9KTsKICAgICBXRUJDT1JFX0VYUE9SVCB+UGF0dGVybigp
OwogCi0gICAgSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGlsZUltYWdlLmdl
dCgpOyB9CisgICAgTmF0aXZlSW1hZ2UmIHRpbGVJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGls
ZUltYWdlLmdldCgpOyB9CisgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogCi0gICAgLy8gUGF0dGVybiBzcGFjZSBpcyBhbiBh
YnN0cmFjdCBzcGFjZSB0aGF0IG1hcHMgdG8gdGhlIGRlZmF1bHQgdXNlciBzcGFjZSBieSB0aGUg
dHJhbnNmb3JtYXRpb24gJ3VzZXJTcGFjZVRyYW5zZm9ybWF0aW9uJworICAgIC8vIFBhdHRlcm4g
c3BhY2UgaXMgYW4gYWJzdHJhY3Qgc3BhY2UgdGhhdCBtYXBzIHRvIHRoZSBkZWZhdWx0IHVzZXIg
c3BhY2UgYnkgdGhlIHRyYW5zZm9ybWF0aW9uICd1c2VyU3BhY2VUcmFuc2Zvcm0nCiAjaWYgIVVT
RShESVJFQ1QyRCkKLSAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdXNlclNwYWNlVHJhbnNmb3JtYXRpb24pIGNvbnN0Owor
ICAgIFBsYXRmb3JtUGF0dGVyblB0ciBjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB1c2VyU3BhY2VUcmFuc2Zvcm0pIGNvbnN0OwogI2Vsc2UKLSAgICBQbGF0Zm9y
bVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYs
IGZsb2F0IGFscGhhLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9ybWF0
aW9uKSBjb25zdDsKKyAgICBQbGF0Zm9ybVBhdHRlcm5QdHIgY3JlYXRlUGxhdGZvcm1QYXR0ZXJu
KGNvbnN0IEdyYXBoaWNzQ29udGV4dCYsIGZsb2F0IGFscGhhLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHVzZXJTcGFjZVRyYW5zZm9ybSkgY29uc3Q7CiAjZW5kaWYKLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uKTsKLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBh
dHRlcm5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblNwYWNlVHJhbnNm
b3JtYXRpb247IH07Ci0gICAgYm9vbCByZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRY
OyB9Ci0gICAgYm9vbCByZXBlYXRZKCkgY29uc3QgeyByZXR1cm4gbV9yZXBlYXRZOyB9Ci0KLSAg
ICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7Ci0g
ICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPFJlZjxQYXR0ZXJuPj4g
ZGVjb2RlKERlY29kZXImKTsKKyAgICB2b2lkIHNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mKTsKKyAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5T
cGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy5wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm07IH07CisgICAgYm9vbCByZXBlYXRYKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0
ZXJzLnJlcGVhdFg7IH0KKyAgICBib29sIHJlcGVhdFkoKSBjb25zdCB7IHJldHVybiBtX3BhcmFt
ZXRlcnMucmVwZWF0WTsgfQogCiBwcml2YXRlOgotICAgIFBhdHRlcm4oUmVmPEltYWdlPiYmLCBi
b29sIHJlcGVhdFgsIGJvb2wgcmVwZWF0WSk7CisgICAgUGF0dGVybihSZWY8TmF0aXZlSW1hZ2U+
JiYsIGNvbnN0IFBhcmFtZXRlcnMmKTsKIAotICAgIFJlZjxJbWFnZT4gbV90aWxlSW1hZ2U7Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAgYm9v
bCBtX3JlcGVhdFg7Ci0gICAgYm9vbCBtX3JlcGVhdFk7CisgICAgUmVmPE5hdGl2ZUltYWdlPiBt
X3RpbGVJbWFnZTsKKyAgICBQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKIH07CiAKIHRlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Ci12b2lkIFBhdHRlcm46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAordm9pZCBQYXR0ZXJuOjpQYXJhbWV0ZXJzOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKLSAgICBJbWFnZUhhbmRsZSBpbWFnZUhhbmRsZTsKLSAgICBpbWFnZUhhbmRsZS5p
bWFnZSA9IG1fdGlsZUltYWdlLnB0cigpOwotICAgIGVuY29kZXIgPDwgaW1hZ2VIYW5kbGU7Ci0g
ICAgZW5jb2RlciA8PCBtX3BhdHRlcm5TcGFjZVRyYW5zZm9ybWF0aW9uOwotICAgIGVuY29kZXIg
PDwgbV9yZXBlYXRYOwotICAgIGVuY29kZXIgPDwgbV9yZXBlYXRZOworICAgIGVuY29kZXIgPDwg
cGF0dGVyblNwYWNlVHJhbnNmb3JtOworICAgIGVuY29kZXIgPDwgcmVwZWF0WDsKKyAgICBlbmNv
ZGVyIDw8IHJlcGVhdFk7CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+Ci1PcHRpb25hbDxS
ZWY8UGF0dGVybj4+IFBhdHRlcm46OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorT3B0aW9uYWw8
UGF0dGVybjo6UGFyYW1ldGVycz4gUGF0dGVybjo6UGFyYW1ldGVyczo6ZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiB7Ci0gICAgT3B0aW9uYWw8SW1hZ2VIYW5kbGU+IGltYWdlSGFuZGxlOwotICAg
IGRlY29kZXIgPj4gaW1hZ2VIYW5kbGU7Ci0gICAgaWYgKCFpbWFnZUhhbmRsZSkKKyAgICBPcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICBkZWNvZGVy
ID4+IHBhdHRlcm5TcGFjZVRyYW5zZm9ybTsKKyAgICBpZiAoIXBhdHRlcm5TcGFjZVRyYW5zZm9y
bSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAotICAgIE9wdGlvbmFsPEFmZmluZVRy
YW5zZm9ybT4gcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247Ci0gICAgZGVjb2RlciA+PiBwYXR0
ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbjsKLSAgICBpZiAoIXBhdHRlcm5TcGFjZVRyYW5zZm9ybWF0
aW9uKQorICAgIE9wdGlvbmFsPGJvb2w+IHJlcGVhdFk7CisgICAgZGVjb2RlciA+PiByZXBlYXRZ
OworICAgIGlmICghcmVwZWF0WSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
IE9wdGlvbmFsPGJvb2w+IHJlcGVhdFg7CkBAIC0xMTQsMTUgKzEyMCw3IEBAIE9wdGlvbmFsPFJl
ZjxQYXR0ZXJuPj4gUGF0dGVybjo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgaWYgKCFy
ZXBlYXRYKQogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgT3B0aW9uYWw8Ym9v
bD4gcmVwZWF0WTsKLSAgICBkZWNvZGVyID4+IHJlcGVhdFk7Ci0gICAgaWYgKCFyZXBlYXRZKQot
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwotCi0gICAgYXV0byBwYXR0ZXJuID0gUGF0dGVy
bjo6Y3JlYXRlKGltYWdlSGFuZGxlLT5pbWFnZS5yZWxlYXNlTm9uTnVsbCgpLCAqcmVwZWF0WCwg
KnJlcGVhdFkpOwotICAgIHBhdHRlcm4tPnNldFBhdHRlcm5TcGFjZVRyYW5zZm9ybSgqcGF0dGVy
blNwYWNlVHJhbnNmb3JtYXRpb24pOwotICAgIHJldHVybiBwYXR0ZXJuOworICAgIHJldHVybiB7
eyAqcmVwZWF0WCwgKnJlcGVhdFksICpwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0gfX07CiB9CiAKIH0g
Ly9uYW1lc3BhY2UKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9PcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAKaW5kZXggNzMyMGRhMWNiZmU5Mjg1ZmQx
MjZmMDAyNDE0MzhjNGRiYTM5ZWNjOS4uN2ZhZTc3N2MzOTY2YjRjNDg2ZGUyMjMyYjE5MTEzMjMx
ZmQ5MmRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9PcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCkBAIC01NjcsNyArNTY3LDcgQEAgRmlsbFNv
dXJjZTo6RmlsbFNvdXJjZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUpCiAgICAg
ICAgIHBhdHRlcm4ub2JqZWN0ID0gYWRvcHRSZWYoc3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBs
YXRmb3JtUGF0dGVybihBZmZpbmVUcmFuc2Zvcm0oKSkpOwogCiAgICAgICAgIGF1dG8mIHBhdHRl
cm5JbWFnZSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT50aWxlSW1hZ2UoKTsKLSAgICAgICAgcGF0dGVy
bi5zaXplID0gRmxvYXRTaXplKHBhdHRlcm5JbWFnZS53aWR0aCgpLCBwYXR0ZXJuSW1hZ2UuaGVp
Z2h0KCkpOworICAgICAgICBwYXR0ZXJuLnNpemUgPSBwYXR0ZXJuSW1hZ2Uuc2l6ZSgpOwogICAg
ICAgICBwYXR0ZXJuLnRyYW5zZm9ybSA9IHN0YXRlLmZpbGxQYXR0ZXJuLT5wYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRYID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFgoKTsKICAgICAgICAgcGF0dGVybi5yZXBlYXRZID0gc3RhdGUuZmlsbFBhdHRlcm4t
PnJlcGVhdFkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL1BhdHRlcm5DYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9QYXR0ZXJuQ2Fpcm8uY3BwCmluZGV4IDU2MGY3NDdhOGZiNjQ4MWJlNGEzMDE4NTg1
MDBhYTlmYTE2MGY3ODYuLjY4ZGFiYWY5OGFjYTlkMWNmYjcxZTE2NTIyYjlkZWIyNTgwN2ZmMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1BhdHRl
cm5DYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
UGF0dGVybkNhaXJvLmNwcApAQCAtMzUsMTggKzM1LDE4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2Fpcm9fcGF0dGVybl90KiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJikgY29uc3QKIHsKLSAgICBhdXRvIG5hdGl2ZUltYWdlID0gdGlsZUlt
YWdlKCkubmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdl
KQorICAgIGF1dG8gcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRmb3JtSW1hZ2UoKTsK
KyAgICBpZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
Y2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZh
Y2UobmF0aXZlSW1hZ2UtPnBsYXRmb3JtSW1hZ2UoKS5nZXQoKSk7CisgICAgY2Fpcm9fcGF0dGVy
bl90KiBwYXR0ZXJuID0gY2Fpcm9fcGF0dGVybl9jcmVhdGVfZm9yX3N1cmZhY2UocGxhdGZvcm1J
bWFnZS5nZXQoKSk7CiAKICAgICAvLyBjYWlybyBtZXJnZXMgcGF0dGVyIHNwYWNlIGFuZCB1c2Vy
IHNwYWNlIGl0c2VsZgotICAgIGNhaXJvX21hdHJpeF90IG1hdHJpeCA9IHRvQ2Fpcm9NYXRyaXgo
bV9wYXR0ZXJuU3BhY2VUcmFuc2Zvcm1hdGlvbik7CisgICAgY2Fpcm9fbWF0cml4X3QgbWF0cml4
ID0gdG9DYWlyb01hdHJpeChwYXR0ZXJuU3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgY2Fpcm9fbWF0
cml4X2ludmVydCgmbWF0cml4KTsKICAgICBjYWlyb19wYXR0ZXJuX3NldF9tYXRyaXgocGF0dGVy
biwgJm1hdHJpeCk7CiAKLSAgICBpZiAobV9yZXBlYXRYIHx8IG1fcmVwZWF0WSkKKyAgICBpZiAo
cmVwZWF0WCgpIHx8IHJlcGVhdFkoKSkKICAgICAgICAgY2Fpcm9fcGF0dGVybl9zZXRfZXh0ZW5k
KHBhdHRlcm4sIENBSVJPX0VYVEVORF9SRVBFQVQpOwogICAgIHJldHVybiBwYXR0ZXJuOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL1BhdHRlcm5DRy5jcHAK
aW5kZXggNjk1NGM1NjY1NzBhZDdhZTZjMWU3NjBmMDc4N2QzNzcwYWNhYTY5NC4uZjFiOWUzYTdj
MDU1NjlhOTg5MWI2OThkMjgzYWI1Mzk3YzcyNWY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvUGF0dGVybkNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9QYXR0ZXJuQ0cuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBFcmljIFNlaWRlbCA8ZXJpY0B3ZWJraXQub3Jn
PgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTUsMjQgKzU1LDIxIEBAIHN0YXRpYyB2b2lkIHBhdHRl
cm5SZWxlYXNlQ2FsbGJhY2sodm9pZCogaW5mbykKICAgICB9KTsKIH0KIAotQ0dQYXR0ZXJuUmVm
IFBhdHRlcm46OmNyZWF0ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVz
ZXJTcGFjZVRyYW5zZm9ybWF0aW9uKSBjb25zdAorQ0dQYXR0ZXJuUmVmIFBhdHRlcm46OmNyZWF0
ZVBsYXRmb3JtUGF0dGVybihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHVzZXJTcGFjZVRyYW5zZm9y
bSkgY29uc3QKIHsKLSAgICBGbG9hdFJlY3QgdGlsZVJlY3QgPSB0aWxlSW1hZ2UoKS5yZWN0KCk7
CisgICAgRmxvYXRSZWN0IHRpbGVSZWN0ID0geyB7IH0sIHRpbGVJbWFnZSgpLnNpemUoKSB9Owog
Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zv
cm1hdGlvbiAqIG1fcGF0dGVyblNwYWNlVHJhbnNmb3JtYXRpb247CisgICAgQWZmaW5lVHJhbnNm
b3JtIHBhdHRlcm5UcmFuc2Zvcm0gPSB1c2VyU3BhY2VUcmFuc2Zvcm0gKiBwYXR0ZXJuU3BhY2VU
cmFuc2Zvcm0oKTsKICAgICBwYXR0ZXJuVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybSgxLCAtMSk7
CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoMCwgLXRpbGVSZWN0LmhlaWdodCgpKTsK
IAotICAgIFBsYXRmb3JtSW1hZ2VQdHIgcGxhdGZvcm1JbWFnZTsKLSAgICBpZiAoYXV0byBuYXRp
dmVJbWFnZSA9IHRpbGVJbWFnZSgpLm5hdGl2ZUltYWdlKCkpCi0gICAgICAgIHBsYXRmb3JtSW1h
Z2UgPSBuYXRpdmVJbWFnZS0+cGxhdGZvcm1JbWFnZSgpOwotICAgIAorICAgIFBsYXRmb3JtSW1h
Z2VQdHIgcGxhdGZvcm1JbWFnZSA9IHRpbGVJbWFnZSgpLnBsYXRmb3JtSW1hZ2UoKTsKICAgICBp
ZiAoIXBsYXRmb3JtSW1hZ2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgLy8gSWYg
d2UncmUgcmVwZWF0aW5nIGluIGJvdGggZGlyZWN0aW9ucywgd2UgY2FuIHVzZSBpbWFnZS1iYWNr
ZWQgcGF0dGVybnMKICAgICAvLyBpbnN0ZWFkIG9mIGN1c3RvbSBwYXR0ZXJucywgYW5kIGF2b2lk
IHRpbGluZy1lZGdlIHBpeGVsIGNyYWNrcy4KLSAgICBpZiAobV9yZXBlYXRYICYmIG1fcmVwZWF0
WSkKKyAgICBpZiAocmVwZWF0WCgpICYmIHJlcGVhdFkoKSkKICAgICAgICAgcmV0dXJuIENHUGF0
dGVybkNyZWF0ZVdpdGhJbWFnZTIocGxhdGZvcm1JbWFnZS5nZXQoKSwgcGF0dGVyblRyYW5zZm9y
bSwga0NHUGF0dGVyblRpbGluZ0NvbnN0YW50U3BhY2luZyk7CiAKICAgICAvLyBJZiBGTFRfTUFY
IHNob3VsZCBhbHNvIGJlIHVzZWQgZm9yIHhTdGVwIG9yIHlTdGVwLCBub3RoaW5nIGlzIHJlbmRl
cmVkLiBVc2luZyBmcmFjdGlvbnMgb2YgRkxUX01BWCBhbHNvCkBAIC04MCw4ICs3Nyw4IEBAIENH
UGF0dGVyblJlZiBQYXR0ZXJuOjpjcmVhdGVQbGF0Zm9ybVBhdHRlcm4oY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiB1c2VyU3BhY2VUcmFuCiAgICAgLy8gSU5UX01BWCBpcyBhbG1vc3QgY29ycmVjdCwg
YnV0IHRoZXJlIHNlZW1zIHRvIGJlIHNvbWUgbnVtYmVyIHdyYXBwaW5nIG9jY3VycmluZyBtYWtp
bmcgdGhlIGZpbGwKICAgICAvLyBwYXR0ZXJuIGlzIG5vdCBmaWxsZWQgY29ycmVjdGx5LgogICAg
IC8vIFRvIG1ha2UgZXJyb3Igb2YgZmxvYXRpbmcgcG9pbnQgbGVzcyB0aGFuIDAuNSwgd2UgdXNl
IHRoZSBoYWxmIG9mIHRoZSBudW1iZXIgb2YgbWFudGlzc2Egb2YgZmxvYXQgKDEgPDwgMjIpLgot
ICAgIENHRmxvYXQgeFN0ZXAgPSBtX3JlcGVhdFggPyB0aWxlUmVjdC53aWR0aCgpIDogKDEgPDwg
MjIpOwotICAgIENHRmxvYXQgeVN0ZXAgPSBtX3JlcGVhdFkgPyB0aWxlUmVjdC5oZWlnaHQoKSA6
ICgxIDw8IDIyKTsKKyAgICBDR0Zsb2F0IHhTdGVwID0gcmVwZWF0WCgpID8gdGlsZVJlY3Qud2lk
dGgoKSA6ICgxIDw8IDIyKTsKKyAgICBDR0Zsb2F0IHlTdGVwID0gcmVwZWF0WSgpID8gdGlsZVJl
Y3QuaGVpZ2h0KCkgOiAoMSA8PCAyMik7CiAKICAgICAvLyBUaGUgcGF0dGVybiB3aWxsIHJlbGVh
c2UgdGhlIENHSW1hZ2VSZWYgd2hlbiBpdCdzIGRvbmUgcmVuZGVyaW5nIGluIHBhdHRlcm5SZWxl
YXNlQ2FsbGJhY2sKICAgICBDR0ltYWdlUmVmIGltYWdlID0gcGxhdGZvcm1JbWFnZS5sZWFrUmVm
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmNwcAppbmRleCBkMTUzZGZhNDVjMjFhZDg3M2U0ZDQ4
NDY3MWYzZDA0YWNiNzQ4NTRiLi5lMDc5ZjczMGJlODU5YWMzYjA1Yjk0MjljMzBlODM2MWQxNDNh
ZWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdC5jcHAKQEAgLTkxLDEwICs5MSwxMCBAQCBib29s
IERpc3BsYXlMaXN0OjpzaG91bGREdW1wRm9yRmxhZ3MoQXNUZXh0RmxhZ3MgZmxhZ3MsIEl0ZW1I
YW5kbGUgaXRlbSkKICAgICAgICAgaWYgKCEoZmxhZ3MgJiBBc1RleHRGbGFnOjpJbmNsdWRlc1Bs
YXRmb3JtT3BlcmF0aW9ucykpIHsKICAgICAgICAgICAgIGNvbnN0IGF1dG8mIHN0YXRlSXRlbSA9
IGl0ZW0uZ2V0PFNldFN0YXRlPigpOwogICAgICAgICAgICAgLy8gRklYTUU6IGZvciBub3csIG9u
bHkgZHJvcCB0aGUgaXRlbSBpZiB0aGUgb25seSBzdGF0ZS1jaGFuZ2UgZmxhZ3MgYXJlIHBsYXRm
b3JtLXNwZWNpZmljLgotICAgICAgICAgICAgaWYgKHN0YXRlSXRlbS5zdGF0ZSgpLm1fY2hhbmdl
RmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
c0NoYW5nZSkKKyAgICAgICAgICAgIGlmIChzdGF0ZUl0ZW0uc3RhdGVDaGFuZ2UoKS5tX2NoYW5n
ZUZsYWdzID09IEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTaG91bGRTdWJwaXhlbFF1YW50aXplRm9u
dHNDaGFuZ2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBp
ZiAoc3RhdGVJdGVtLnN0YXRlKCkubV9jaGFuZ2VGbGFncyA9PSBHcmFwaGljc0NvbnRleHRTdGF0
ZTo6U2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzQ2hhbmdlKQorICAgICAgICAgICAgaWYgKHN0
YXRlSXRlbS5zdGF0ZUNoYW5nZSgpLm1fY2hhbmdlRmxhZ3MgPT0gR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250c0NoYW5nZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVt
QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCmluZGV4IDUwYzhkOGY3NTc3YTE2NzA1ZWNmODU1
YWQxNjk4MThiNmRmOThiYmEuLjM5NWZlNjcxY2NmNzQyMmExNjU2NzZjNzljZDFlMDllZjU1OWE5
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1CdWZmZXIuY3BwCkBAIC04
OSw3ICs4OSw3IEBAIHZvaWQgSXRlbUhhbmRsZTo6YXBwbHkoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0KQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgSXRlbVR5cGU6OlNldFN0YXRl
OiB7Ci0gICAgICAgIGdldDxTZXRTdGF0ZT4oKS5hcHBseShjb250ZXh0KTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBJdGVt
VHlwZTo6U2V0TGluZUNhcDogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCmlu
ZGV4IDIxM2RiOWM4Y2Y0MmVjMWFlMmQxMzM5Mzc1ZDlmNTYzMGU3NmQ3NDMuLmY5MDA5MWYxMmQy
NWJiN2M1NjA5Mjc1ZDAxNGRlYTFhYjEwMjkzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RJdGVtcy5jcHAKQEAgLTIwOSwyMyArMjA5LDI5IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTZXRTdHJva2VUaGlja25lc3MmIHN0YXRlKQog
fQogCiBTZXRTdGF0ZTo6U2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBmbGFncykKLSAgICA6IG1f
c3RhdGUoc3RhdGUsIGZsYWdzKQorICAgIDogbV9zdGF0ZUNoYW5nZShzdGF0ZSwgZmxhZ3MpCiB7
CiB9CiAKLVNldFN0YXRlOjpTZXRTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5n
ZSYgc3RhdGVDaGFuZ2UpCi0gICAgOiBtX3N0YXRlKHN0YXRlQ2hhbmdlKQorU2V0U3RhdGU6OlNl
dFN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBzdGF0ZUNoYW5nZSwgY29u
c3QgUGF0dGVybkRhdGEmIHN0cm9rZVBhdHRlcm4sIGNvbnN0IFBhdHRlcm5EYXRhJiBmaWxsUGF0
dGVybikKKyAgICA6IG1fc3RhdGVDaGFuZ2Uoc3RhdGVDaGFuZ2UpCisgICAgLCBtX3N0cm9rZVBh
dHRlcm4oc3Ryb2tlUGF0dGVybikKKyAgICAsIG1fZmlsbFBhdHRlcm4oZmlsbFBhdHRlcm4pCiB7
CiB9CiAKLXZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29u
c3QKK3ZvaWQgU2V0U3RhdGU6OmFwcGx5KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTmF0aXZl
SW1hZ2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2Up
CiB7Ci0gICAgbV9zdGF0ZS5hcHBseShjb250ZXh0KTsKKyAgICBpZiAobV9zdGF0ZUNoYW5nZS5t
X2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VQYXR0ZXJu
Q2hhbmdlKSAmJiBzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgICAgIG1fc3RhdGVDaGFuZ2UubV9z
dGF0ZS5zdHJva2VQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKnN0cm9rZVBhdHRl
cm5JbWFnZSksIG1fc3Ryb2tlUGF0dGVybi5wYXJhbWV0ZXJzKTsKKyAgICBpZiAobV9zdGF0ZUNo
YW5nZS5tX2NoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0
dGVybkNoYW5nZSkgJiYgZmlsbFBhdHRlcm5JbWFnZSkKKyAgICAgICAgbV9zdGF0ZUNoYW5nZS5t
X3N0YXRlLmZpbGxQYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKG1ha2VSZWYoKmZpbGxQYXR0ZXJu
SW1hZ2UpLCBtX2ZpbGxQYXR0ZXJuLnBhcmFtZXRlcnMpOworICAgIG1fc3RhdGVDaGFuZ2UuYXBw
bHkoY29udGV4dCk7CiB9CiAKIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mIHRzLCBjb25zdCBTZXRTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgdHMgPDwgc3RhdGUuc3RhdGUo
KTsKKyAgICB0cyA8PCBzdGF0ZS5zdGF0ZUNoYW5nZSgpOwogICAgIHJldHVybiB0czsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggNGNmYmQ4OWIwNDY1OTVmMjgxZDQx
ZTIxMjA1YTdmZjNhNmE2MzY3ZS4uMmMyMmViYTIyMWQ5NGVmZDYwYzRlNTI0YmEyZjRiY2Y5NGMx
MjY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxh
eWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBAIC0yNTQsOSArMjU0LDEy
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgaXNEcmF3aW5nSXRlbSA9IGZh
bHNlOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyk7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVDaGFuZ2UmKTsK
LSAgICAKLSAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNoYW5nZSYgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9CisKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZUNo
YW5nZSYgc3RhdGVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlQ2hhbmdlOyB9CisgICAg
Y29uc3QgUGF0dGVybjo6UGFyYW1ldGVycyYgc3Ryb2tlUGF0dGVyblBhcmFtZXRlcnMoKSBjb25z
dCB7IHJldHVybiBtX3N0cm9rZVBhdHRlcm4ucGFyYW1ldGVyczsgfQorICAgIGNvbnN0IFBhdHRl
cm46OlBhcmFtZXRlcnMmIGZpbGxQYXR0ZXJuUGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1f
ZmlsbFBhdHRlcm4ucGFyYW1ldGVyczsgfQorICAgIFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmll
ciBzdHJva2VQYXR0ZXJuSW1hZ2VJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9zdHJva2VQ
YXR0ZXJuLnRpbGVJbWFnZUlkZW50aWZpZXI7IH0KKyAgICBSZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIgZmlsbFBhdHRlcm5JbWFnZUlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbGxQ
YXR0ZXJuLnRpbGVJbWFnZUlkZW50aWZpZXI7IH0KIAogICAgIHN0YXRpYyB2b2lkIGJ1aWxkZXJT
dGF0ZShHcmFwaGljc0NvbnRleHQmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIEdyYXBo
aWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzKTsKIApAQCAtMjY1LDE5ICsyNjgsMjgg
QEAgcHVibGljOgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8
U2V0U3RhdGU+IGRlY29kZShEZWNvZGVyJik7CiAKLSAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29u
dGV4dCYpIGNvbnN0OworICAgIHZvaWQgYXBwbHkoR3JhcGhpY3NDb250ZXh0JiwgTmF0aXZlSW1h
Z2UqIHN0cm9rZVBhdHRlcm5JbWFnZSwgTmF0aXZlSW1hZ2UqIGZpbGxQYXR0ZXJuSW1hZ2UpOwog
CiBwcml2YXRlOgotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlIG1fc3RhdGU7CisgICAg
c3RydWN0IFBhdHRlcm5EYXRhIHsKKyAgICAgICAgUmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
IHRpbGVJbWFnZUlkZW50aWZpZXI7CisgICAgICAgIFBhdHRlcm46OlBhcmFtZXRlcnMgcGFyYW1l
dGVyczsKKyAgICB9OworCisgICAgV0VCQ09SRV9FWFBPUlQgU2V0U3RhdGUoY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGVDaGFuZ2UmLCBjb25zdCBQYXR0ZXJuRGF0YSYgc3Ryb2tlUGF0dGVybiwg
Y29uc3QgUGF0dGVybkRhdGEmIGZpbGxQYXR0ZXJuKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0
YXRlQ2hhbmdlIG1fc3RhdGVDaGFuZ2U7CisgICAgUGF0dGVybkRhdGEgbV9zdHJva2VQYXR0ZXJu
OworICAgIFBhdHRlcm5EYXRhIG1fZmlsbFBhdHRlcm47CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPgogdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiB7
Ci0gICAgYXV0byBjaGFuZ2VGbGFncyA9IG1fc3RhdGUubV9jaGFuZ2VGbGFnczsKKyAgICBhdXRv
IGNoYW5nZUZsYWdzID0gbV9zdGF0ZUNoYW5nZS5tX2NoYW5nZUZsYWdzOwogICAgIGVuY29kZXIg
PDwgY2hhbmdlRmxhZ3M7CiAKLSAgICBhdXRvJiBzdGF0ZSA9IG1fc3RhdGUubV9zdGF0ZTsKKyAg
ICBhdXRvJiBzdGF0ZSA9IG1fc3RhdGVDaGFuZ2UubV9zdGF0ZTsKIAogICAgIGlmIChjaGFuZ2VG
bGFncy5jb250YWlucyhHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3Ryb2tlR3JhZGllbnRDaGFuZ2Up
KSB7CiAgICAgICAgIGVuY29kZXIgPDwgISFzdGF0ZS5zdHJva2VHcmFkaWVudDsKQEAgLTI4Nyw4
ICsyOTksMTAgQEAgdm9pZCBTZXRTdGF0ZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAKICAgICBpZiAoY2hhbmdlRmxhZ3MuY29udGFpbnMoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0
cm9rZVBhdHRlcm5DaGFuZ2UpKSB7CiAgICAgICAgIGVuY29kZXIgPDwgISFzdGF0ZS5zdHJva2VQ
YXR0ZXJuOwotICAgICAgICBpZiAoc3RhdGUuc3Ryb2tlUGF0dGVybikKLSAgICAgICAgICAgIGVu
Y29kZXIgPDwgKnN0YXRlLnN0cm9rZVBhdHRlcm47CisgICAgICAgIGlmIChhdXRvJiBwYXR0ZXJu
ID0gc3RhdGUuc3Ryb2tlUGF0dGVybikgeworICAgICAgICAgICAgZW5jb2RlciA8PCBwYXR0ZXJu
LT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIoKTsKKyAgICAgICAgICAg
IGVuY29kZXIgPDwgcGF0dGVybi0+cGFyYW1ldGVycygpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsR3Jh
ZGllbnRDaGFuZ2UpKSB7CkBAIC0yOTksOCArMzEzLDEwIEBAIHZvaWQgU2V0U3RhdGU6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5z
KEdyYXBoaWNzQ29udGV4dFN0YXRlOjpGaWxsUGF0dGVybkNoYW5nZSkpIHsKICAgICAgICAgZW5j
b2RlciA8PCAhIXN0YXRlLmZpbGxQYXR0ZXJuOwotICAgICAgICBpZiAoc3RhdGUuZmlsbFBhdHRl
cm4pCi0gICAgICAgICAgICBlbmNvZGVyIDw8ICpzdGF0ZS5maWxsUGF0dGVybjsKKyAgICAgICAg
aWYgKGF1dG8mIHBhdHRlcm4gPSBzdGF0ZS5maWxsUGF0dGVybikgeworICAgICAgICAgICAgZW5j
b2RlciA8PCBwYXR0ZXJuLT50aWxlSW1hZ2UoKS5yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIo
KTsKKyAgICAgICAgICAgIGVuY29kZXIgPDwgcGF0dGVybi0+cGFyYW1ldGVycygpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgaWYgKGNoYW5nZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4
dFN0YXRlOjpTaGFkb3dDaGFuZ2UpKSB7CkBAIC0zNjYsNiArMzgyLDkgQEAgT3B0aW9uYWw8U2V0
U3RhdGU+IFNldFN0YXRlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZUNoYW5nZSBzdGF0ZUNoYW5nZTsKICAgICBzdGF0ZUNoYW5nZS5tX2NoYW5nZUZs
YWdzID0gKmNoYW5nZUZsYWdzOwogCisgICAgUGF0dGVybkRhdGEgc3Ryb2tlUGF0dGVybjsKKyAg
ICBQYXR0ZXJuRGF0YSBmaWxsUGF0dGVybjsKKwogICAgIGlmIChzdGF0ZUNoYW5nZS5tX2NoYW5n
ZUZsYWdzLmNvbnRhaW5zKEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdHJva2VHcmFkaWVudENoYW5n
ZSkpIHsKICAgICAgICAgT3B0aW9uYWw8Ym9vbD4gaGFzU3Ryb2tlR3JhZGllbnQ7CiAgICAgICAg
IGRlY29kZXIgPj4gaGFzU3Ryb2tlR3JhZGllbnQ7CkBAIC0zODgsMTEgKzQwNywxNyBAQCBPcHRp
b25hbDxTZXRTdGF0ZT4gU2V0U3RhdGU6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBpZiAoaGFzU3Ryb2tlUGF0dGVy
bi52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0cm9rZVBhdHRlcm4gPSBQYXR0ZXJuOjpk
ZWNvZGUoZGVjb2Rlcik7Ci0gICAgICAgICAgICBpZiAoIXN0cm9rZVBhdHRlcm4pCisgICAgICAg
ICAgICBPcHRpb25hbDxSZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXI+IHJlbmRlcmluZ1Jlc291
cmNlSWRlbnRpZmllcjsKKyAgICAgICAgICAgIGRlY29kZXIgPj4gcmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyOworICAgICAgICAgICAgaWYgKCFyZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgT3B0aW9uYWw8UGF0dGVybjo6UGFyYW1ldGVycz4gcGFyYW1ldGVyczsKKyAgICAg
ICAgICAgIGRlY29kZXIgPj4gcGFyYW1ldGVyczsKKyAgICAgICAgICAgIGlmICghcGFyYW1ldGVy
cykKICAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCi0gICAgICAgICAgICBz
dGF0ZUNoYW5nZS5tX3N0YXRlLnN0cm9rZVBhdHRlcm4gPSBXVEZNb3ZlKCpzdHJva2VQYXR0ZXJu
KTsKKyAgICAgICAgICAgIHN0cm9rZVBhdHRlcm4gPSB7ICpyZW5kZXJpbmdSZXNvdXJjZUlkZW50
aWZpZXIsICpwYXJhbWV0ZXJzIH07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQxOCwxMSArNDQz
LDE3IEBAIE9wdGlvbmFsPFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29k
ZXIpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIGlmIChoYXNG
aWxsUGF0dGVybi52YWx1ZSgpKSB7Ci0gICAgICAgICAgICBhdXRvIGZpbGxQYXR0ZXJuID0gUGF0
dGVybjo6ZGVjb2RlKGRlY29kZXIpOwotICAgICAgICAgICAgaWYgKCFmaWxsUGF0dGVybikKKyAg
ICAgICAgICAgIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gcmVuZGVyaW5n
UmVzb3VyY2VJZGVudGlmaWVyOworICAgICAgICAgICAgZGVjb2RlciA+PiByZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXI7CisgICAgICAgICAgICBpZiAoIXJlbmRlcmluZ1Jlc291cmNlSWRlbnRp
ZmllcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgICAgICAg
ICBPcHRpb25hbDxQYXR0ZXJuOjpQYXJhbWV0ZXJzPiBwYXJhbWV0ZXJzOworICAgICAgICAgICAg
ZGVjb2RlciA+PiBwYXJhbWV0ZXJzOworICAgICAgICAgICAgaWYgKCFwYXJhbWV0ZXJzKQogICAg
ICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKLSAgICAgICAgICAgIHN0YXRlQ2hh
bmdlLm1fc3RhdGUuZmlsbFBhdHRlcm4gPSBXVEZNb3ZlKCpmaWxsUGF0dGVybik7CisgICAgICAg
ICAgICBmaWxsUGF0dGVybiA9IHsgKnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllciwgKnBhcmFt
ZXRlcnMgfTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTgzLDcgKzYxNCw3IEBAIE9wdGlvbmFs
PFNldFN0YXRlPiBTZXRTdGF0ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgICAgIHN0
YXRlQ2hhbmdlLm1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMgPSAqc2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXM7CiAgICAgfQogCi0gICAgcmV0dXJuIHsgc3RhdGVDaGFuZ2UgfTsKKyAgICBy
ZXR1cm4ge3sgc3RhdGVDaGFuZ2UsIHN0cm9rZVBhdHRlcm4sIGZpbGxQYXR0ZXJuIH19OwogfQog
CiBjbGFzcyBTZXRMaW5lQ2FwIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcAppbmRleCA0Y2RjM2IwYWVjYzk0ZGNiMTY2NmYwOTkyOTQxNjY1MTcyNGIzYTNhLi45OWY3
MTZiYWU1NmJlOWE5ZTQyZjBiYmJiMzRlMjYzN2JjZmEwZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC04NSw5ICs4NSwyMCBAQCBzdGF0aWMgYm9vbCBj
b250YWluc09ubHlJbmxpbmVTdGF0ZUNoYW5nZXMoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGVD
aGFuZ2UmIGNoYQogICAgIHJldHVybiB0cnVlOwogfQogCit2b2lkIFJlY29yZGVyOjpjYWNoZU5h
dGl2ZUltYWdlKE5hdGl2ZUltYWdlJiBpbWFnZSkKK3sKKyAgICBpZiAobV9kZWxlZ2F0ZSkKKyAg
ICAgICAgbV9kZWxlZ2F0ZS0+Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7CisgICAgbV9kaXNwbGF5
TGlzdC5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKK30KKwogdm9pZCBSZWNvcmRlcjo6YXBwZW5k
U3RhdGVDaGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiBjaGFuZ2Vz
LCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFncyBjaGFuZ2VGbGFncykKIHsK
ICAgICBpZiAoIWNvbnRhaW5zT25seUlubGluZVN0YXRlQ2hhbmdlcyhjaGFuZ2VzLCBjaGFuZ2VG
bGFncykpIHsKKyAgICAgICAgaWYgKGF1dG8gcGF0dGVybiA9IGNoYW5nZXMubV9zdGF0ZS5zdHJv
a2VQYXR0ZXJuKQorICAgICAgICAgICAgY2FjaGVOYXRpdmVJbWFnZShwYXR0ZXJuLT50aWxlSW1h
Z2UoKSk7CisgICAgICAgIGlmIChhdXRvIHBhdHRlcm4gPSBjaGFuZ2VzLm1fc3RhdGUuZmlsbFBh
dHRlcm4pCisgICAgICAgICAgICBjYWNoZU5hdGl2ZUltYWdlKHBhdHRlcm4tPnRpbGVJbWFnZSgp
KTsKICAgICAgICAgYXBwZW5kPFNldFN0YXRlPihjaGFuZ2VzLm1fc3RhdGUsIGNoYW5nZUZsYWdz
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE4MywxNyArMTk0LDEzIEBAIHZvaWQgUmVj
b3JkZXI6OmRyYXdJbWFnZUJ1ZmZlcihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYgaW1hZ2VCdWZmZXIs
IGNvbnN0IEZsb2F0UmVjCiAKIHZvaWQgUmVjb3JkZXI6OmRyYXdOYXRpdmVJbWFnZShOYXRpdmVJ
bWFnZSYgaW1hZ2UsIGNvbnN0IEZsb2F0U2l6ZSYgaW1hZ2VTaXplLCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEltYWdlUGFpbnRpbmdP
cHRpb25zJiBvcHRpb25zKQogewotICAgIGlmIChtX2RlbGVnYXRlKQotICAgICAgICBtX2RlbGVn
YXRlLT5jYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKLSAgICBtX2Rpc3BsYXlMaXN0LmNhY2hlTmF0
aXZlSW1hZ2UoaW1hZ2UpOworICAgIGNhY2hlTmF0aXZlSW1hZ2UoaW1hZ2UpOwogICAgIGFwcGVu
ZDxEcmF3TmF0aXZlSW1hZ2U+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBp
bWFnZVNpemUsIGRlc3RSZWN0LCBzcmNSZWN0LCBvcHRpb25zKTsKIH0KIAogdm9pZCBSZWNvcmRl
cjo6ZHJhd1BhdHRlcm4oTmF0aXZlSW1hZ2UmIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIGltYWdl
U2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiB0aWxlUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBjb25zdCBJbWFnZVBhaW50aW5n
T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAobV9kZWxlZ2F0ZSkKLSAgICAgICAgbV9kZWxl
Z2F0ZS0+Y2FjaGVOYXRpdmVJbWFnZShpbWFnZSk7Ci0gICAgbV9kaXNwbGF5TGlzdC5jYWNoZU5h
dGl2ZUltYWdlKGltYWdlKTsKKyAgICBjYWNoZU5hdGl2ZUltYWdlKGltYWdlKTsKICAgICBhcHBl
bmQ8RHJhd1BhdHRlcm4+KGltYWdlLnJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcigpLCBpbWFn
ZVNpemUsIGRlc3RSZWN0LCB0aWxlUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHNwYWNp
bmcsIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApp
bmRleCA2NGY3OGFjYjZjNDk2Mzk4NTI2NmQyYzQzNTcxZWI2OTQ0NWNlMDNjLi44MDQ2YTIxYTJl
MTgxMTQ5MGM2NzA2MDI5NWM2N2UwZGRhYWFjMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmgKQEAgLTE3MSw2ICsxNzEsOCBAQCBwcml2YXRlOgogCiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3aWxsQXBwZW5kSXRlbU9mVHlwZShJdGVtVHlwZSk7CiAKKyAgICB2b2lk
IGNhY2hlTmF0aXZlSW1hZ2UoTmF0aXZlSW1hZ2UmKTsKKwogICAgIHZvaWQgYXBwZW5kU3RhdGVD
aGFuZ2VJdGVtKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlQ2hhbmdlJiwgR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpOwogCiAgICAgRmxvYXRSZWN0IGV4dGVudEZyb21M
b2NhbEJvdW5kcyhjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlcGxheWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlcGxheWVyLmNwcAppbmRleCAzMjVkYjk3MzllOWZjZjIxMzFlOTE0ZTZhZTVjODVh
ODJlYmFlMWM5Li40ZDkwNmEyNDU2NDQ2MmY2ZTAxODE2OWQxYjE2ODk5MmQ4ZGYyY2NhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZXBsYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVwbGF5ZXIuY3BwCkBAIC03MCw2ICs3MCwyOSBA
QCBpbmxpbmUgc3RhdGljIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4gYXBw
bHlOYXRpdmVJbWFnZUl0ZW0oR3JhcGhpYwogICAgIHJldHVybiByZXNvdXJjZUlkZW50aWZpZXI7
CiB9CiAKK2lubGluZSBzdGF0aWMgT3B0aW9uYWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVy
PiBhcHBseVNldFN0YXRlSXRlbShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IE5hdGl2
ZUltYWdlSGFzaE1hcCYgbmF0aXZlSW1hZ2VzLCBJdGVtSGFuZGxlIGl0ZW0pCit7CisgICAgYXV0
byYgc2V0U3RhdGVJdGVtID0gaXRlbS5nZXQ8U2V0U3RhdGU+KCk7CisKKyAgICBOYXRpdmVJbWFn
ZSogc3Ryb2tlUGF0dGVybkltYWdlID0gbnVsbHB0cjsKKyAgICBOYXRpdmVJbWFnZSogZmlsbFBh
dHRlcm5JbWFnZSA9IG51bGxwdHI7CisKKyAgICBpZiAoYXV0byByZXNvdXJjZUlkZW50aWZpZXIg
PSBzZXRTdGF0ZUl0ZW0uc3Ryb2tlUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSB7CisgICAgICAg
IHN0cm9rZVBhdHRlcm5JbWFnZSA9IG5hdGl2ZUltYWdlcy5nZXQocmVzb3VyY2VJZGVudGlmaWVy
KTsKKyAgICAgICAgaWYgKCFzdHJva2VQYXR0ZXJuSW1hZ2UpCisgICAgICAgICAgICByZXR1cm4g
cmVzb3VyY2VJZGVudGlmaWVyOworICAgIH0KKworICAgIGlmIChhdXRvIHJlc291cmNlSWRlbnRp
ZmllciA9IHNldFN0YXRlSXRlbS5maWxsUGF0dGVybkltYWdlSWRlbnRpZmllcigpKSB7CisgICAg
ICAgIGZpbGxQYXR0ZXJuSW1hZ2UgPSBuYXRpdmVJbWFnZXMuZ2V0KHJlc291cmNlSWRlbnRpZmll
cik7CisgICAgICAgIGlmICghZmlsbFBhdHRlcm5JbWFnZSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXNvdXJjZUlkZW50aWZpZXI7CisgICAgfQorCisgICAgc2V0U3RhdGVJdGVtLmFwcGx5KGNvbnRl
eHQsIHN0cm9rZVBhdHRlcm5JbWFnZSwgZmlsbFBhdHRlcm5JbWFnZSk7CisgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKK30KKwogdGVtcGxhdGU8Y2xhc3MgVD4KIGlubGluZSBzdGF0aWMgT3B0aW9u
YWw8UmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyPiBhcHBseUZvbnRJdGVtKEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgRm9udFJlbmRlcmluZ1Jlc291cmNlTWFwJiBmb250cywgSXRl
bUhhbmRsZSBpdGVtKQogewpAQCAtMTE3LDYgKzE0MCwxMiBAQCBzdGQ6OnBhaXI8T3B0aW9uYWw8
U3RvcFJlcGxheVJlYXNvbj4sIE9wdGlvbmFsPFJlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcj4+
IFJlcAogICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogICAg
IH0KIAorICAgIGlmIChpdGVtLmlzPFNldFN0YXRlPigpKSB7CisgICAgICAgIGlmIChhdXRvIG1p
c3NpbmdDYWNoZWRSZXNvdXJjZUlkZW50aWZpZXIgPSBhcHBseVNldFN0YXRlSXRlbShtX2NvbnRl
eHQsIG1fbmF0aXZlSW1hZ2VzLCBpdGVtKSkKKyAgICAgICAgICAgIHJldHVybiB7IFN0b3BSZXBs
YXlSZWFzb246Ok1pc3NpbmdDYWNoZWRSZXNvdXJjZSwgV1RGTW92ZShtaXNzaW5nQ2FjaGVkUmVz
b3VyY2VJZGVudGlmaWVyKSB9OworICAgICAgICByZXR1cm4geyBXVEY6Om51bGxvcHQsIFdURjo6
bnVsbG9wdCB9OworICAgIH0KKwogICAgIGl0ZW0uYXBwbHkobV9jb250ZXh0KTsKICAgICByZXR1
cm4geyBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCmluZGV4IDU2MzNhMGFm
YTY0ZGQ2NmQ2YWVkOWU5N2RlMmU2OGRiZTE2YjM4MTEuLmMwNzcwNmEwZGE1ODdmNDM2ZWE2NmNm
YTJhZDM0NzQ0NGYxNDcyODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTcyLDE1ICs3MiwxNSBAQCB2b2lkIEZFVGls
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB0aWxlSW1hZ2VDb250ZXh0LnRyYW5zbGF0
ZSgtaW5NYXhFZmZlY3RMb2NhdGlvbi54KCksIC1pbk1heEVmZmVjdExvY2F0aW9uLnkoKSk7CiAg
ICAgdGlsZUltYWdlQ29udGV4dC5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBpbi0+YWJzb2x1
dGVQYWludFJlY3QoKS5sb2NhdGlvbigpKTsKIAotICAgIGF1dG8gdGlsZUltYWdlQ29weSA9IElt
YWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7CisgICAgYXV0byB0
aWxlSW1hZ2VDb3B5ID0gSW1hZ2VCdWZmZXI6OnNpbmtJbnRvTmF0aXZlSW1hZ2UoV1RGTW92ZSh0
aWxlSW1hZ2UpKTsKICAgICBpZiAoIXRpbGVJbWFnZUNvcHkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gcGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VO
b25OdWxsKCksIHRydWUsIHRydWUpOwotCiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRlcm5UcmFu
c2Zvcm07CiAgICAgcGF0dGVyblRyYW5zZm9ybS50cmFuc2xhdGUoaW5NYXhFZmZlY3RMb2NhdGlv
biAtIG1heEVmZmVjdExvY2F0aW9uKTsKLSAgICBwYXR0ZXJuLmdldCgpLnNldFBhdHRlcm5TcGFj
ZVRyYW5zZm9ybShwYXR0ZXJuVHJhbnNmb3JtKTsKKworICAgIGF1dG8gcGF0dGVybiA9IFBhdHRl
cm46OmNyZWF0ZSh0aWxlSW1hZ2VDb3B5LnJlbGVhc2VOb25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwg
cGF0dGVyblRyYW5zZm9ybSB9KTsKKwogICAgIEdyYXBoaWNzQ29udGV4dCYgZmlsdGVyQ29udGV4
dCA9IHJlc3VsdEltYWdlLT5jb250ZXh0KCk7CiAgICAgZmlsdGVyQ29udGV4dC5zZXRGaWxsUGF0
dGVybihXVEZNb3ZlKHBhdHRlcm4pKTsKICAgICBmaWx0ZXJDb250ZXh0LmZpbGxSZWN0KEZsb2F0
UmVjdChGbG9hdFBvaW50KCksIGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmluZGV4IDBkMDQ4
MTFiM2U5ODFjNTE2NTEzNTRhZDgwZjBiY2Y3NjJhMGJlYmQuLmM3MGMxNGFkZTFmZjViZGVkZTQ3
NGNlZmJlMzgxMzA4MDE0NWQxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMjY2LDE0ICszMjY2LDEzIEBAIHN0YXRpYyBSZWZQ
dHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXB0aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNj
cmlwdGlvbiwgRmxvCiAgICAgICAgIGltYWdlQ29udGV4dC5kcmF3VGV4dChmb250LCB0ZXh0UnVu
LCB7IHRleHRHYXAsIHlPZmZzZXQgfSwgMCk7CiAgICAgfQogCi0gICAgYXV0byB0aWxlSW1hZ2Ug
PSBJbWFnZUJ1ZmZlcjo6c2lua0ludG9JbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7Ci0gICAg
YXV0byBmaWxsUGF0dGVybiA9IFBhdHRlcm46OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51
bGwoKSwgdHJ1ZSwgdHJ1ZSk7CisgICAgYXV0byB0aWxlSW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6c2lu
a0ludG9OYXRpdmVJbWFnZShXVEZNb3ZlKGltYWdlQnVmZmVyKSk7CisKICAgICBBZmZpbmVUcmFu
c2Zvcm0gcGF0dGVybk9mZnNldFRyYW5zZm9ybTsKICAgICBwYXR0ZXJuT2Zmc2V0VHJhbnNmb3Jt
LnRyYW5zbGF0ZShjb250ZW50T2Zmc2V0ICsgZGVzY3JpcHRpb24ucGhhc2UpOwogICAgIHBhdHRl
cm5PZmZzZXRUcmFuc2Zvcm0uc2NhbGUoMSAvIGRlc3RDb250ZXh0LnNjYWxlRmFjdG9yKCkpOwot
ICAgIGZpbGxQYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0ocGF0dGVybk9mZnNldFRy
YW5zZm9ybSk7CiAKLSAgICByZXR1cm4gZmlsbFBhdHRlcm47CisgICAgcmV0dXJuIFBhdHRlcm46
OmNyZWF0ZSh0aWxlSW1hZ2UucmVsZWFzZU5vbk51bGwoKSwgeyB0cnVlLCB0cnVlLCBwYXR0ZXJu
T2Zmc2V0VHJhbnNmb3JtfSk7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAppbmRleCBl
MzQyNDMxZDE0OTFmM2YxZDBiYmQ0YmNmOTVhMDUyNmVkMDMwZmQxLi45NDcxOWIzZWY4NzcyZWZj
YTA3YzBlMmIzNWRkMWMwNDA2MDk3MzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCkBAIC0xMTIsMTYg
KzExMiwxMiBAQCBQYXR0ZXJuRGF0YSogUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpidWlsZFBh
dHRlcm4oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIE9wdAogCiAgICAgY29uc3QgSW50U2l6ZSB0
aWxlSW1hZ2VTaXplID0gdGlsZUltYWdlLT5sb2dpY2FsU2l6ZSgpOwogCi0gICAgUmVmUHRyPElt
YWdlPiBjb3BpZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b0ltYWdlKFdURk1vdmUodGls
ZUltYWdlKSk7CisgICAgYXV0byBjb3BpZWRJbWFnZSA9IEltYWdlQnVmZmVyOjpzaW5rSW50b05h
dGl2ZUltYWdlKFdURk1vdmUodGlsZUltYWdlKSk7CiAgICAgaWYgKCFjb3BpZWRJbWFnZSkKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICAvLyBCdWlsZCBwYXR0ZXJuLgotICAgIGF1dG8g
cGF0dGVybkRhdGEgPSBtYWtlVW5pcXVlPFBhdHRlcm5EYXRhPigpOwotICAgIHBhdHRlcm5EYXRh
LT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VOb25OdWxsKCks
IHRydWUsIHRydWUpOwotCiAgICAgLy8gQ29tcHV0ZSBwYXR0ZXJuIHNwYWNlIHRyYW5zZm9ybWF0
aW9uLgotCisgICAgYXV0byBwYXR0ZXJuRGF0YSA9IG1ha2VVbmlxdWU8UGF0dGVybkRhdGE+KCk7
CiAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS50cmFuc2xhdGUodGlsZUJvdW5kYXJpZXMubG9j
YXRpb24oKSk7CiAgICAgcGF0dGVybkRhdGEtPnRyYW5zZm9ybS5zY2FsZSh0aWxlQm91bmRhcmll
cy5zaXplKCkgLyB0aWxlSW1hZ2VTaXplKTsKIApAQCAtMTM1LDcgKzEzMSw5IEBAIFBhdHRlcm5E
YXRhKiBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OmJ1aWxkUGF0dGVybihSZW5kZXJFbGVtZW50
JiByZW5kZXJlciwgT3B0CiAgICAgICAgIGlmIChzaG91bGRUcmFuc2Zvcm1PblRleHRQYWludGlu
ZyhyZW5kZXJlciwgYWRkaXRpb25hbFRleHRUcmFuc2Zvcm1hdGlvbikpCiAgICAgICAgICAgICBw
YXR0ZXJuRGF0YS0+dHJhbnNmb3JtICo9IGFkZGl0aW9uYWxUZXh0VHJhbnNmb3JtYXRpb247CiAg
ICAgfQotICAgIHBhdHRlcm5EYXRhLT5wYXR0ZXJuLT5zZXRQYXR0ZXJuU3BhY2VUcmFuc2Zvcm0o
cGF0dGVybkRhdGEtPnRyYW5zZm9ybSk7CisKKyAgICAvLyBCdWlsZCBwYXR0ZXJuLgorICAgIHBh
dHRlcm5EYXRhLT5wYXR0ZXJuID0gUGF0dGVybjo6Y3JlYXRlKGNvcGllZEltYWdlLnJlbGVhc2VO
b25OdWxsKCksIHsgdHJ1ZSwgdHJ1ZSwgcGF0dGVybkRhdGEtPnRyYW5zZm9ybSB9KTsKIAogICAg
IC8vIFZhcmlvdXMgY2FsbHMgYWJvdmUgbWF5IHRyaWdnZXIgaW52YWxpZGF0aW9ucyBpbiBzb21l
IGZyaW5nZSBjYXNlcyAoSW1hZ2VCdWZmZXIgYWxsb2NhdGlvbgogICAgIC8vIGZhaWx1cmVzIGlu
IHRoZSBTVkcgaW1hZ2UgY2FjaGUgZm9yIGV4YW1wbGUpLiBUbyBhdm9pZCBoYXZpbmcgb3VyIFBh
dHRlcm5EYXRhIGRlbGV0ZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCmluZGV4IDE5YWYyOTk2NjgyN2Q0YjYwMWQ4Y2Q1MjdiZjE0YzlhNzdk
NzA4OWIuLmJiN2M4NGJmODE0NzVjY2M5MTlmMDc4MzAwNGQ5Mjk3MTgwMGZlNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtMTA3NSwx
OCArMTA3NSw2IEBAIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNvZGVPcHRpb25h
bEltYWdlKERlY29kZXImIGRlY29kZXIsIFJlZlB0cjxJbWFnCiAgICAgcmV0dXJuIGRlY29kZUlt
YWdlKGRlY29kZXIsIGltYWdlKTsKIH0KIAotdm9pZCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxl
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IEltYWdlSGFuZGxlJiBpbWFnZUhhbmRs
ZSkKLXsKLSAgICBlbmNvZGVPcHRpb25hbEltYWdlKGVuY29kZXIsIGltYWdlSGFuZGxlLmltYWdl
LmdldCgpKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPEltYWdlSGFuZGxlPjo6ZGVjb2RlKERl
Y29kZXImIGRlY29kZXIsIEltYWdlSGFuZGxlJiBpbWFnZUhhbmRsZSkKLXsKLSAgICBpZiAoIWRl
Y29kZU9wdGlvbmFsSW1hZ2UoZGVjb2RlciwgaW1hZ2VIYW5kbGUuaW1hZ2UpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgQXJndW1lbnRDb2RlcjxS
ZWY8Rm9udD4+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgUmVmPFdlYkNvcmU6OkZv
bnQ+JiBmb250KQogewogICAgIGVuY29kZXIgPDwgZm9udC0+b3JpZ2luKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4IDAwYzE0M2ZiYmI4OWQy
NjY0Y2FlNTBhNWUxZmJmM2Y4ZTkxNTk1MDcuLjZmNzIxODBmOTg1MzI3M2UzZjE2ZjYxMGI0ZDUz
MWYxYWNmMThhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCkBAIC0xMDksNyArMTA5LDYgQEAgY2xhc3MgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29u
c3RyYWludHM7CiBjbGFzcyBGb250OwogY2xhc3MgRm9udFBsYXRmb3JtRGF0YTsKIGNsYXNzIEhU
VFBIZWFkZXJNYXA7Ci1jbGFzcyBJbWFnZUhhbmRsZTsKIGNsYXNzIEludFBvaW50OwogY2xhc3Mg
SW50UmVjdDsKIGNsYXNzIEludFNpemU7CkBAIC00MTgsMTEgKzQxNyw2IEBAIHRlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8UmVmPFdlYkNvcmU6OkZvbnQ+PiB7CiAgICAgc3RhdGljIE9w
dGlvbmFsPFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE+IGRlY29kZVBsYXRmb3JtRGF0YShEZWNv
ZGVyJik7CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Oklt
YWdlSGFuZGxlPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEVuY29kZXImLCBjb25zdCBXZWJD
b3JlOjpJbWFnZUhhbmRsZSYpOwotICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBk
ZWNvZGUoRGVjb2RlciYsIFdlYkNvcmU6OkltYWdlSGFuZGxlJik7Ci19OwotCiB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdD4gewogICAgIHN0
YXRpYyB2b2lkIGVuY29kZShFbmNvZGVyJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgc3RhdGljIFdBUk5fVU5VU0VEX1JFVFVSTiBib29sIGRlY29kZShEZWNvZGVyJiwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNzU3ZGE3NGQyMmIzYWE2YmQ0ODU4
MTFhY2M4YmNlZWRmYmM1ZjZlMS4uNmVkZTc3ZDcyMTdkYWEwODA1ZGZhZDA2NDhiODg5MzQxMmUz
Zjk4ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTAyLTExICBTYWlkIEFib3UtSGFsbGF3
YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW1wbGVtZW50IFNl
dFN0YXRlIERpc3BsYXlMaXN0IGl0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxOTQ2OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci4KKworICAgICAgICAqIGdwdS1wcm9jZXNzL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFVu
bWFyayB0ZXN0cyB0aGF0IGFyZSBubyBsb25nZXIgY3Jhc2guCisKIDIwMjEtMDItMTEgIFNhaWQg
QWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2
ZXJ0aW5nIHIyNzA1NzguCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9ncHUtcHJvY2Vzcy9UZXN0
RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvZ3B1LXByb2Nlc3MvVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAxMmNhMWNlNmFhMTkxM2VlMjFlNmU2NGI3NDBjM2Y5Njc2MzY4ZGE5Li5jM2Q0ZGUzZDkz
YTgzNzAzYTg3NWY1MzQwZWQ1ZjJmM2RkM2ZjNTc1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9n
cHUtcHJvY2Vzcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL2dwdS1wcm9jZXNz
L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEsNDUgKzEsMyBAQAotY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEuY2FudmFzcGF0dGVybi5odG1sIFsgQ3Jhc2ggXQotY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEuaW1hZ2VwYXR0ZXJuLmh0
bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQu
cGF0dGVybi5jb3B5Lmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBv
c2l0ZS51bmNvdmVyZWQucGF0dGVybi5kZXN0aW5hdGlvbi1hdG9wLmh0bWwgWyBDcmFzaCBdCi1j
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5kZXN0aW5h
dGlvbi1pbi5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5jb21wb3NpdGUu
dW5jb3ZlcmVkLnBhdHRlcm4uc291cmNlLWluLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5zb3VyY2Utb3V0Lmh0bWwgWyBD
cmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uYW5pbWF0ZWQuZ2lmLmh0bWwg
WyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uYmFzaWMuY2FudmFzLmh0
bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4uYmFzaWMuaW1hZ2Uu
aHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5iYXNpYy5ub2Nv
bnRleHQuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5jcm9z
c2NhbnZhcy5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLm1v
ZGlmeS5jYW52YXMxLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRl
cm4ubW9kaWZ5LmNhbnZhczIuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQu
cGF0dGVybi5tb2RpZnkuaW1hZ2UxLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnBhdHRlcm4ubW9kaWZ5LmltYWdlMi5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC5wYXR0ZXJuLnBhaW50Lm5vcmVwZWF0LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1jYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQxLmh0bWwgWyBD
cmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29v
cmQyLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQu
bm9yZXBlYXQuY29vcmQzLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBh
dHRlcm4ucGFpbnQubm9yZXBlYXQub3V0c2lkZS5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC5wYXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmNhbnZhcy5odG1sIFsgQ3Jhc2gg
XQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5wYXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmltYWdl
Lmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQucmVw
ZWF0LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4u
cGFpbnQucmVwZWF0LmNvb3JkMS5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC5wYXR0ZXJuLnBhaW50LnJlcGVhdC5jb29yZDIuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXQuY29vcmQzLmh0bWwgWyBDcmFzaCBdCi1j
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0Lm91dHNpZGUuaHRtbCBb
IENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4LmJh
c2ljLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQu
cmVwZWF0eC5jb29yZDEuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0
dGVybi5wYWludC5yZXBlYXR4Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAv
dGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXR5LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1jYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eS5jb29yZDEuaHRtbCBbIENy
YXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5wYWludC5yZXBlYXR5Lm91dHNp
ZGUuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5yZXBlYXQu
ZW1wdHkuaHRtbCBbIENyYXNoIF0KLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQucGF0dGVybi5yZXBl
YXQubnVsbC5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cucGF0
dGVybi5hbHBoYS5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFkb3cu
cGF0dGVybi5iYXNpYy5odG1sIFsgQ3Jhc2ggXQotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5zaGFk
b3cucGF0dGVybi50cmFuc3BhcmVudC4xLmh0bWwgWyBDcmFzaCBdCi1jYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5zcGFyZW50LjIuaHRtbCBbIENyYXNoIF0KLWNhbnZh
cy9waGlsaXAvdGVzdHMvaW5pdGlhbC5yZXNldC5wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi0KIGNv
bXBvc2l0aW5nL2NhbnZhcy9hY2NlbGVyYXRlZC1jYW52YXMtY29tcG9zaXRpbmcuaHRtbCBbIEZh
aWx1cmUgXQogY29tcG9zaXRpbmcvbGF5ZXItY3JlYXRpb24vc3Bhbk92ZXJsYXBzQ2FudmFzLmh0
bWwgWyBGYWlsdXJlIF0KIApAQCAtNTcsMzEgKzE1LDEwIEBAIGZhc3QvY2FudmFzL2NhbnZhcy1i
bGVuZGluZy1jbGlwcGluZy5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy9jYW52YXMtYmxl
bmRpbmctY29sb3Itb3Zlci1jb2xvci5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2NhbnZhcy9jYW52
YXMtYmxlbmRpbmctY29sb3Itb3Zlci1ncmFkaWVudC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Nh
bnZhcy9jYW52YXMtYmxlbmRpbmctY29sb3Itb3Zlci1pbWFnZS5odG1sIFsgVGltZW91dCBdCi1m
YXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctY29sb3Itb3Zlci1wYXR0ZXJuLmh0bWwgWyBDcmFz
aCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctZ3JhZGllbnQtb3Zlci1wYXR0ZXJuLmh0
bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctaW1hZ2Utb3Zlci1wYXR0
ZXJuLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctcGF0dGVybi1v
dmVyLWNvbG9yLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxlbmRpbmctcGF0
dGVybi1vdmVyLWdyYWRpZW50Lmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtYmxl
bmRpbmctcGF0dGVybi1vdmVyLWltYWdlLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52
YXMtYmxlbmRpbmctcGF0dGVybi1vdmVyLXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLWZhc3QvY2Fu
dmFzL2NhbnZhcy1jcmVhdGVQYXR0ZXJuLWZpbGxSZWN0LXNoYWRvdy5odG1sIFsgQ3Jhc2ggXQot
ZmFzdC9jYW52YXMvY2FudmFzLWNyZWF0ZVBhdHRlcm4tdmlkZW8tbG9hZGluZy5odG1sIFsgQ3Jh
c2ggXQotZmFzdC9jYW52YXMvY2FudmFzLWNyZWF0ZVBhdHRlcm4tdmlkZW8tbW9kaWZ5Lmh0bWwg
WyBDcmFzaCBdCiBmYXN0L2NhbnZhcy9jYW52YXMtZHJhd0ltYWdlLWNvbXBvc2l0ZS1jb3B5Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWZhc3QvY2FudmFzL2NhbnZhcy1maWxsUGF0aC1wYXR0
ZXJuLXNoYWRvdy5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLWltYWdlLXNoYWRv
dy5odG1sIFsgQ3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLWltYWdlU21vb3RoaW5nRW5hYmxl
ZC1wYXR0ZXJucy5odG1sIFsgQ3Jhc2ggXQogZmFzdC9jYW52YXMvY2FudmFzLWxhcmdlLWRpbWVu
c2lvbnMuaHRtbCBbIEZhaWx1cmUgXQotZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4tYmVoYXZp
b3VyLmh0bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9jYW52YXMtcGF0dGVybi1tb2RpZnkuaHRt
bCBbIENyYXNoIF0KLWZhc3QvY2FudmFzL2NhbnZhcy1wYXR0ZXJuLXRyYW5zZm9ybS5odG1sIFsg
Q3Jhc2ggXQotZmFzdC9jYW52YXMvY2FudmFzLXBhdHRlcm4td2l0aC10cmFuc2Zvcm0uaHRtbCBb
IENyYXNoIF0KIGZhc3QvY2FudmFzL2NhbnZhcy1yZW5kZXItbGF5ZXIuaHRtbCBbIEZhaWx1cmUg
XQogZmFzdC9jYW52YXMvaGlkcGktcmVwYWludC1vbi1yZXRpbmEtbGVhdmVzLWJpdHMtYmVoaW5k
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KLWZhc3QvY2FudmFzL2ltYWdlLW9iamVjdC1pbi1j
YW52YXMuaHRtbCBbIENyYXNoIF0KLWZhc3QvY2FudmFzL2ltYWdlLXBhdHRlcm4tcm90YXRlLmh0
bWwgWyBDcmFzaCBdCi1mYXN0L2NhbnZhcy9wYXR0ZXJuLXdpdGgtdHJhbnNmb3JtLmh0bWwgWyBD
cmFzaCBdCi1mYXN0L2NhbnZhcy9wYXR0ZXJuZmlsbC1yZXBlYXQuaHRtbCBbIENyYXNoIF0KIGZh
c3QvY2FudmFzL3dlYmdsL2NhbnZhcy0yZC13ZWJnbC10ZXh0dXJlLmh0bWwgWyBGYWlsdXJlIF0K
IGZhc3QvY2FudmFzL3dlYmdsL2NhbnZhcy10ZXN0Lmh0bWwgWyBGYWlsdXJlIF0KIGZhc3QvY2Fu
dmFzL3dlYmdsL2NvbnRleHQtY3JlYXRpb24tYXR0cmlidXRlcy5odG1sIFsgRmFpbHVyZSBdCkBA
IC0xOTUsOTggKzEzMiwxMyBAQCBpbXBvcnRlZC9ibGluay9mYXN0L2NhbnZhcy9jYW52YXMtc3Rh
dGUtcGVyc2lzdGVuY2Utbm8tZGlydHkuaHRtbCBbIEltYWdlT25seUZhaQogaW1wb3J0ZWQvYmxp
bmsvZmFzdC9jYW52YXMvY2FudmFzLXVuYmFsYW5jZWQtc2F2ZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiBpbXBvcnRlZC9ibGluay9zdmcvY2FudmFzL2NhbnZhcy1kcmF3LXBhdHRlcm4tc2l6
ZS5odG1sIFsgQ3Jhc2ggXQogCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLmNvbXBvc2l0ZS5nbG9i
YWxBbHBoYS5jYW52YXNwYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFz
LzJkLmNvbXBvc2l0ZS5nbG9iYWxBbHBoYS5pbWFnZXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLWlt
cG9ydGVkL3czYy9jYW52YXMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLmNvcHkuaHRt
bCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5w
YXR0ZXJuLmRlc3RpbmF0aW9uLWF0b3AuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52
YXMvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLmRlc3RpbmF0aW9uLWluLmh0bWwgWyBD
cmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVy
bi5zb3VyY2UtaW4uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQuY29tcG9z
aXRlLnVuY292ZXJlZC5wYXR0ZXJuLnNvdXJjZS1vdXQuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVk
L3czYy9jYW52YXMvMmQucGF0dGVybi5iYXNpYy5jYW52YXMuaHRtbCBbIENyYXNoIF0KLWltcG9y
dGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5iYXNpYy5pbWFnZS5odG1sIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLmJhc2ljLm5vY29udGV4dC5odG1sIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLmNyb3NzY2FudmFzLmh0bWwgWyBDcmFz
aCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ubW9kaWZ5LmNhbnZhczEuaHRtbCBb
IENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5tb2RpZnkuY2FudmFzMi5o
dG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLnBhaW50Lm5vcmVw
ZWF0LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4u
cGFpbnQubm9yZXBlYXQuY29vcmQxLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFz
LzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQyLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRl
ZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQzLmh0bWwgWyBDcmFz
aCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQub3V0c2lk
ZS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLnBhaW50Lm9y
aWVudGF0aW9uLmNhbnZhcy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5w
YXR0ZXJuLnBhaW50Lm9yaWVudGF0aW9uLmltYWdlLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93
M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1p
bXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0LmNvb3JkMS5odG1sIFsg
Q3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5wYXR0ZXJuLnBhaW50LnJlcGVhdC5jb29y
ZDIuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5wYWludC5y
ZXBlYXQuY29vcmQzLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRl
cm4ucGFpbnQucmVwZWF0Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52
YXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRl
ZC93M2MvY2FudmFzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eC5jb29yZDEuaHRtbCBbIENyYXNo
IF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4Lm91dHNpZGUu
aHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5wYWludC5yZXBl
YXR5LmJhc2ljLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnBhdHRlcm4u
cGFpbnQucmVwZWF0eS5jb29yZDEuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMv
MmQucGF0dGVybi5wYWludC5yZXBlYXR5Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVk
L3czYy9jYW52YXMvMmQucGF0dGVybi5yZXBlYXQuZW1wdHkuaHRtbCBbIENyYXNoIF0KLWltcG9y
dGVkL3czYy9jYW52YXMvMmQucGF0dGVybi5yZXBlYXQubnVsbC5odG1sIFsgQ3Jhc2ggXQotaW1w
b3J0ZWQvdzNjL2NhbnZhcy8yZC5zaGFkb3cucGF0dGVybi5hbHBoYS5odG1sIFsgQ3Jhc2ggXQot
aW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5zaGFkb3cucGF0dGVybi5iYXNpYy5odG1sIFsgQ3Jhc2gg
XQotaW1wb3J0ZWQvdzNjL2NhbnZhcy8yZC5zaGFkb3cucGF0dGVybi50cmFuc3BhcmVudC4xLmh0
bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5z
cGFyZW50LjIuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy9jYW52YXMvaW5pdGlhbC5yZXNl
dC5wYXR0ZXJuLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2MvY2FudmFzL3NlY3VyaXR5LnBh
dHRlcm4uY2FudmFzLnRpbWluZy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL2NhbnZhcy9z
ZWN1cml0eS5wYXR0ZXJuLmNyb3NzLmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2ZldGNoL3JhbmdlL2dlbmVyYWwud2luZG93Lmh0bWwgWyBGYWlsdXJlIF0K
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvcmFuZ2Uvc3cuaHR0cHMud2lu
ZG93Lmh0bWwgWyBGYWlsdXJlIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9jYW52YXMvZWxlbWVudC9jb21wb3NpdGluZy8yZC5jb21wb3NpdGUuZ2xvYmFsQWxwaGEuY2Fu
dmFzcGF0dGVybi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L2NvbXBvc2l0aW5nLzJkLmNvbXBvc2l0ZS5nbG9iYWxBbHBo
YS5pbWFnZXBhdHRlcm4uaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9jb21wb3NpdGluZy8yZC5jb21wb3NpdGUudW5jb3Zl
cmVkLnBhdHRlcm4uY29weS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2NvbXBvc2l0aW5nLzJkLmNvbXBvc2l0ZS51bmNv
dmVyZWQucGF0dGVybi5kZXN0aW5hdGlvbi1hdG9wLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvY29tcG9zaXRpbmcvMmQu
Y29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLmRlc3RpbmF0aW9uLWluLmh0bWwgWyBDcmFzaCBd
Ci1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvY29t
cG9zaXRpbmcvMmQuY29tcG9zaXRlLnVuY292ZXJlZC5wYXR0ZXJuLnNvdXJjZS1pbi5odG1sIFsg
Q3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L2NvbXBvc2l0aW5nLzJkLmNvbXBvc2l0ZS51bmNvdmVyZWQucGF0dGVybi5zb3VyY2Utb3V0
Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLmFuaW1hdGVkLmdp
Zi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Nh
bnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5iYXNpYy5jYW52
YXMuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4uYmFzaWMuaW1h
Z2UuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9j
YW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4uYmFzaWMubm9j
b250ZXh0Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLmNyb3Nz
Y2FudmFzLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLm1vZGlm
eS5jYW52YXMxLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLm1v
ZGlmeS5jYW52YXMyLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJu
Lm1vZGlmeS5pbWFnZTEuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRl
cm4ubW9kaWZ5LmltYWdlMi5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0
dGVybi5wYWludC5ub3JlcGVhdC5iYXNpYy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHls
ZXMvMmQucGF0dGVybi5wYWludC5ub3JlcGVhdC5jb29yZDEuaHRtbCBbIENyYXNoIF0KLWltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1z
dHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQubm9yZXBlYXQuY29vcmQyLmh0bWwgWyBDcmFz
aCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQv
ZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLnBhaW50Lm5vcmVwZWF0LmNvb3JkMy5o
dG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZh
cy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5ub3JlcGVh
dC5vdXRzaWRlLmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLnBh
aW50Lm9yaWVudGF0aW9uLmNhbnZhcy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMv
MmQucGF0dGVybi5wYWludC5vcmllbnRhdGlvbi5pbWFnZS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0
cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXQuYmFzaWMuaHRtbCBbIENyYXNoIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxs
LWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0LmNvb3JkMS5odG1sIFsg
Q3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVt
ZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXQuY29vcmQy
Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2Fu
dmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0ZXJuLnBhaW50LnJlcGVh
dC5jb29yZDMuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFp
bnQucmVwZWF0Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBh
dHRlcm4ucGFpbnQucmVwZWF0eC5iYXNpYy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHls
ZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4LmNvb3JkMS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0
cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR4Lm91dHNpZGUuaHRtbCBbIENyYXNo
IF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9m
aWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRlcm4ucGFpbnQucmVwZWF0eS5iYXNpYy5odG1s
IFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9l
bGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5yZXBlYXR5LmNv
b3JkMS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L2ZpbGwtYW5kLXN0cm9rZS1zdHlsZXMvMmQucGF0dGVybi5wYWludC5y
ZXBlYXR5Lm91dHNpZGUuaHRtbCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9jYW52YXMvZWxlbWVudC9maWxsLWFuZC1zdHJva2Utc3R5bGVzLzJkLnBhdHRl
cm4ucmVwZWF0LmVtcHR5Lmh0bWwgWyBDcmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvZmlsbC1hbmQtc3Ryb2tlLXN0eWxlcy8yZC5wYXR0
ZXJuLnRyYW5zZm9ybS5pZGVudGl0eS5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50L2ltYWdlLXNtb290aGluZy9pbWFnZXNt
b290aGluZy5odG1sIFsgQ3Jhc2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2NhbnZhcy9lbGVtZW50L2ltYWdlYml0bWFwL2NyZWF0ZUltYWdlQml0bWFwLW9yaWdpbi5z
dWIuaHRtbCBbIEZhaWx1cmUgXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2NhbnZhcy9lbGVtZW50L2xpbmUtc3R5bGVzLzJkLmxpbmUuY2FwLmNsb3NlZC5odG1sIFsgQ3Jh
c2ggXQogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2NhbnZhcy9lbGVtZW50
L3BhdGgtb2JqZWN0cy8yZC5wYXRoLmFyYy5hbmdsZS4yLmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvcGF0aC1vYmplY3Rz
LzJkLnBhdGguc3Ryb2tlLnNjYWxlMi5odG1sIFsgRmFpbHVyZSBdCi1pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvY2FudmFzL2VsZW1lbnQvc2hhZG93cy8yZC5zaGFkb3cucGF0
dGVybi5hbHBoYS5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2NhbnZhcy9lbGVtZW50L3NoYWRvd3MvMmQuc2hhZG93LnBhdHRlcm4uYmFzaWMuaHRt
bCBbIENyYXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMv
ZWxlbWVudC9zaGFkb3dzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5zcGFyZW50LjEuaHRtbCBbIENy
YXNoIF0KLWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9jYW52YXMvZWxlbWVu
dC9zaGFkb3dzLzJkLnNoYWRvdy5wYXR0ZXJuLnRyYW5zcGFyZW50LjIuaHRtbCBbIENyYXNoIF0K
LWltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQt
Y29udGVudC90aGUtY2FudmFzLWVsZW1lbnQvaW5pdGlhbC5yZXNldC5wYXR0ZXJuLmh0bWwgWyBD
cmFzaCBdCi1pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2Vt
YmVkZGVkLWNvbnRlbnQvdGhlLWNhbnZhcy1lbGVtZW50L3NlY3VyaXR5LnBhdHRlcm4uY2FudmFz
LnRpbWluZy5jcm9zcy5odG1sIFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3NlbWFudGljcy9lbWJlZGRlZC1jb250ZW50L3RoZS1jYW52YXMtZWxlbWVudC9z
ZWN1cml0eS5wYXR0ZXJuLmNhbnZhcy50aW1pbmcucmVkaXJlY3QuaHRtbCBbIENyYXNoIF0KLWlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZW1iZWRkZWQtY29u
dGVudC90aGUtY2FudmFzLWVsZW1lbnQvc2VjdXJpdHkucGF0dGVybi5jcm9zcy5jcm9zcy5odG1s
IFsgQ3Jhc2ggXQotaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGlj
cy9lbWJlZGRlZC1jb250ZW50L3RoZS1jYW52YXMtZWxlbWVudC9zZWN1cml0eS5wYXR0ZXJuLmNy
b3NzLnJlZGlyZWN0Lmh0bWwgWyBDcmFzaCBdCiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2VtYmVkZGVkLWNvbnRlbnQvdGhlLXZpZGVvLWVsZW1lbnQvdmlk
ZW9fdGltZXVwZGF0ZV9vbl9zZWVrLmh0bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvbWVkaWFjYXB0dXJlLXJlY29yZC9NZWRpYVJlY29yZGVyLXBlZXJjb25u
ZWN0aW9uLmh0dHBzLmh0bWwgWyBGYWlsdXJlIF0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>