<?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>239874</bug_id>
          
          <creation_ts>2022-04-28 15:03:44 -0700</creation_ts>
          <short_desc>[GPU Process] NativeImage should share the ShareableBitmap data when it&apos;s sent to GPU Process</short_desc>
          <delta_ts>2022-05-05 11:01:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865261</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-28 15:03:44 -0700</bug_when>
    <thetext>Instead of allocating a new memory buffer in GPUProcess and copying the ShareableBitmap data to it, we can create a PlatformImage that directly references this data. This will make all the NativeImages data be attributed to WebProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865262</commentid>
    <comment_count>1</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-28 15:04:47 -0700</bug_when>
    <thetext>rdar://92031359</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865270</commentid>
    <comment_count>2</comment_count>
      <attachid>458550</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-28 15:41:04 -0700</bug_when>
    <thetext>Created attachment 458550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865494</commentid>
    <comment_count>3</comment_count>
      <attachid>458600</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-04-29 12:10:26 -0700</bug_when>
    <thetext>Created attachment 458600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865785</commentid>
    <comment_count>4</comment_count>
      <attachid>458668</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-02 02:05:00 -0700</bug_when>
    <thetext>Created attachment 458668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866653</commentid>
    <comment_count>5</comment_count>
      <attachid>458668</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-05-04 16:25:19 -0700</bug_when>
    <thetext>Comment on attachment 458668
Patch

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

&gt; Source/WebKit/GPUProcess/graphics/RemoteRenderingBackend.cpp:350
&gt; +    auto image = NativeImage::create(bitmap-&gt;createPlatformImage(DontCopyBackingStore, true), nativeImageResourceIdentifier.object());

The `true` here is not really readable. I suggest using an enum class to replace this boolean to make call sites more readable.

&gt; Source/WebKit/Shared/ShareableBitmap.h:118
&gt; +    RetainPtr&lt;CGImageRef&gt; makeCGImage(bool shouldInterpolate = false);

parameter should be an enum class : bool.

&gt; Source/WebKit/Shared/ShareableBitmap.h:120
&gt; +    WebCore::PlatformImagePtr createPlatformImage(WebCore::BackingStoreCopy = WebCore::CopyBackingStore, bool shouldInterpolate = false);

ditto.

&gt; Source/WebKit/Shared/ShareableBitmap.h:127
&gt; +    WebCore::PlatformImagePtr createPlatformImage(WebCore::BackingStoreCopy = WebCore::CopyBackingStore, bool shouldInterpolate = false) { return createCairoSurface(); }

ditto.

&gt; Source/WebKit/Shared/ShareableBitmap.h:134
&gt; +    RetainPtr&lt;CGImageRef&gt; createCGImage(CGDataProviderRef, bool shouldInterpolate) const;

ditto.

&gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:178
&gt; +    RetainPtr&lt;CGDataProvider&gt; dataProvider = adoptCF(CGDataProviderCreateWithData(this, data(), sizeInBytes(), [](void* typelessBitmap, const void* typelessData, size_t) {

auto

&gt; Source/WebKit/Shared/cg/ShareableBitmapCG.cpp:179
&gt; +        ShareableBitmap* bitmap = static_cast&lt;ShareableBitmap*&gt;(typelessBitmap);

auto*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866771</commentid>
    <comment_count>6</comment_count>
      <attachid>458856</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-05-05 00:59:57 -0700</bug_when>
    <thetext>Created attachment 458856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866918</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-05 11:01:29 -0700</bug_when>
    <thetext>Committed r293846 (250317@main): &lt;https://commits.webkit.org/250317@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458856.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458550</attachid>
            <date>2022-04-28 15:41:04 -0700</date>
            <delta_ts>2022-04-29 12:10:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>ShareableNativeImage.patch</filename>
            <type>text/plain</type>
            <size>16603</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0OWJkMDAyYmMyNTkuLmNjODU3ZmVmZWFhNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDIyLTA0LTI4ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUu
Y29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gTmF0aXZlSW1hZ2Ugc2hvdWxkIHNoYXJlIHRo
ZSBTaGFyZWFibGVCaXRtYXAgZGF0YSB3aGVuIGl0J3Mgc2VudCB0byBHUFUgUHJvY2VzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODc0CisgICAg
ICAgIHJkYXI6Ly85MjAzMTM1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQmFja2luZ1N0
b3JlQ29weS5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZl
ckJhY2tlbmQuaDoKKwogMjAyMi0wNC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgc2hvdWxkIGxhemlseSBj
cmVhdGUgdGhlIERyYXdHbHlwaHNSZWNvcmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZDA2MGFk
OWYzMWFkLi41YTc4MTliYWY4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMu
Y21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTQzOSw2ICsxNDM5
LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQXVk
aW9UcmFja1ByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlvVHJhY2tQcml2YXRl
Q2xpZW50LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9CYWNraW5nU3RvcmVDb3B5LmgKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDliYTFiODIwMzUyYy4uOGM2OTlhYThlZGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yMzcxLDYgKzIzNzEsNyBAQAog
CQk3MkI4QjAzNjI3NTM0NDE0MDBGNzUyQUEgLyogRmlsdGVySW1hZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyNDM1RUY0MjczRDA3NjcwMDA1RTdF
RSAvKiBGaWx0ZXJJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcyQkFDM0FFMjNFMUYwQjAwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tl
bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyQkFD
M0E1MjNFMTczMjgwMDhENzQxQyAvKiBJbWFnZUJ1ZmZlckJhY2tlbmQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkQ3MzY0NDI3ODQ2MUEwMDAz
OTg2NjMgLyogRmlsdGVyUmVzdWx0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzIxMUI1RDYyNzY1MzY4MjAwNzZGRUY4IC8qIEZpbHRlclJlc3VsdHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MkU1
NzY4QjI4MUIyQjU1MDBBNzU0MzIgLyogQmFja2luZ1N0b3JlQ29weS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJFNTc2OEEyODFCMjkyNjAwQTc1NDMy
IC8qIEJhY2tpbmdTdG9yZUNvcHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MkY2NjdFMTI2MEMyNkFDMDBFRTM2QUQgLyogRGlhZ25vc3RpY0xv
Z2dpbmdEb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDcyRjY2N0RGMjYwQzI2NDQwMEVFMzZBRCAvKiBEaWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRjdF
NzQ2Mjc5QjhGNzUwMEQ4MkQyRCAvKiBTb3VyY2VJbWFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGN0U3NDQyNzlCOEY3NDAwRDgyRDJEIC8qIFNv
dXJjZUltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzJGRDMwQUMyN0UzMjE3QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkZEMzBBQTI3RTMyMTdCMDAy
M0NEQUMgLyogU291cmNlQnJ1c2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTE0NjcsNiArMTE0NjgsNyBAQAogCQk3MkMxOEEzRjIzMEIwNEI3
MDA2ODQ3QzcgLyogSW1hZ2VQYWludGluZ09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VQ
YWludGluZ09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJFNDE3NjEx
QTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0VYVHNSR0IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkU0MTc2MjFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTRVhUc1JHQi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3MkU1NzY4QTI4MUIyOTI2MDBBNzU0MzIgLyogQmFja2luZ1N0b3JlQ29weS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCYWNraW5nU3RvcmVDb3B5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTcyRUEwOUY3MjNGQ0NCM0QwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SW1hZ2VCdWZmZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlMaXN0RHJh
d2luZ0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3REcmF3aW5nQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkYxQUQ5RjFBMzkwNEMzMDAwMTRFMTgg
LyogRVhURnJhZ0RlcHRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEVYVEZyYWdEZXB0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTA3MSw2
ICsyOTA3Myw3IEBACiAJCQkJNzIyQTgxNUMyMzhGRDUwNTAwQzAwNTgzIC8qIEFuaW1hdGlvbkZy
YW1lUmF0ZS5oICovLAogCQkJCUJFRjI5RUU5MTcxNUREMDkwMEM0QjRDOSAvKiBBdWRpb1RyYWNr
UHJpdmF0ZS5oICovLAogCQkJCUNEMUY5QjE1MjcwMjM2MEUwMDYxN0VCNiAvKiBBdWRpb1RyYWNr
UHJpdmF0ZUNsaWVudC5oICovLAorCQkJCTcyRTU3NjhBMjgxQjI5MjYwMEE3NTQzMiAvKiBCYWNr
aW5nU3RvcmVDb3B5LmggKi8sCiAJCQkJMkREODcxNDcyNjVGNDM2NDAwNUY5OTdDIC8qIEJpZnVy
Y2F0ZWRHcmFwaGljc0NvbnRleHQuY3BwICovLAogCQkJCTJERDg3MTQ5MjY1RjQzNjUwMDVGOTk3
QyAvKiBCaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmggKi8sCiAJCQkJQTg5OTQzMjcwQjQyMzM4
NzAwRDdDODAyIC8qIEJpdG1hcEltYWdlLmNwcCAqLywKQEAgLTMzODYyLDYgKzMzODY1LDcgQEAK
IAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDQThDODFFMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxQTFCODdEMjA4N0M0QzAwMDk3OUE3NSAv
KiBCYWNrRm9yd2FyZEl0ZW1JZGVudGlmaWVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MkU1NzY4
QjI4MUIyQjU1MDBBNzU0MzIgLyogQmFja2luZ1N0b3JlQ29weS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxMjRFRTgwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQ2MEJCNjE2MUQwQTFCRjAwMDIyMTgxMiAvKiBCYXNlNjRVdGlsaXRpZXMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzMTk4RkJGMjRBMTYwREQwMDQyMEIwNSAvKiBCYXNlQXVkaW9Db250ZXh0
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JhY2tpbmdTdG9yZUNvcHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjE5MDg2ODhlNWFkYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaApAQCAtMCwwICsxLDM1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gQmFja2luZ1N0b3JlQ29weSB7CisgICAgQ29w
eUJhY2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZmZWN0
IHRoZSBjb3B5LgorICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJhd3Mg
bWF5IGFmZmVjdCB0aGUgY29weS4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2Vu
ZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5k
LmgKaW5kZXggZjFmMWRkMTY2MjczLi40ZjE0NjYyYzEwYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQmFja2luZ1N0b3JlQ29weS5o
IgogI2luY2x1ZGUgIkRlc3RpbmF0aW9uQ29sb3JTcGFjZS5oIgogI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXNHTC5oIgpAQCAtNTIsMTEgKzUzLDYgQEAgY2xh
c3MgSW1hZ2U7CiBjbGFzcyBOYXRpdmVJbWFnZTsKIGNsYXNzIFBpeGVsQnVmZmVyOwogCi1lbnVt
IEJhY2tpbmdTdG9yZUNvcHkgewotICAgIENvcHlCYWNraW5nU3RvcmUsIC8vIEd1YXJhbnRlZSBz
dWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUgY29weS4KLSAgICBEb250Q29weUJhY2tp
bmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNvcHkuCi19OwotCiBl
bnVtIGNsYXNzIFByZXNlcnZlUmVzb2x1dGlvbiA6IHVpbnQ4X3QgewogICAgIE5vLAogICAgIFll
cywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMjNhYmUyMGY5YTI3Li5hODAyNWQ5MjcxYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjItMDQtMjggIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5j
b20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBOYXRpdmVJbWFnZSBzaG91bGQgc2hhcmUgdGhl
IFNoYXJlYWJsZUJpdG1hcCBkYXRhIHdoZW4gaXQncyBzZW50IHRvIEdQVSBQcm9jZXNzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4NzQKKyAgICAg
ICAgcmRhcjovLzkyMDMxMzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IG1lbW9yeSBidWZmZXIgaW4g
R1BVUHJvY2VzcyBhbmQgY29weWluZyB0aGUgCisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCBkYXRh
IHRvIGl0LCB3ZSBjYW4gY3JlYXRlIGEgUGxhdGZvcm1JbWFnZSB0aGF0IGRpcmVjdGx5IAorICAg
ICAgICByZWZlcmVuY2VzIHRoaXMgZGF0YS4gVGhpcyB3aWxsIG1ha2UgYWxsIHRoZSBOYXRpdmVJ
bWFnZXMgZGF0YSBiZSBhdHRyaWJ1dGVkCisgICAgICAgIHRvIFdlYlByb2Nlc3MuCisKKyAgICAg
ICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2ZUltYWdlV2l0
aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFibGVCaXRtYXAu
aDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUltYWdl
KToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgorICAgICAgICAo
V2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUltYWdlKToKKyAgICAgICAgKFdlYktpdDo6
U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSk6IERlbGV0ZWQuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBC
YWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKwogMjAyMi0wNC0yOCAgU2FpZCBB
Ym91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVIFByb2Nlc3NdIE1h
a2UgV2ViSW1hZ2UgYmUgYmFja2VkIGJ5IEltYWdlQnVmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5j
cHAKaW5kZXggZDVmYTE1M2FjMmFiLi41MTc3NGIzMWM1M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZC5jcHAKQEAgLTM1NSwxMSArMzU1LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
Y2FjaGVOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFNoYXJlCiAgICAg
aWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJ
bWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpLCBuYXRpdmVJbWFnZVJl
c291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdl
OjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3Jl
KSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkpOwogICAgIGlmICghaW1h
Z2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5h
dGl2ZUltYWdlKCppbWFnZSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIG1f
cmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKGltYWdlLnJlbGVhc2VOb25OdWxs
KCksIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggOTZhMWM3ODJmMTU4Li5jNmQ2NzUyYTgwZmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgorI2luY2x1ZGUgPFdlYkNv
cmUvQmFja2luZ1N0b3JlQ29weS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGVzdGluYXRpb25Db2xv
clNwYWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QbGF0Zm9ybUltYWdlLmg+CkBAIC0xMTYsMTQgKzExNywxNCBAQCBwdWJsaWM6CiAgICAgLy8g
VGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBv
ZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1ha2VDR0ltYWdlKCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNy
ZWF0ZVBsYXRmb3JtSW1hZ2UoKSB7IHJldHVybiBtYWtlQ0dJbWFnZUNvcHkoKTsgfQorICAgIFdl
YkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZShXZWJDb3JlOjpCYWNr
aW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSk7CiAjZWxpZiBVU0UoQ0FJ
Uk8pCiAgICAgLy8gVGhpcyBjcmVhdGVzIGEgQml0bWFwSW1hZ2UgdGhhdCBkaXJlY3RseSByZWZl
cmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUg
dG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJp
dG1hcCB3b24ndCBjaGFuZ2UuCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlUGVy
c2lzdGVudENhaXJvU3VyZmFjZSgpOwogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0
ZUNhaXJvU3VyZmFjZSgpOwogCi0gICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVQ
bGF0Zm9ybUltYWdlKCkgeyByZXR1cm4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7IH0KKyAgICBXZWJD
b3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoV2ViQ29yZTo6QmFja2lu
Z1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUpIHsgcmV0dXJuIGNyZWF0ZUNh
aXJvU3VyZmFjZSgpOyB9CiAjZW5kaWYKIAogcHJpdmF0ZToKQEAgLTEzMiw3ICsxMzMsNiBAQCBw
cml2YXRlOgogI2lmIFVTRShDRykKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJ
bWFnZShDR0RhdGFQcm92aWRlclJlZikgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgcmVsZWFzZUJp
dG1hcENvbnRleHREYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbGVzc0RhdGEp
OwotICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNz
Qml0bWFwLCBjb25zdCB2b2lkKiB0eXBlbGVzc0RhdGEsIHNpemVfdCk7CiAjZW5kaWYKIAogI2lm
IFVTRShDQUlSTykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJs
ZUJpdG1hcENHLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENH
LmNwcAppbmRleCBmMDE3MTcxNGIwOWEuLjhjNTE5NDJhMWExZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTczLDEyICsxNzMsMjUgQEAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2VDb3B5KCkK
IAogUmV0YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2UoKQog
ewotICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBpbiByZWxlYXNlRGF0YVByb3ZpZGVy
RGF0YS4KKyAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgYmVsb3cuCiAgICAgdmVyaWZ5
SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRhKCksIHNpemVJbkJ5dGVzKCkpOwotICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhEYXRhKHRoaXMsIGRhdGEoKSwgc2l6ZUluQnl0ZXMoKSwgcmVsZWFzZURhdGFQ
cm92aWRlckRhdGEpKTsKKworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVByb3Zp
ZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKHRoaXMsIGRhdGEoKSwg
c2l6ZUluQnl0ZXMoKSwgW10odm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVs
ZXNzRGF0YSwgc2l6ZV90KSB7CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwID0gc3Rh
dGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlwZWxlc3NCaXRtYXApOworICAgICAgICBBU1NF
UlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsK
KyAgICAgICAgYml0bWFwLT5kZXJlZigpOworICAgIH0pKTsKKwogICAgIHJldHVybiBjcmVhdGVD
R0ltYWdlKGRhdGFQcm92aWRlci5nZXQoKSk7CiB9CiAKK1BsYXRmb3JtSW1hZ2VQdHIgU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2
aW9yKQoreworICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSkKKyAgICAg
ICAgcmV0dXJuIG1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVybiBtYWtlQ0dJbWFnZSgpOwor
fQorCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdl
KENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlcikgY29uc3QKIHsKICAgICBBU1NFUlRfQVJH
KGRhdGFQcm92aWRlciwgZGF0YVByb3ZpZGVyKTsKQEAgLTIwMiwxMyArMjE1LDYgQEAgdm9pZCBT
aGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0YSh2b2lkKiB0eXBlbGVzc0Jp
dG1hcCwgdm9pZCogdHlwZWwKICAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJl
ZiBpbiBjcmVhdGVHcmFwaGljc0NvbnRleHQuCiB9CiAKLXZvaWQgU2hhcmVhYmxlQml0bWFwOjpy
ZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9pZCog
dHlwZWxlc3NEYXRhLCBzaXplX3QpCi17Ci0gICAgU2hhcmVhYmxlQml0bWFwKiBiaXRtYXAgPSBz
dGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBlbGVzc0JpdG1hcCk7Ci0gICAgQVNTRVJU
X1VOVVNFRCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0YSgpID09IHR5cGVsZXNzRGF0YSk7Ci0g
ICAgYml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlQ0dJbWFnZS4K
LX0KLQogUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZUltYWdlKCkKIHsKICAg
ICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNHSW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVC
aXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3Mv
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcAppbmRleCA3YWUxNWEwZmUwNzAu
LmQ3ZTNkYTcyOWM2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9n
cmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRt
YXBCYWNrZW5kLmNwcApAQCAtMTQ4LDkgKzE0OCw5IEBAIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkK
IH0KICNlbmRpZgogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0
bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkpIGNvbnN0CitSZWZQ
dHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewotICAgIHJl
dHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKCkp
OworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQbGF0Zm9y
bUltYWdlKGNvcHlCZWhhdmlvcikpOwogfQogCiBSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyU2hh
cmVhYmxlQml0bWFwQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHksIFByZXNlcnZl
UmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKaW5kZXggZWM5NzUx
NmE0OGViLi45ODRjYjkyY2I2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCkBAIC0x
NzQsNyArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9yZW1vdGVSZW5kZXJp
bmdCYWNrZW5kUHJveHktPmdldERhdGFGb3JJbWFnZUJ1ZmZlcihtaW1lVHlwZSwgcXVhbGl0eSwg
bV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJD
b3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNv
cHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlKSBjb25zdCBm
aW5hbAorICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdl
YkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTgyLDEwICsxODIsMTAg
QEAgcHJvdGVjdGVkOgogICAgICAgICBhdXRvIGJpdG1hcCA9IG1fcmVtb3RlUmVuZGVyaW5nQmFj
a2VuZFByb3h5LT5nZXRTaGFyZWFibGVCaXRtYXAobV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1cm4gV2ViQ29yZTo6TmF0
aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAtPmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSk7CisgICAgICAg
IHJldHVybiBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZv
cm1JbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSkpOwogICAgIH0KIAotICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkg
PSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQ
cmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVS
ZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNv
cHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdT
dG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlvbiA9IFdl
YkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAg
ICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAg
ICAgIHJldHVybiB7IH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458600</attachid>
            <date>2022-04-29 12:10:26 -0700</date>
            <delta_ts>2022-05-02 02:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239874-20220429121025.patch</filename>
            <type>text/plain</type>
            <size>18099</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjZlNWNhNjkwNDI4NThm
Mjc1MzIzZjRjYWQzZDQxYzQxOTUyMGIwNC4uODgyZjg5OGJkOTBkNGVjNTI0NTdlZmRkMjQ5OTZi
N2FhMGViNTQ0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA0LTI5ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TmF0aXZlSW1hZ2Ugc2hvdWxkIHNoYXJlIHRoZSBTaGFyZWFibGVCaXRtYXAgZGF0YSB3aGVuIGl0
J3Mgc2VudCB0byBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODc0CisgICAgICAgIHJkYXI6Ly85MjAzMTM1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQmFja2luZ1N0b3JlQ29weS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisKIDIwMjItMDQtMjggIFBhdHJpY2sgR3JpZmZpcyAgPHBncmlmZmlzQGlnYWxpYS5jb20+
CiAKICAgICAgICAgQ1NQOiBGaXggbWl4aW5nIHN0cmljdC1keW5hbWljIGFuZCB1bnNhZmUtaW5s
aW5lIHBvbGljaWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI0MGNjYTE1MjI4NDQwMDIwNDlhYWM1OTE4MmMwMDk1
YTljNGViNTEuLmNjNzRmODQ4MTgxOTdhZTdkMTYyOWNkNzMyMTY1YTdhMThjZjczNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMjItMDQtMjkgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fp
ZEBhcHBsZS5jb20+CisKKyAgICAgICAgW0dQVSBQcm9jZXNzXSBOYXRpdmVJbWFnZSBzaG91bGQg
c2hhcmUgdGhlIFNoYXJlYWJsZUJpdG1hcCBkYXRhIHdoZW4gaXQncyBzZW50IHRvIEdQVSBQcm9j
ZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4
NzQKKyAgICAgICAgcmRhcjovLzkyMDMxMzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBhbGxvY2F0aW5nIGEgbmV3IG1lbW9yeSBi
dWZmZXIgaW4gR1BVUHJvY2VzcyBhbmQgY29weWluZyB0aGUgCisgICAgICAgIFNoYXJlYWJsZUJp
dG1hcCBkYXRhIHRvIGl0LCB3ZSBjYW4gY3JlYXRlIGEgUGxhdGZvcm1JbWFnZSB0aGF0IGRpcmVj
dGx5IAorICAgICAgICByZWZlcmVuY2VzIHRoaXMgZGF0YS4gVGhpcyB3aWxsIG1ha2UgYWxsIHRo
ZSBOYXRpdmVJbWFnZXMgZGF0YSBiZSBhdHRyaWJ1dGVkCisgICAgICAgIHRvIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZU5hdGl2
ZUltYWdlV2l0aFF1YWxpZmllZElkZW50aWZpZXIpOgorICAgICAgICAqIFNoYXJlZC9TaGFyZWFi
bGVCaXRtYXAuaDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0
Zm9ybUltYWdlKToKKyAgICAgICAgKiBTaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpTaGFyZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUltYWdlKToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSk6IERlbGV0
ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaDoKKwogMjAyMi0wNC0y
OCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQg
QyBmaWxlcyBpbiBVbmlmaWVkIEJ1aWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXggZDA2MGFkOWYz
MWFkMmU2MTQ4Mzc5NTIzNzBiYTUwMDExOWQwYWFjNC4uNWE3ODE5YmFmODhjN2I2MGMzNDBkMmQ4
MGQwOGI5ZmUyYWUxZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDM5LDYgKzE0MzksNyBA
QCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9BdWRpb1Ry
YWNrUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGVDbGll
bnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0JpdG1hcEltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
OWJhMWI4MjAzNTJjMTRkOTYwNjYzM2YzMDFmOWQ0NTM3MjhlMmUyNS4uOGM2OTlhYThlZGQ0N2Yx
Y2M4MjA3YjYwNjdmYjBjNGY5NjliMTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3MSw2ICsyMzcxLDcgQEAKIAkJNzJC
OEIwMzYyNzUzNDQxNDAwRjc1MkFBIC8qIEZpbHRlckltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQzNUVGNDI3M0QwNzY3MDAwNUU3RUUgLyog
RmlsdGVySW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkJBQzNBNTIz
RTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJENzM2NDQyNzg0NjFBMDAwMzk4NjYz
IC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1bHRzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzJFNTc2OEIy
ODFCMkI1NTAwQTc1NDMyIC8qIEJhY2tpbmdTdG9yZUNvcHkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRTU3NjhBMjgxQjI5MjYwMEE3NTQzMiAvKiBC
YWNraW5nU3RvcmVDb3B5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dnaW5n
RG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MkY2NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21haW4uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MkY3RTc0NjI3
OUI4Rjc1MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAvKiBTb3VyY2VJ
bWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcyRkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3QjAwMjNDREFD
IC8qIFNvdXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTExNDY3LDYgKzExNDY4LDcgQEAKIAkJNzJDMThBM0YyMzBCMDRCNzAwNjg0
N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUGFpbnRp
bmdPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQxNzYxMUEyRThE
MkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJF
NDE3NjIxQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NzJFNTc2OEEyODFCMjkyNjAwQTc1NDMyIC8qIEJhY2tpbmdTdG9yZUNvcHkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQmFja2luZ1N0b3JlQ29weS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3
MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTcyRUEwOUY5MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlzdERyYXdpbmdD
b250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEOUYxQTM5MDRDMzAwMDE0RTE4IC8qIEVY
VEZyYWdEZXB0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFWFRG
cmFnRGVwdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkwNzEsNiArMjkw
NzMsNyBAQAogCQkJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRpb25GcmFtZVJh
dGUuaCAqLywKIAkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9UcmFja1ByaXZh
dGUuaCAqLywKIAkJCQlDRDFGOUIxNTI3MDIzNjBFMDA2MTdFQjYgLyogQXVkaW9UcmFja1ByaXZh
dGVDbGllbnQuaCAqLywKKwkJCQk3MkU1NzY4QTI4MUIyOTI2MDBBNzU0MzIgLyogQmFja2luZ1N0
b3JlQ29weS5oICovLAogCQkJCTJERDg3MTQ3MjY1RjQzNjQwMDVGOTk3QyAvKiBCaWZ1cmNhdGVk
R3JhcGhpY3NDb250ZXh0LmNwcCAqLywKIAkJCQkyREQ4NzE0OTI2NUY0MzY1MDA1Rjk5N0MgLyog
QmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oICovLAogCQkJCUE4OTk0MzI3MEI0MjMzODcwMEQ3
QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8sCkBAIC0zMzg2Miw2ICszMzg2NSw3IEBACiAJCQkJ
NTE3NDFEMEYwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUExQjg3RDIwODdDNEMwMDA5NzlBNzUgLyogQmFj
a0ZvcndhcmRJdGVtSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJFNTc2OEIyODFC
MkI1NTAwQTc1NDMyIC8qIEJhY2tpbmdTdG9yZUNvcHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAqLywKIAkJCQk0
NjBCQjYxNjFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQk4MzE5OEZCRjI0QTE2MEREMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29udGV4dC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CYWNraW5nU3RvcmVDb3B5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9C
YWNraW5nU3RvcmVDb3B5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwODY4OGU1YWRjZGMzYTc2NDE5NDcyYWRi
N2Q4MTk1MWRkYzMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaApAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2VudW0gQmFja2luZ1N0b3JlQ29weSB7CisgICAgQ29weUJhY2tp
bmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZmZWN0IHRoZSBj
b3B5LgorICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJhd3MgbWF5IGFm
ZmVjdCB0aGUgY29weS4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5k
ZXggZjFmMWRkMTY2MjczYTE5NDc2MjIzMTdkZWQzMjNiYzBjODBmNGEzNC4uNGYxNDY2MmMxMGE4
MDJhZTNlNjY3M2JhMTY2MzY3ODczMzNjZGE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVDb3B5LmgiCiAjaW5j
bHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCkBAIC01MiwxMSArNTMsNiBAQCBjbGFzcyBJbWFn
ZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgUGl4ZWxCdWZmZXI7CiAKLWVudW0gQmFja2lu
Z1N0b3JlQ29weSB7Ci0gICAgQ29weUJhY2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVl
bnQgZHJhd3MgZG9uJ3QgYWZmZWN0IHRoZSBjb3B5LgotICAgIERvbnRDb3B5QmFja2luZ1N0b3Jl
IC8vIFN1YnNlcXVlbnQgZHJhd3MgbWF5IGFmZmVjdCB0aGUgY29weS4KLX07Ci0KIGVudW0gY2xh
c3MgUHJlc2VydmVSZXNvbHV0aW9uIDogdWludDhfdCB7CiAgICAgTm8sCiAgICAgWWVzLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmlu
Z0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJl
bmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGQ1ZmExNTNhYzJhYjVmZTMyMzQ3YWQ0MjM4NzdlMTUz
M2MwN2QyYmYuLjUxNzc0YjMxYzUzYzIzY2NhMjk1ZjM1NjY5ZGRhMWUzMGJkZGQ5MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdC
YWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTM1NSwxMSArMzU1LDExIEBAIHZvaWQgUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNv
bnN0IFNoYXJlCiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
aW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgp
LCBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAgYXV0byBpbWFn
ZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKERvbnRD
b3B5QmFja2luZ1N0b3JlKSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkp
OwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKCppbWFnZSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKGltYWdl
LnJlbGVhc2VOb25OdWxsKCksIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggOTZhMWM3ODJmMTU4ZTRh
ZGM5MTI1ODgwNDM5MWMyZTdhZWRmMjIxNy4uYzZkNjc1MmE4MGZkNjMwNjFkZjA2YjQyMDY1NDI3
ZjAwZmI3NjZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9CYWNraW5nU3RvcmVDb3B5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2UuaD4KQEAgLTExNiwxNCArMTE3LDE0IEBAIHB1
YmxpYzoKICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQg
dGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVJlZj4gbWFrZUNHSW1hZ2UoKTsKIAotICAgIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZSgpIHsgcmV0dXJuIG1ha2VDR0ltYWdlQ29w
eSgpOyB9CisgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVQbGF0Zm9ybUltYWdl
KFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2luZ1N0b3JlKTsK
ICNlbGlmIFVTRShDQUlSTykKICAgICAvLyBUaGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0
IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhlIHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlz
IGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hlbiB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRo
ZSBzaGFyZWFibGUgYml0bWFwIHdvbid0IGNoYW5nZS4KICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFj
ZV90PiBjcmVhdGVQZXJzaXN0ZW50Q2Fpcm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1
cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUlt
YWdlUHRyIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2Uo
KTsgfQorICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZShX
ZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSkgeyBy
ZXR1cm4gY3JlYXRlQ2Fpcm9TdXJmYWNlKCk7IH0KICNlbmRpZgogCiBwcml2YXRlOgpAQCAtMTMy
LDcgKzEzMyw2IEBAIHByaXZhdGU6CiAjaWYgVVNFKENHKQogICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmKSBjb25zdDsKICAgICBzdGF0aWMg
dm9pZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIHZvaWQq
IHR5cGVsZXNzRGF0YSk7Ci0gICAgc3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRhdGEo
dm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KTsK
ICNlbmRpZgogCiAjaWYgVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cvU2hh
cmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IGYwMTcxNzE0YjA5YTE2ZmQ2NWI4YzUxYTcyNDNkY2Iy
NTVlM2FhMTAuLmY0NmFhN2RjY2I5N2YwMGFmYWU4ZDMwNzYyMDlmYjQ5ZTE3MmQ3MmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTE3Mywx
MiArMTczLDI5IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1ha2VD
R0ltYWdlQ29weSgpCiAKIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1h
a2VDR0ltYWdlKCkKIHsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYgaW4gcmVsZWFz
ZURhdGFQcm92aWRlckRhdGEuCiAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vub3VnaChkYXRh
KCksIHNpemVJbkJ5dGVzKCkpOwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVBy
b3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKHRoaXMsIGRhdGEo
KSwgc2l6ZUluQnl0ZXMoKSwgcmVsZWFzZURhdGFQcm92aWRlckRhdGEpKTsKKworICAgIFJldGFp
blB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRl
ckNyZWF0ZVdpdGhEYXRhKHRoaXMsIGRhdGEoKSwgc2l6ZUluQnl0ZXMoKSwgW10odm9pZCogdHlw
ZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KSB7CisgICAgICAg
IFNoYXJlYWJsZUJpdG1hcCogYml0bWFwID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4o
dHlwZWxlc3NCaXRtYXApOworICAgICAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0
bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsKKyAgICAgICAgYml0bWFwLT5kZXJlZigpOwor
ICAgIH0pKTsKKworICAgIGlmICghZGF0YVByb3ZpZGVyKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKKworICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBkZXJlZiBhYm92ZS4KKwogICAgIHJldHVy
biBjcmVhdGVDR0ltYWdlKGRhdGFQcm92aWRlci5nZXQoKSk7CiB9CiAKK1BsYXRmb3JtSW1hZ2VQ
dHIgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUltYWdlKEJhY2tpbmdTdG9yZUNvcHkg
Y29weUJlaGF2aW9yKQoreworICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9y
ZSkKKyAgICAgICAgcmV0dXJuIG1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVybiBtYWtlQ0dJ
bWFnZSgpOworfQorCiBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlcikgY29uc3QKIHsKICAgICBB
U1NFUlRfQVJHKGRhdGFQcm92aWRlciwgZGF0YVByb3ZpZGVyKTsKQEAgLTE5MCw4ICsyMDcsNyBA
QCBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENH
RGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aQogICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxv
d2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VS
ZWY+IGltYWdlID0gYWRvcHRDRihDR0ltYWdlQ3JlYXRlKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUu
aGVpZ2h0KCksIGJpdHNQZXJQaXhlbCAvIDQsIGJpdHNQZXJQaXhlbCwgYnl0ZXNQZXJSb3csIGNv
bG9yU3BhY2UobV9jb25maWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCBk
YXRhUHJvdmlkZXIsIDAsIGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAg
cmV0dXJuIGltYWdlOworICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXplLndp
ZHRoKCksIG1fc2l6ZS5oZWlnaHQoKSwgYml0c1BlclBpeGVsIC8gNCwgYml0c1BlclBpeGVsLCBi
eXRlc1BlclJvdywgY29sb3JTcGFjZShtX2NvbmZpZ3VyYXRpb24pLCBiaXRtYXBJbmZvKG1fY29u
ZmlndXJhdGlvbiksIGRhdGFQcm92aWRlciwgMCwgdHJ1ZSwga0NHUmVuZGVyaW5nSW50ZW50RGVm
YXVsdCkpOwogfQogCiB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHRE
YXRhKHZvaWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbGVzc0RhdGEpCkBAIC0yMDIsMTMg
KzIxOCw2IEBAIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFwQ29udGV4dERhdGEo
dm9pZCogdHlwZWxlc3NCaXRtYXAsIHZvaWQqIHR5cGVsCiAgICAgYml0bWFwLT5kZXJlZigpOyAv
LyBCYWxhbmNlZCBieSByZWYgaW4gY3JlYXRlR3JhcGhpY3NDb250ZXh0LgogfQogCi12b2lkIFNo
YXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEodm9pZCogdHlwZWxlc3NCaXRt
YXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90KQotewotICAgIFNoYXJlYWJsZUJp
dG1hcCogYml0bWFwID0gc3RhdGljX2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlwZWxlc3NCaXRt
YXApOwotICAgIEFTU0VSVF9VTlVTRUQodHlwZWxlc3NEYXRhLCBiaXRtYXAtPmRhdGEoKSA9PSB0
eXBlbGVzc0RhdGEpOwotICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgcmVmIGlu
IGNyZWF0ZUNHSW1hZ2UuCi19Ci0KIFJlZlB0cjxJbWFnZT4gU2hhcmVhYmxlQml0bWFwOjpjcmVh
dGVJbWFnZSgpCiB7CiAgICAgaWYgKGF1dG8gcGxhdGZvcm1JbWFnZSA9IG1ha2VDR0ltYWdlKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdl
QnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKaW5k
ZXggN2FlMTVhMGZlMDcwYzgzMTBlNTdlZmM4M2VmMGJlMzM3NTUxMDdiYy4uZDdlM2RhNzI5YzY4
OTU0ZDM0Mjg3NGQ3MzA5Yjg4MzllZmUzN2E3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZm
ZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcApAQCAtMTQ4LDkgKzE0OCw5IEBAIFJlZlB0cjxj
YWlyb19zdXJmYWNlX3Q+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y3JlYXRl
Q2Fpcm9TdXJmYWNlKCkKIH0KICNlbmRpZgogCi1SZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVm
ZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNv
cHkpIGNvbnN0CitSZWZQdHI8TmF0aXZlSW1hZ2U+IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZDo6Y29weU5hdGl2ZUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBj
b25zdAogewotICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFwLT5jcmVhdGVQ
bGF0Zm9ybUltYWdlKCkpOworICAgIHJldHVybiBOYXRpdmVJbWFnZTo6Y3JlYXRlKG1fYml0bWFw
LT5jcmVhdGVQbGF0Zm9ybUltYWdlKGNvcHlCZWhhdmlvcikpOwogfQogCiBSZWZQdHI8SW1hZ2U+
IEltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weUltYWdlKEJhY2tpbmdTdG9y
ZUNvcHksIFByZXNlcnZlUmVzb2x1dGlvbikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmgKaW5kZXggZWM5NzUxNmE0OGViM2EwMzQ5NDRiMGE5OGMwMmZiMTlkZDUzZTYyMy4uOTg0Y2I5
MmNiNjg2Zjc0OTYwZjUyYzUyODhhZmExZTVjNDRmNGZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZl
clByb3h5LmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBt
X3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0RGF0YUZvckltYWdlQnVmZmVyKG1pbWVU
eXBlLCBxdWFsaXR5LCBtX3JlbmRlcmluZ1Jlc291cmNlSWRlbnRpZmllcik7CiAgICAgfQogCi0g
ICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5TmF0aXZlSW1hZ2UoV2ViQ29yZTo6
QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHk6OkNvcHlCYWNraW5n
U3RvcmUpIGNvbnN0IGZpbmFsCisgICAgUmVmUHRyPFdlYkNvcmU6Ok5hdGl2ZUltYWdlPiBjb3B5
TmF0aXZlSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNvcHlCYWNr
aW5nU3RvcmUpIGNvbnN0IGZpbmFsCiAgICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0x
ODIsMTAgKzE4MiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIGF1dG8gYml0bWFwID0gbV9yZW1v
dGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmdldFNoYXJlYWJsZUJpdG1hcChtX3JlbmRlcmluZ1Jl
c291cmNlSWRlbnRpZmllciwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpZZXMpOwogICAg
ICAgICBpZiAoIWJpdG1hcCkKICAgICAgICAgICAgIHJldHVybiB7IH07Ci0gICAgICAgIHJldHVy
biBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFn
ZSgpKTsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFw
LT5jcmVhdGVQbGF0Zm9ybUltYWdlKFdlYkNvcmU6OkRvbnRDb3B5QmFja2luZ1N0b3JlKSk7CiAg
ICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFj
a2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHk6OkNvcHlCYWNraW5nU3Rv
cmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBwcmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJD
b3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxXZWJD
b3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3Jl
OjpDb3B5QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVS
ZXNvbHV0aW9uID0gV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWwK
ICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VMWSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHkpKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458668</attachid>
            <date>2022-05-02 02:05:00 -0700</date>
            <delta_ts>2022-05-04 15:55:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239874-20220502020459.patch</filename>
            <type>text/plain</type>
            <size>19123</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBjYWMyY2U5YWIyYjky
NjgwY2NiYjAzNzFmZGQ0ZmJhNDhjYjc5My4uZGVlODY4M2QyYzNmOTNmYzg4ZGNhYjg3ODVmYmU4
NjkwYTViZGU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA1LTAxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TmF0aXZlSW1hZ2Ugc2hvdWxkIHNoYXJlIHRoZSBTaGFyZWFibGVCaXRtYXAgZGF0YSB3aGVuIGl0
J3Mgc2VudCB0byBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODc0CisgICAgICAgIHJkYXI6Ly85MjAzMTM1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvQmFja2luZ1N0b3JlQ29weS5oOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlckJhY2tlbmQuaDoKKyAgICAgICAgKCk6IERlbGV0
ZWQuCisKIDIwMjItMDUtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUkVHUkVTU0lPTihyMjgyMTE3KTogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2ls
bERlc3Ryb3lJbWFnZUJ1ZmZlcigpIGNhbiBjcmFzaCBpZiB0aGUgUmVtb3RlUmVuZGVyaW5nQmFj
a2VuZCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBkYzgzNDFjNzkzNGM0
NmMyOGRjMzA5NWQ1NjQ1NThmZDRlOGMxNzAzLi5kZjljOGMzOTUyZjYxMmM2ZTI3ODdlZjAyOGNh
MzUxZmNlZmFiYzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIyLTA1LTAxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TmF0aXZlSW1hZ2Ugc2hvdWxkIHNoYXJlIHRoZSBTaGFyZWFibGVCaXRtYXAgZGF0YSB3aGVuIGl0
J3Mgc2VudCB0byBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODc0CisgICAgICAgIHJkYXI6Ly85MjAzMTM1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3RlYWQgb2YgYWxsb2Nh
dGluZyBhIG5ldyBtZW1vcnkgYnVmZmVyIGluIEdQVVByb2Nlc3MgYW5kIGNvcHlpbmcgdGhlIAor
ICAgICAgICBTaGFyZWFibGVCaXRtYXAgZGF0YSB0byBpdCwgd2UgY2FuIGNyZWF0ZSBhIFBsYXRm
b3JtSW1hZ2UgdGhhdCBkaXJlY3RseSAKKyAgICAgICAgcmVmZXJlbmNlcyB0aGlzIGRhdGEuIFRo
aXMgd2lsbCBtYWtlIGFsbCB0aGUgTmF0aXZlSW1hZ2VzIGRhdGEgYmUgYXR0cmlidXRlZAorICAg
ICAgICB0byBXZWJQcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1v
dGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5n
QmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKToKKyAgICAg
ICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJs
ZUJpdG1hcDo6Y3JlYXRlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgICogU2hhcmVkL2NnL1NoYXJl
YWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjptYWtl
Q0dJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUGxhdGZv
cm1JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlQ0dJbWFn
ZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZURhdGFQ
cm92aWRlckRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL2dyYXBoaWNz
L0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5hdGl2ZUltYWdlIGNvbnN0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclBy
b3h5Lmg6CisKIDIwMjItMDUtMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjgyMTE3KTogUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6
d2lsbERlc3Ryb3lJbWFnZUJ1ZmZlcigpIGNhbiBjcmFzaCBpZiB0aGUgUmVtb3RlUmVuZGVyaW5n
QmFja2VuZCBoYXMgYWxyZWFkeSBiZWVuIGRlc3Ryb3llZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5kZXgg
ZDA2MGFkOWYzMWFkMmU2MTQ4Mzc5NTIzNzBiYTUwMDExOWQwYWFjNC4uNWE3ODE5YmFmODhjN2I2
MGMzNDBkMmQ4MGQwOGI5ZmUyYWUxZTczMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC0xNDM5LDYg
KzE0MzksNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvQW5pbWF0aW9uRnJhbWVSYXRlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy9BdWRpb1RyYWNrUHJpdmF0ZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQXVkaW9UcmFja1By
aXZhdGVDbGllbnQuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpZnVyY2F0ZWRHcmFwaGljc0NvbnRleHQuaAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db2xv
ci5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOWJhMWI4MjAzNTJjMTRkOTYwNjYzM2YzMDFmOWQ0NTM3MjhlMmUyNS4uOGM2OTlh
YThlZGQ0N2YxY2M4MjA3YjYwNjdmYjBjNGY5NjliMTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjM3MSw2ICsyMzcxLDcg
QEAKIAkJNzJCOEIwMzYyNzUzNDQxNDAwRjc1MkFBIC8qIEZpbHRlckltYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjQzNUVGNDI3M0QwNzY3MDAw
NUU3RUUgLyogRmlsdGVySW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MkJBQzNBRTIzRTFGMEIwMDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJC
YWNrZW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MkJBQzNBNTIzRTE3MzI4MDA4RDc0MUMgLyogSW1hZ2VCdWZmZXJCYWNrZW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJENzM2NDQyNzg0NjFB
MDAwMzk4NjYzIC8qIEZpbHRlclJlc3VsdHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcyMTFCNUQ2Mjc2NTM2ODIwMDc2RkVGOCAvKiBGaWx0ZXJSZXN1
bHRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
NzJFNTc2OEIyODFCMkI1NTAwQTc1NDMyIC8qIEJhY2tpbmdTdG9yZUNvcHkuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRTU3NjhBMjgxQjI5MjYwMEE3
NTQzMiAvKiBCYWNraW5nU3RvcmVDb3B5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJGNjY3RTEyNjBDMjZBQzAwRUUzNkFEIC8qIERpYWdub3N0
aWNMb2dnaW5nRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3MkY2NjdERjI2MEMyNjQ0MDBFRTM2QUQgLyogRGlhZ25vc3RpY0xvZ2dpbmdEb21h
aW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3
MkY3RTc0NjI3OUI4Rjc1MDBEODJEMkQgLyogU291cmNlSW1hZ2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRjdFNzQ0Mjc5QjhGNzQwMEQ4MkQyRCAv
KiBTb3VyY2VJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTcyRkQzMEFDMjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzJGRDMwQUEyN0UzMjE3
QjAwMjNDREFDIC8qIFNvdXJjZUJydXNoLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExNDY3LDYgKzExNDY4LDcgQEAKIAkJNzJDMThBM0YyMzBC
MDRCNzAwNjg0N0M3IC8qIEltYWdlUGFpbnRpbmdPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElt
YWdlUGFpbnRpbmdPcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRTQx
NzYxMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNFWFRzUkdCLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNzJFNDE3NjIxQTJFOEQyRjAwNEM1NjJBIC8qIEpTRVhUc1JHQi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0VYVHNSR0IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNzJFNTc2OEEyODFCMjkyNjAwQTc1NDMyIC8qIEJhY2tpbmdTdG9yZUNvcHkuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmFja2luZ1N0b3JlQ29weS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3MkVBMDlGNzIzRkNDQjNEMDA4NTA0QTUgLyogRGlzcGxheUxpc3RJbWFnZUJ1ZmZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEltYWdlQnVmZmVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTcyRUEwOUY5MjNGQ0NDNkEwMDg1MDRBNSAvKiBEaXNwbGF5TGlz
dERyYXdpbmdDb250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRl
eHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzJGMUFEOUYxQTM5MDRDMzAwMDE0
RTE4IC8qIEVYVEZyYWdEZXB0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBFWFRGcmFnRGVwdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjkw
NzEsNiArMjkwNzMsNyBAQAogCQkJCTcyMkE4MTVDMjM4RkQ1MDUwMEMwMDU4MyAvKiBBbmltYXRp
b25GcmFtZVJhdGUuaCAqLywKIAkJCQlCRUYyOUVFOTE3MTVERDA5MDBDNEI0QzkgLyogQXVkaW9U
cmFja1ByaXZhdGUuaCAqLywKIAkJCQlDRDFGOUIxNTI3MDIzNjBFMDA2MTdFQjYgLyogQXVkaW9U
cmFja1ByaXZhdGVDbGllbnQuaCAqLywKKwkJCQk3MkU1NzY4QTI4MUIyOTI2MDBBNzU0MzIgLyog
QmFja2luZ1N0b3JlQ29weS5oICovLAogCQkJCTJERDg3MTQ3MjY1RjQzNjQwMDVGOTk3QyAvKiBC
aWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmNwcCAqLywKIAkJCQkyREQ4NzE0OTI2NUY0MzY1MDA1
Rjk5N0MgLyogQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dC5oICovLAogCQkJCUE4OTk0MzI3MEI0
MjMzODcwMEQ3QzgwMiAvKiBCaXRtYXBJbWFnZS5jcHAgKi8sCkBAIC0zMzg2Miw2ICszMzg2NSw3
IEBACiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0Zvcndh
cmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUExQjg3RDIwODdDNEMwMDA5NzlB
NzUgLyogQmFja0ZvcndhcmRJdGVtSWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzJF
NTc2OEIyODFCMkI1NTAwQTc1NDMyIC8qIEJhY2tpbmdTdG9yZUNvcHkuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMTI0RUU4MEMyNjQxQ0QwMDlFMjM0OSAvKiBCYXJQcm9wLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0NjBCQjYxNjFEMEExQkYwMDAyMjE4MTIgLyogQmFzZTY0VXRpbGl0aWVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4MzE5OEZCRjI0QTE2MEREMDA0MjBCMDUgLyogQmFzZUF1ZGlvQ29u
dGV4dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9CYWNraW5nU3RvcmVDb3B5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CYWNraW5nU3RvcmVDb3B5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTkwODY4OGU1YWRjZGMzYTc2
NDE5NDcyYWRiN2Q4MTk1MWRkYzMwZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaApAQCAtMCwwICsxLDM1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2VudW0gQmFja2luZ1N0b3JlQ29weSB7CisgICAg
Q29weUJhY2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZm
ZWN0IHRoZSBjb3B5LgorICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJh
d3MgbWF5IGFmZmVjdCB0aGUgY29weS4KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFj
a2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNr
ZW5kLmgKaW5kZXggNzQxNTNlMjNlNWViZDdhMzkzZDc2YTA5ZDhjMGZkMDJmOWM4MDZjOS4uNzBh
MzhjZjZiNDkyOTAwMGUwZTU0ZjEwMWZmMGYwZDU5NjhiNWFkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCYWNraW5nU3RvcmVDb3B5
LmgiCiAjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNwYWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRS
ZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dMLmgiCkBAIC01MiwxMSArNTMsNiBAQCBj
bGFzcyBJbWFnZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwogY2xhc3MgUGl4ZWxCdWZmZXI7CiAKLWVu
dW0gQmFja2luZ1N0b3JlQ29weSB7Ci0gICAgQ29weUJhY2tpbmdTdG9yZSwgLy8gR3VhcmFudGVl
IHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZmZWN0IHRoZSBjb3B5LgotICAgIERvbnRDb3B5QmFj
a2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJhd3MgbWF5IGFmZmVjdCB0aGUgY29weS4KLX07Ci0K
IGVudW0gY2xhc3MgUHJlc2VydmVSZXNvbHV0aW9uIDogdWludDhfdCB7CiAgICAgTm8sCiAgICAg
WWVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90
ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4IGZiMWIwNTYwNzY1NzY0NGRmODU0MWY4
Nzk0ODM5MWE2MDNkZDk3NzguLjExNThkZTk1M2FlZjQyYzgzZDcyYTg0YTNmMGE3MTYyOGFjMDdj
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhp
Y3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAgLTM0NywxMSArMzQ3LDExIEBAIHZvaWQg
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVu
dGlmaWVyKGNvbnN0IFNoYXJlCiAgICAgaWYgKCFiaXRtYXApCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZv
cm1JbWFnZSgpLCBuYXRpdmVJbWFnZVJlc291cmNlSWRlbnRpZmllci5vYmplY3QoKSk7CisgICAg
YXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0Zm9ybUlt
YWdlKERvbnRDb3B5QmFja2luZ1N0b3JlLCB0cnVlKSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50
aWZpZXIub2JqZWN0KCkpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKCppbWFnZSwgbmF0aXZlSW1h
Z2VSZXNvdXJjZUlkZW50aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5h
dGl2ZUltYWdlKGltYWdlLnJlbGVhc2VOb25OdWxsKCksIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVm
PEZvbnQ+JiYgZm9udCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJs
ZUJpdG1hcC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXgg
OTZhMWM3ODJmMTU4ZTRhZGM5MTI1ODgwNDM5MWMyZTdhZWRmMjIxNy4uYmEwNDA5ZGMzZThkNDZi
MmJkM2NlODM5ZTI0ZDVmM2Q5ZTAxYmMxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlQml0bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxl
Qml0bWFwLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2hh
cmVkTWVtb3J5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9CYWNraW5nU3RvcmVDb3B5Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9EZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2UuaD4KQEAgLTExNCwy
NSArMTE1LDI0IEBAIHB1YmxpYzoKIAogICAgIC8vIFRoaXMgY3JlYXRlcyBhIENHSW1hZ2VSZWYg
dGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8g
VGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBv
ZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCi0gICAgUmV0YWluUHRyPENHSW1h
Z2VSZWY+IG1ha2VDR0ltYWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1ha2VDR0lt
YWdlKGJvb2wgc2hvdWxkSW50ZXJwb2xhdGUgPSBmYWxzZSk7CiAKLSAgICBXZWJDb3JlOjpQbGF0
Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSB7IHJldHVybiBtYWtlQ0dJbWFnZUNv
cHkoKTsgfQorICAgIFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFn
ZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwg
Ym9vbCBzaG91bGRJbnRlcnBvbGF0ZSA9IGZhbHNlKTsKICNlbGlmIFVTRShDQUlSTykKICAgICAv
LyBUaGlzIGNyZWF0ZXMgYSBCaXRtYXBJbWFnZSB0aGF0IGRpcmVjdGx5IHJlZmVyZW5jZXMgdGhl
IHNoYXJlZCBiaXRtYXAgZGF0YS4KICAgICAvLyBUaGlzIGlzIG9ubHkgc2FmZSB0byB1c2Ugd2hl
biB3ZSBrbm93IHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzaGFyZWFibGUgYml0bWFwIHdvbid0
IGNoYW5nZS4KICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBjcmVhdGVQZXJzaXN0ZW50Q2Fp
cm9TdXJmYWNlKCk7CiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlQ2Fpcm9TdXJm
YWNlKCk7CiAKLSAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNyZWF0ZVBsYXRmb3JtSW1h
Z2UoKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQorICAgIFdlYkNvcmU6OlBsYXRm
b3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5
ID0gV2ViQ29yZTo6Q29weUJhY2tpbmdTdG9yZSwgYm9vbCBzaG91bGRJbnRlcnBvbGF0ZSA9IGZh
bHNlKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQogI2VuZGlmCiAKIHByaXZhdGU6
CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBDb25maWd1cmF0
aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmKTsKIAogI2lmIFVTRShDRykKLSAgICBSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJlZikgY29uc3Q7CisgICAg
UmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYsIGJv
b2wgc2hvdWxkSW50ZXJwb2xhdGUpIGNvbnN0OwogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VCaXRt
YXBDb250ZXh0RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKTsK
LSAgICBzdGF0aWMgdm9pZCByZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBlbGVzc0Jp
dG1hcCwgY29uc3Qgdm9pZCogdHlwZWxlc3NEYXRhLCBzaXplX3QpOwogI2VuZGlmCiAKICNpZiBV
U0UoQ0FJUk8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVC
aXRtYXBDRy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5j
cHAKaW5kZXggZjAxNzE3MTRiMDlhMTZmZDY1YjhjNTFhNzI0M2RjYjI1NWUzYWExMC4uZjlkODQz
NDNmM2I0NzEwYTY0YWVhNDZkOWVhYjUzZWE4ZGQ1ODdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcApAQCAtMTcxLDE1ICsxNzEsMzIgQEAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IFNoYXJlYWJsZUJpdG1hcDo6bWFrZUNHSW1hZ2VDb3B5KCkKICAg
ICByZXR1cm4gYWRvcHRDRihDR0JpdG1hcENvbnRleHRDcmVhdGVJbWFnZShncmFwaGljc0NvbnRl
eHQtPnBsYXRmb3JtQ29udGV4dCgpKSk7CiB9CiAKLVJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFy
ZWFibGVCaXRtYXA6Om1ha2VDR0ltYWdlKCkKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFi
bGVCaXRtYXA6Om1ha2VDR0ltYWdlKGJvb2wgc2hvdWxkSW50ZXJwb2xhdGUpCiB7Ci0gICAgcmVm
KCk7IC8vIEJhbGFuY2VkIGJ5IGRlcmVmIGluIHJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhLgogICAg
IHZlcmlmeUltYWdlQnVmZmVySXNCaWdFbm91Z2goZGF0YSgpLCBzaXplSW5CeXRlcygpKTsKLSAg
ICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXI+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoRGF0YSh0aGlzLCBkYXRhKCksIHNpemVJbkJ5dGVzKCksIHJlbGVh
c2VEYXRhUHJvdmlkZXJEYXRhKSk7Ci0gICAgcmV0dXJuIGNyZWF0ZUNHSW1hZ2UoZGF0YVByb3Zp
ZGVyLmdldCgpKTsKKworICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRlcj4gZGF0YVByb3ZpZGVy
ID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKHRoaXMsIGRhdGEoKSwgc2l6
ZUluQnl0ZXMoKSwgW10odm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNz
RGF0YSwgc2l6ZV90KSB7CisgICAgICAgIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwID0gc3RhdGlj
X2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlwZWxlc3NCaXRtYXApOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsKKyAg
ICAgICAgYml0bWFwLT5kZXJlZigpOworICAgIH0pKTsKKworICAgIGlmICghZGF0YVByb3ZpZGVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBk
ZXJlZiBhYm92ZS4KKworICAgIHJldHVybiBjcmVhdGVDR0ltYWdlKGRhdGFQcm92aWRlci5nZXQo
KSwgc2hvdWxkSW50ZXJwb2xhdGUpOwogfQogCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlcikg
Y29uc3QKK1BsYXRmb3JtSW1hZ2VQdHIgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBib29sIHNob3VsZEludGVycG9sYXRl
KQoreworICAgIGlmIChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSkKKyAgICAgICAg
cmV0dXJuIG1ha2VDR0ltYWdlQ29weSgpOworICAgIHJldHVybiBtYWtlQ0dJbWFnZShzaG91bGRJ
bnRlcnBvbGF0ZSk7Cit9CisKK1JldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6
OmNyZWF0ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpZGVyLCBib29sIHNob3Vs
ZEludGVycG9sYXRlKSBjb25zdAogewogICAgIEFTU0VSVF9BUkcoZGF0YVByb3ZpZGVyLCBkYXRh
UHJvdmlkZXIpOwogICAgIGF1dG8gYml0c1BlclBpeGVsID0gY2FsY3VsYXRlQnl0ZXNQZXJQaXhl
bChtX2NvbmZpZ3VyYXRpb24pICogODsKQEAgLTE5MCw4ICsyMDcsNyBAQCBSZXRhaW5QdHI8Q0dJ
bWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVm
IGRhdGFQcm92aQogICAgIGlmIChieXRlc1BlclJvdy5oYXNPdmVyZmxvd2VkKCkpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlID0gYWRv
cHRDRihDR0ltYWdlQ3JlYXRlKG1fc2l6ZS53aWR0aCgpLCBtX3NpemUuaGVpZ2h0KCksIGJpdHNQ
ZXJQaXhlbCAvIDQsIGJpdHNQZXJQaXhlbCwgYnl0ZXNQZXJSb3csIGNvbG9yU3BhY2UobV9jb25m
aWd1cmF0aW9uKSwgYml0bWFwSW5mbyhtX2NvbmZpZ3VyYXRpb24pLCBkYXRhUHJvdmlkZXIsIDAs
IGZhbHNlLCBrQ0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0KSk7Ci0gICAgcmV0dXJuIGltYWdlOwor
ICAgIHJldHVybiBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXplLndpZHRoKCksIG1fc2l6ZS5o
ZWlnaHQoKSwgYml0c1BlclBpeGVsIC8gNCwgYml0c1BlclBpeGVsLCBieXRlc1BlclJvdywgY29s
b3JTcGFjZShtX2NvbmZpZ3VyYXRpb24pLCBiaXRtYXBJbmZvKG1fY29uZmlndXJhdGlvbiksIGRh
dGFQcm92aWRlciwgMCwgc2hvdWxkSW50ZXJwb2xhdGUsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKIH0KIAogdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250ZXh0RGF0
YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWxlc3NEYXRhKQpAQCAtMjAyLDEzICsy
MTgsNiBAQCB2b2lkIFNoYXJlYWJsZUJpdG1hcDo6cmVsZWFzZUJpdG1hcENvbnRleHREYXRhKHZv
aWQqIHR5cGVsZXNzQml0bWFwLCB2b2lkKiB0eXBlbAogICAgIGJpdG1hcC0+ZGVyZWYoKTsgLy8g
QmFsYW5jZWQgYnkgcmVmIGluIGNyZWF0ZUdyYXBoaWNzQ29udGV4dC4KIH0KIAotdm9pZCBTaGFy
ZWFibGVCaXRtYXA6OnJlbGVhc2VEYXRhUHJvdmlkZXJEYXRhKHZvaWQqIHR5cGVsZXNzQml0bWFw
LCBjb25zdCB2b2lkKiB0eXBlbGVzc0RhdGEsIHNpemVfdCkKLXsKLSAgICBTaGFyZWFibGVCaXRt
YXAqIGJpdG1hcCA9IHN0YXRpY19jYXN0PFNoYXJlYWJsZUJpdG1hcCo+KHR5cGVsZXNzQml0bWFw
KTsKLSAgICBBU1NFUlRfVU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlw
ZWxlc3NEYXRhKTsKLSAgICBiaXRtYXAtPmRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBj
cmVhdGVDR0ltYWdlLgotfQotCiBSZWZQdHI8SW1hZ2U+IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRl
SW1hZ2UoKQogewogICAgIGlmIChhdXRvIHBsYXRmb3JtSW1hZ2UgPSBtYWtlQ0dJbWFnZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9JbWFnZUJ1
ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9ncmFwaGljcy9JbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCmluZGV4
IDdhZTE1YTBmZTA3MGM4MzEwZTU3ZWZjODNlZjBiZTMzNzU1MTA3YmMuLmQ3ZTNkYTcyOWM2ODk1
NGQzNDI4NzRkNzMwOWI4ODM5ZWZlMzdhN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVy
U2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHAKQEAgLTE0OCw5ICsxNDgsOSBAQCBSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNyZWF0ZUNh
aXJvU3VyZmFjZSgpCiB9CiAjZW5kaWYKIAotUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZl
clNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5
KSBjb25zdAorUmVmUHRyPE5hdGl2ZUltYWdlPiBJbWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJh
Y2tlbmQ6OmNvcHlOYXRpdmVJbWFnZShCYWNraW5nU3RvcmVDb3B5IGNvcHlCZWhhdmlvcikgY29u
c3QKIHsKLSAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+Y3JlYXRlUGxh
dGZvcm1JbWFnZSgpKTsKKyAgICByZXR1cm4gTmF0aXZlSW1hZ2U6OmNyZWF0ZShtX2JpdG1hcC0+
Y3JlYXRlUGxhdGZvcm1JbWFnZShjb3B5QmVoYXZpb3IpKTsKIH0KIAogUmVmUHRyPEltYWdlPiBJ
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQ6OmNvcHlJbWFnZShCYWNraW5nU3RvcmVD
b3B5LCBQcmVzZXJ2ZVJlc29sdXRpb24pIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5o
CmluZGV4IGVjOTc1MTZhNDhlYjNhMDM0OTQ0YjBhOThjMDJmYjE5ZGQ1M2U2MjMuLjk4NGNiOTJj
YjY4NmY3NDk2MGY1MmM1Mjg4YWZhMWU1YzQ0ZjRmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlSW1hZ2VCdWZmZXJQ
cm94eS5oCkBAIC0xNzQsNyArMTc0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbV9y
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHktPmdldERhdGFGb3JJbWFnZUJ1ZmZlcihtaW1lVHlw
ZSwgcXVhbGl0eSwgbV9yZW5kZXJpbmdSZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0KIAotICAg
IFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5hdGl2ZUltYWdlKFdlYkNvcmU6OkJh
Y2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0
b3JlKSBjb25zdCBmaW5hbAorICAgIFJlZlB0cjxXZWJDb3JlOjpOYXRpdmVJbWFnZT4gY29weU5h
dGl2ZUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5QmFja2lu
Z1N0b3JlKSBjb25zdCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90
ZVJlbmRlcmluZ0JhY2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMTgy
LDEwICsxODIsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBhdXRvIGJpdG1hcCA9IG1fcmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXRTaGFyZWFibGVCaXRtYXAobV9yZW5kZXJpbmdSZXNv
dXJjZUlkZW50aWZpZXIsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6WWVzKTsKICAgICAg
ICAgaWYgKCFiaXRtYXApCiAgICAgICAgICAgICByZXR1cm4geyB9OwotICAgICAgICByZXR1cm4g
V2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0ZShiaXRtYXAtPmNyZWF0ZVBsYXRmb3JtSW1hZ2Uo
KSk7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpOYXRpdmVJbWFnZTo6Y3JlYXRlKGJpdG1hcC0+
Y3JlYXRlUGxhdGZvcm1JbWFnZShXZWJDb3JlOjpEb250Q29weUJhY2tpbmdTdG9yZSkpOwogICAg
IH0KIAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbWFnZT4gY29weUltYWdlKFdlYkNvcmU6OkJhY2tp
bmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5OjpDb3B5QmFja2luZ1N0b3Jl
LCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb24gcHJlc2VydmVSZXNvbHV0aW9uID0gV2ViQ29y
ZTo6UHJlc2VydmVSZXNvbHV0aW9uOjpObykgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8V2ViQ29y
ZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6
Q29weUJhY2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVz
b2x1dGlvbiA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZpbmFsCiAg
ICAgewogICAgICAgICBpZiAoVU5MSUtFTFkoIW1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5
KSkKICAgICAgICAgICAgIHJldHVybiB7IH07Cg==
</data>
<flag name="review"
          id="487588"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458856</attachid>
            <date>2022-05-05 00:59:57 -0700</date>
            <delta_ts>2022-05-05 11:01:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239874-20220505005956.patch</filename>
            <type>text/plain</type>
            <size>19418</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmIwMmFjNDg2M2U3NjM0
YjNlMTBkNTFjYzgzNDFjOTFjYjM3NDM3NS4uZTJkMDBmNDI0OWUxZDQxMjZkNmVhYzM0MTZiM2E3
MGVjYTIyNDRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTA1LTA0ICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10g
TmF0aXZlSW1hZ2Ugc2hvdWxkIHNoYXJlIHRoZSBTaGFyZWFibGVCaXRtYXAgZGF0YSB3aGVuIGl0
J3Mgc2VudCB0byBHUFUgUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM5ODc0CisgICAgICAgIHJkYXI6Ly85MjAzMTM1OQorCisgICAgICAg
IFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0JhY2tpbmdTdG9yZUNvcHkuaDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmg6CisgICAgICAgICgpOiBEZWxldGVk
LgorCiAyMDIyLTA1LTA0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbQXBwbGUgUGF5XSBSRUdSRVNTSU9OKHIyOTE1ODgpOiBgYXBwZWFyYW5jZTogLWFwcGxl
LXBheS1idXR0b25gIGRvZXNuJ3Qgd29yayB3aXRoIGBib3JkZXItd2lkdGg6IDBgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IDE3MDE1ZGU0ZGNmMzQ3YmNmMTUzYmI4YzI4YTVlMDYwNDU3MWYyN2UuLmFhZDlhNGMwNGU3
ODAwZmY1Y2YzMjc5MjFlNjJiNzZkZjc4MjExYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMjItMDUtMDQgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2FpZEBhcHBsZS5jb20+CisKKyAgICAg
ICAgW0dQVSBQcm9jZXNzXSBOYXRpdmVJbWFnZSBzaG91bGQgc2hhcmUgdGhlIFNoYXJlYWJsZUJp
dG1hcCBkYXRhIHdoZW4gaXQncyBzZW50IHRvIEdQVSBQcm9jZXNzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzk4NzQKKyAgICAgICAgcmRhcjovLzky
MDMxMzU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIElu
c3RlYWQgb2YgYWxsb2NhdGluZyBhIG5ldyBtZW1vcnkgYnVmZmVyIGluIEdQVVByb2Nlc3MgYW5k
IGNvcHlpbmcgdGhlIAorICAgICAgICBTaGFyZWFibGVCaXRtYXAgZGF0YSB0byBpdCwgd2UgY2Fu
IGNyZWF0ZSBhIFBsYXRmb3JtSW1hZ2UgdGhhdCBkaXJlY3RseSAKKyAgICAgICAgcmVmZXJlbmNl
cyB0aGlzIGRhdGEuIFRoaXMgd2lsbCBtYWtlIGFsbCB0aGUgTmF0aXZlSW1hZ2VzIGRhdGEgYmUg
YXR0cmlidXRlZAorICAgICAgICB0byBXZWJQcm9jZXNzLgorCisgICAgICAgICogR1BVUHJvY2Vz
cy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRpdmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVu
dGlmaWVyKToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlQml0bWFwLmg6CisgICAgICAgIChX
ZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgICog
U2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U2hhcmVh
YmxlQml0bWFwOjptYWtlQ0dJbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlUGxhdGZvcm1JbWFnZSk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6Y3JlYXRlQ0dJbWFnZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1h
cDo6cmVsZWFzZURhdGFQcm92aWRlckRhdGEpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OkltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFwQmFja2VuZDo6Y29weU5h
dGl2ZUltYWdlIGNvbnN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1v
dGVJbWFnZUJ1ZmZlclByb3h5Lmg6CisKIDIwMjItMDUtMDQgIFRpbSBIb3J0b24gIDx0aW1vdGh5
X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI5MzcxNik6IG1hY0Nh
dGFseXN0IFdlYktpdCBidWlsZCBmYWlsczsgb3ZlcmxhcHBpbmcgY29udGVudCBhdCAvU3lzdGVt
L0xpYnJhcnkvRmVhdHVyZUZsYWdzL0RvbWFpbi9XZWJLaXQucGxpc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtl
CmluZGV4IGQwNjBhZDlmMzFhZDJlNjE0ODM3OTUyMzcwYmE1MDAxMTlkMGFhYzQuLjc1N2YzMjYx
N2Y1N2QzOTQzNTMyMDE0ZDhmYjBiMDFkMzA1YjJhYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAt
MTQzOSw2ICsxNDM5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0FuaW1hdGlvbkZyYW1lUmF0ZS5oCiAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvQXVkaW9UcmFja1ByaXZhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0F1ZGlv
VHJhY2tQcml2YXRlQ2xpZW50LmgKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9Db3B5SW1hZ2VPcHRp
b25zLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaWZ1cmNhdGVkR3JhcGhpY3NDb250ZXh0LmgK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvQ29sb3IuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDliYTFiODIwMzUyYzE0ZDk2MDY2MzNmMzAxZjlkNDUzNzI4ZTJlMjUu
LmY1NjA0MGM2YmVkYzMyNjFiNWU1NWUxZDUxZjE1ZmY5NTJkMGRiZTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIzNzEsNiAr
MjM3MSw3IEBACiAJCTcyQjhCMDM2Mjc1MzQ0MTQwMEY3NTJBQSAvKiBGaWx0ZXJJbWFnZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzI0MzVFRjQyNzNE
MDc2NzAwMDVFN0VFIC8qIEZpbHRlckltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzJCQUMzQUUyM0UxRjBCMDAwOEQ3NDFDIC8qIEltYWdl
QnVmZmVyQmFja2VuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNzJCQUMzQTUyM0UxNzMyODAwOEQ3NDFDIC8qIEltYWdlQnVmZmVyQmFja2VuZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRDczNjQ0
Mjc4NDYxQTAwMDM5ODY2MyAvKiBGaWx0ZXJSZXN1bHRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MjExQjVENjI3NjUzNjgyMDA3NkZFRjggLyogRmls
dGVyUmVzdWx0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTcyRTU3NjhCMjgxQjJCNTUwMEE3NTQzMiAvKiBDb3B5SW1hZ2VPcHRpb25zLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkU1NzY4QTI4MUIy
OTI2MDBBNzU0MzIgLyogQ29weUltYWdlT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcyRjY2N0UxMjYwQzI2QUMwMEVFMzZBRCAvKiBE
aWFnbm9zdGljTG9nZ2luZ0RvbWFpbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzJGNjY3REYyNjBDMjY0NDAwRUUzNkFEIC8qIERpYWdub3N0aWNMb2dn
aW5nRG9tYWluLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNzJGN0U3NDYyNzlCOEY3NTAwRDgyRDJEIC8qIFNvdXJjZUltYWdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MkY3RTc0NDI3OUI4Rjc0MDBE
ODJEMkQgLyogU291cmNlSW1hZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MkZEMzBBQzI3RTMyMTdCMDAyM0NEQUMgLyogU291cmNlQnJ1c2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcyRkQzMEFB
MjdFMzIxN0IwMDIzQ0RBQyAvKiBTb3VyY2VCcnVzaC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTQ2Nyw2ICsxMTQ2OCw3IEBACiAJCTcyQzE4
QTNGMjMwQjA0QjcwMDY4NDdDNyAvKiBJbWFnZVBhaW50aW5nT3B0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZVBhaW50aW5nT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MkU0MTc2MTFBMkU4RDJGMDA0QzU2MkEgLyogSlNFWFRzUkdCLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRVhUc1JHQi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTcyRTQxNzYyMUEyRThEMkYwMDRDNTYyQSAvKiBKU0VYVHNSR0IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFWFRzUkdCLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcyRTU3NjhBMjgxQjI5MjYwMEE3NTQzMiAvKiBDb3B5SW1hZ2VPcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvcHlJbWFnZU9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzJFQTA5RjcyM0ZDQ0IzRDAwODUwNEE1IC8qIERpc3BsYXlMaXN0SW1h
Z2VCdWZmZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJbWFnZUJ1ZmZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MkVBMDlGOTIzRkNDQzZBMDA4NTA0QTUgLyogRGlz
cGxheUxpc3REcmF3aW5nQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyRjFBRDlGMUEzOTA0
QzMwMDAxNEUxOCAvKiBFWFRGcmFnRGVwdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRVhURnJhZ0RlcHRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI5MTA1LDYgKzI5MTA3LDcgQEAKIAkJCQk3MkJBQzNBNzIzRTE3MzI4MDA4RDc0MUMgLyog
Q29uY3JldGVJbWFnZUJ1ZmZlci5oICovLAogCQkJCUNEQUQxQTU4MjdBRkJGMzkwMDY5OTI4NSAv
KiBDb250ZW50VHlwZVV0aWxpdGllcy5jcHAgKi8sCiAJCQkJQ0RBRDFBNTcyN0FGQkYzOTAwNjk5
Mjg1IC8qIENvbnRlbnRUeXBlVXRpbGl0aWVzLmggKi8sCisJCQkJNzJFNTc2OEEyODFCMjkyNjAw
QTc1NDMyIC8qIENvcHlJbWFnZU9wdGlvbnMuaCAqLywKIAkJCQkyRDJGQzA1NDE0NjBDRDZGMDAy
NjM2MzMgLyogQ3Jvc3NmYWRlR2VuZXJhdGVkSW1hZ2UuY3BwICovLAogCQkJCTJEMkZDMDU1MTQ2
MENENkYwMDI2MzYzMyAvKiBDcm9zc2ZhZGVHZW5lcmF0ZWRJbWFnZS5oICovLAogCQkJCUE4Q0I0
MTAyMEU4NUI4QTUwMDMyQzRGMCAvKiBEYXNoQXJyYXkuaCAqLywKQEAgLTM0MTY2LDYgKzM0MTY5
LDcgQEAKIAkJCQk3QTU2OTk3MDIwODZDNjE5MDAwRTA0MzMgLyogQ29va2llUmVxdWVzdEhlYWRl
ckZpZWxkUHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDAyMTJEMTMxREIzN0IwMDQwOTFB
OCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTIwQkJBRjFGMUNFQ0U3
MDBFRkVCRjEgLyogQ29va2llU3RvcmFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk3
MkU1NzY4QjI4MUIyQjU1MDBBNzU0MzIgLyogQ29weUltYWdlT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJM0Y4MDIwMzUxRTlFNDdCRjAwREVDNjFEIC8qIENvcmVBdWRpb0NhcHR1cmVEZXZp
Y2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGODAyMDM3MUU5RTQ3QzUwMERFQzYxRCAvKiBDb3Jl
QXVkaW9DYXB0dXJlRGV2aWNlTWFuYWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGQ0NDM0Iy
NzQ2Njc1NjAwODkyQUQ2IC8qIENvcmVBdWRpb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29weUltYWdl
T3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29weUltYWdlT3B0
aW9ucy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhhMWE1OTZmYTA2YTYwZmMzYWY5ZjczZDkwZGExNmYxZDc3MWNi
ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b3B5SW1hZ2VPcHRpb25zLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitlbnVtIEJhY2tpbmdTdG9yZUNvcHkgeworICAgIENvcHlCYWNraW5nU3RvcmUsIC8v
IEd1YXJhbnRlZSBzdWJzZXF1ZW50IGRyYXdzIGRvbid0IGFmZmVjdCB0aGUgY29weS4KKyAgICBE
b250Q29weUJhY2tpbmdTdG9yZSAvLyBTdWJzZXF1ZW50IGRyYXdzIG1heSBhZmZlY3QgdGhlIGNv
cHkuCit9OworCitlbnVtIGNsYXNzIFNob3VsZEludGVycG9sYXRlIDogYm9vbCB7CisgICAgWWVz
LCAvLyBBcHBseSBhIHBpeGVsLXNtb290aGluZyBhbGdvcml0aG0gdG8gdGhlIGltYWdlLgorICAg
IE5vIC8vIEVkZ2VzIG9mIHRoZSBpbWFnZSBtYXkgYXBwZWFyIHBpeGVsYXRlZC4KK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlQnVmZmVyQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXJCYWNrZW5kLmgKaW5kZXggNzQxNTNlMjNlNWViZDdhMzkzZDc2
YTA5ZDhjMGZkMDJmOWM4MDZjOS4uY2Y3MTViMGEwY2QxYjUxNTcwNjE4MmVmM2I2ZTZhMDUzODQ2
ODM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VC
dWZmZXJCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VCdWZmZXJCYWNrZW5kLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJDb3B5SW1hZ2VPcHRpb25zLmgiCiAjaW5jbHVkZSAiRGVzdGluYXRpb25Db2xvclNw
YWNlLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NUeXBlc0dM
LmgiCkBAIC01MiwxMSArNTMsNiBAQCBjbGFzcyBJbWFnZTsKIGNsYXNzIE5hdGl2ZUltYWdlOwog
Y2xhc3MgUGl4ZWxCdWZmZXI7CiAKLWVudW0gQmFja2luZ1N0b3JlQ29weSB7Ci0gICAgQ29weUJh
Y2tpbmdTdG9yZSwgLy8gR3VhcmFudGVlIHN1YnNlcXVlbnQgZHJhd3MgZG9uJ3QgYWZmZWN0IHRo
ZSBjb3B5LgotICAgIERvbnRDb3B5QmFja2luZ1N0b3JlIC8vIFN1YnNlcXVlbnQgZHJhd3MgbWF5
IGFmZmVjdCB0aGUgY29weS4KLX07Ci0KIGVudW0gY2xhc3MgUHJlc2VydmVSZXNvbHV0aW9uIDog
dWludDhfdCB7CiAgICAgTm8sCiAgICAgWWVzLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCmluZGV4
IDRiZWIwYTM4MjU3Mzk0OWQ2YWEwNjk0MjQyMWNlNzFiN2JhYTcyYTguLjgzMmZkYWY1MWNhOWE0
OGNhYTRiYjdjZTllMzAxMjU0MzM2NWViOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZC5jcHAKQEAg
LTM0NywxMSArMzQ3LDExIEBAIHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6Y2FjaGVOYXRp
dmVJbWFnZVdpdGhRdWFsaWZpZWRJZGVudGlmaWVyKGNvbnN0IFNoYXJlCiAgICAgaWYgKCFiaXRt
YXApCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gaW1hZ2UgPSBOYXRpdmVJbWFnZTo6Y3Jl
YXRlKGJpdG1hcC0+Y3JlYXRlUGxhdGZvcm1JbWFnZSgpLCBuYXRpdmVJbWFnZVJlc291cmNlSWRl
bnRpZmllci5vYmplY3QoKSk7CisgICAgYXV0byBpbWFnZSA9IE5hdGl2ZUltYWdlOjpjcmVhdGUo
Yml0bWFwLT5jcmVhdGVQbGF0Zm9ybUltYWdlKERvbnRDb3B5QmFja2luZ1N0b3JlLCBTaG91bGRJ
bnRlcnBvbGF0ZTo6WWVzKSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50aWZpZXIub2JqZWN0KCkp
OwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fcmVtb3RlUmVzb3Vy
Y2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKCppbWFnZSwgbmF0aXZlSW1hZ2VSZXNvdXJjZUlkZW50
aWZpZXIpOworICAgIG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZU5hdGl2ZUltYWdlKGltYWdl
LnJlbGVhc2VOb25OdWxsKCksIG5hdGl2ZUltYWdlUmVzb3VyY2VJZGVudGlmaWVyKTsKIH0KIAog
dm9pZCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpjYWNoZUZvbnQoUmVmPEZvbnQ+JiYgZm9udCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZUJpdG1hcC5oIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKaW5kZXggOTZhMWM3ODJmMTU4ZTRh
ZGM5MTI1ODgwNDM5MWMyZTdhZWRmMjIxNy4uMzljMGQ3Zjc5NTFmNWVkMTJjNTk4NmE2YmQ1MDkz
ZTI1YTIzMjJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0
bWFwLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlQml0bWFwLmgKQEAgLTI2
LDYgKzI2LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiU2hhcmVkTWVtb3J5LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9Db3B5SW1hZ2VPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9E
ZXN0aW5hdGlvbkNvbG9yU3BhY2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtSW1hZ2UuaD4KQEAgLTExNCwyNSArMTE1LDI0IEBAIHB1
YmxpYzoKIAogICAgIC8vIFRoaXMgY3JlYXRlcyBhIENHSW1hZ2VSZWYgdGhhdCBkaXJlY3RseSBy
ZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFwIGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNh
ZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxl
IGJpdG1hcCB3b24ndCBjaGFuZ2UuCi0gICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1ha2VDR0lt
YWdlKCk7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IG1ha2VDR0ltYWdlKFdlYkNvcmU6OlNo
b3VsZEludGVycG9sYXRlID0gV2ViQ29yZTo6U2hvdWxkSW50ZXJwb2xhdGU6Ok5vKTsKIAotICAg
IFdlYkNvcmU6OlBsYXRmb3JtSW1hZ2VQdHIgY3JlYXRlUGxhdGZvcm1JbWFnZSgpIHsgcmV0dXJu
IG1ha2VDR0ltYWdlQ29weSgpOyB9CisgICAgV2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVh
dGVQbGF0Zm9ybUltYWdlKFdlYkNvcmU6OkJhY2tpbmdTdG9yZUNvcHkgPSBXZWJDb3JlOjpDb3B5
QmFja2luZ1N0b3JlLCBXZWJDb3JlOjpTaG91bGRJbnRlcnBvbGF0ZSA9IFdlYkNvcmU6OlNob3Vs
ZEludGVycG9sYXRlOjpObyk7CiAjZWxpZiBVU0UoQ0FJUk8pCiAgICAgLy8gVGhpcyBjcmVhdGVz
IGEgQml0bWFwSW1hZ2UgdGhhdCBkaXJlY3RseSByZWZlcmVuY2VzIHRoZSBzaGFyZWQgYml0bWFw
IGRhdGEuCiAgICAgLy8gVGhpcyBpcyBvbmx5IHNhZmUgdG8gdXNlIHdoZW4gd2Uga25vdyB0aGF0
IHRoZSBjb250ZW50cyBvZiB0aGUgc2hhcmVhYmxlIGJpdG1hcCB3b24ndCBjaGFuZ2UuCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gY3JlYXRlUGVyc2lzdGVudENhaXJvU3VyZmFjZSgpOwog
ICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGNyZWF0ZUNhaXJvU3VyZmFjZSgpOwogCi0gICAg
V2ViQ29yZTo6UGxhdGZvcm1JbWFnZVB0ciBjcmVhdGVQbGF0Zm9ybUltYWdlKCkgeyByZXR1cm4g
Y3JlYXRlQ2Fpcm9TdXJmYWNlKCk7IH0KKyAgICBXZWJDb3JlOjpQbGF0Zm9ybUltYWdlUHRyIGNy
ZWF0ZVBsYXRmb3JtSW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9IFdlYkNvcmU6OkNv
cHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlNob3VsZEludGVycG9sYXRlID0gV2ViQ29yZTo6U2hv
dWxkSW50ZXJwb2xhdGU6Ok5vKSB7IHJldHVybiBjcmVhdGVDYWlyb1N1cmZhY2UoKTsgfQogI2Vu
ZGlmCiAKIHByaXZhdGU6CiAgICAgU2hhcmVhYmxlQml0bWFwKGNvbnN0IFdlYkNvcmU6OkludFNp
emUmLCBDb25maWd1cmF0aW9uLCBSZWY8U2hhcmVkTWVtb3J5PiYmKTsKIAogI2lmIFVTRShDRykK
LSAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gY3JlYXRlQ0dJbWFnZShDR0RhdGFQcm92aWRlclJl
ZikgY29uc3Q7CisgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGNyZWF0ZUNHSW1hZ2UoQ0dEYXRh
UHJvdmlkZXJSZWYsIFdlYkNvcmU6OlNob3VsZEludGVycG9sYXRlKSBjb25zdDsKICAgICBzdGF0
aWMgdm9pZCByZWxlYXNlQml0bWFwQ29udGV4dERhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIHZv
aWQqIHR5cGVsZXNzRGF0YSk7Ci0gICAgc3RhdGljIHZvaWQgcmVsZWFzZURhdGFQcm92aWRlckRh
dGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIGNvbnN0IHZvaWQqIHR5cGVsZXNzRGF0YSwgc2l6ZV90
KTsKICNlbmRpZgogCiAjaWYgVVNFKENBSVJPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvY2cvU2hhcmVhYmxlQml0bWFwQ0cuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvY2cv
U2hhcmVhYmxlQml0bWFwQ0cuY3BwCmluZGV4IGYwMTcxNzE0YjA5YTE2ZmQ2NWI4YzUxYTcyNDNk
Y2IyNTVlM2FhMTAuLmI0NjRiOTc4NDQyZjMxMGQ1MzE0OTYzNDdkMmM2NjFhMWZlZmY5ZDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL2NnL1NoYXJlYWJsZUJpdG1hcENHLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9jZy9TaGFyZWFibGVCaXRtYXBDRy5jcHAKQEAgLTE3
MSwxNSArMTcxLDMyIEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6Om1h
a2VDR0ltYWdlQ29weSgpCiAgICAgcmV0dXJuIGFkb3B0Q0YoQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkpOwogfQogCi1SZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZSgpCitSZXRhaW5QdHI8
Q0dJbWFnZVJlZj4gU2hhcmVhYmxlQml0bWFwOjptYWtlQ0dJbWFnZShTaG91bGRJbnRlcnBvbGF0
ZSBzaG91bGRJbnRlcnBvbGF0ZSkKIHsKLSAgICByZWYoKTsgLy8gQmFsYW5jZWQgYnkgZGVyZWYg
aW4gcmVsZWFzZURhdGFQcm92aWRlckRhdGEuCiAgICAgdmVyaWZ5SW1hZ2VCdWZmZXJJc0JpZ0Vu
b3VnaChkYXRhKCksIHNpemVJbkJ5dGVzKCkpOwotICAgIFJldGFpblB0cjxDR0RhdGFQcm92aWRl
cj4gZGF0YVByb3ZpZGVyID0gYWRvcHRDRihDR0RhdGFQcm92aWRlckNyZWF0ZVdpdGhEYXRhKHRo
aXMsIGRhdGEoKSwgc2l6ZUluQnl0ZXMoKSwgcmVsZWFzZURhdGFQcm92aWRlckRhdGEpKTsKLSAg
ICByZXR1cm4gY3JlYXRlQ0dJbWFnZShkYXRhUHJvdmlkZXIuZ2V0KCkpOworCisgICAgYXV0byBk
YXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEodGhpcywg
ZGF0YSgpLCBzaXplSW5CeXRlcygpLCBbXSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgY29uc3Qgdm9p
ZCogdHlwZWxlc3NEYXRhLCBzaXplX3QpIHsKKyAgICAgICAgYXV0byogYml0bWFwID0gc3RhdGlj
X2Nhc3Q8U2hhcmVhYmxlQml0bWFwKj4odHlwZWxlc3NCaXRtYXApOworICAgICAgICBBU1NFUlRf
VU5VU0VEKHR5cGVsZXNzRGF0YSwgYml0bWFwLT5kYXRhKCkgPT0gdHlwZWxlc3NEYXRhKTsKKyAg
ICAgICAgYml0bWFwLT5kZXJlZigpOworICAgIH0pKTsKKworICAgIGlmICghZGF0YVByb3ZpZGVy
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJlZigpOyAvLyBCYWxhbmNlZCBieSBk
ZXJlZiBhYm92ZS4KKworICAgIHJldHVybiBjcmVhdGVDR0ltYWdlKGRhdGFQcm92aWRlci5nZXQo
KSwgc2hvdWxkSW50ZXJwb2xhdGUpOwogfQogCi1SZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hhcmVh
YmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRlcikg
Y29uc3QKK1BsYXRmb3JtSW1hZ2VQdHIgU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVQbGF0Zm9ybUlt
YWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yLCBTaG91bGRJbnRlcnBvbGF0ZSBzaG91
bGRJbnRlcnBvbGF0ZSkKK3sKKyAgICBpZiAoY29weUJlaGF2aW9yID09IENvcHlCYWNraW5nU3Rv
cmUpCisgICAgICAgIHJldHVybiBtYWtlQ0dJbWFnZUNvcHkoKTsKKyAgICByZXR1cm4gbWFrZUNH
SW1hZ2Uoc2hvdWxkSW50ZXJwb2xhdGUpOworfQorCitSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gU2hh
cmVhYmxlQml0bWFwOjpjcmVhdGVDR0ltYWdlKENHRGF0YVByb3ZpZGVyUmVmIGRhdGFQcm92aWRl
ciwgU2hvdWxkSW50ZXJwb2xhdGUgc2hvdWxkSW50ZXJwb2xhdGUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUX0FSRyhkYXRhUHJvdmlkZXIsIGRhdGFQcm92aWRlcik7CiAgICAgYXV0byBiaXRzUGVyUGl4
ZWwgPSBjYWxjdWxhdGVCeXRlc1BlclBpeGVsKG1fY29uZmlndXJhdGlvbikgKiA4OwpAQCAtMTkw
LDggKzIwNyw3IEBAIFJldGFpblB0cjxDR0ltYWdlUmVmPiBTaGFyZWFibGVCaXRtYXA6OmNyZWF0
ZUNHSW1hZ2UoQ0dEYXRhUHJvdmlkZXJSZWYgZGF0YVByb3ZpCiAgICAgaWYgKGJ5dGVzUGVyUm93
Lmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZXRhaW5Q
dHI8Q0dJbWFnZVJlZj4gaW1hZ2UgPSBhZG9wdENGKENHSW1hZ2VDcmVhdGUobV9zaXplLndpZHRo
KCksIG1fc2l6ZS5oZWlnaHQoKSwgYml0c1BlclBpeGVsIC8gNCwgYml0c1BlclBpeGVsLCBieXRl
c1BlclJvdywgY29sb3JTcGFjZShtX2NvbmZpZ3VyYXRpb24pLCBiaXRtYXBJbmZvKG1fY29uZmln
dXJhdGlvbiksIGRhdGFQcm92aWRlciwgMCwgZmFsc2UsIGtDR1JlbmRlcmluZ0ludGVudERlZmF1
bHQpKTsKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0dJbWFnZUNyZWF0
ZShtX3NpemUud2lkdGgoKSwgbV9zaXplLmhlaWdodCgpLCBiaXRzUGVyUGl4ZWwgLyA0LCBiaXRz
UGVyUGl4ZWwsIGJ5dGVzUGVyUm93LCBjb2xvclNwYWNlKG1fY29uZmlndXJhdGlvbiksIGJpdG1h
cEluZm8obV9jb25maWd1cmF0aW9uKSwgZGF0YVByb3ZpZGVyLCAwLCBzaG91bGRJbnRlcnBvbGF0
ZSA9PSBTaG91bGRJbnRlcnBvbGF0ZTo6WWVzID8gdHJ1ZSA6IGZhbHNlLCBrQ0dSZW5kZXJpbmdJ
bnRlbnREZWZhdWx0KSk7CiB9CiAKIHZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlQml0bWFw
Q29udGV4dERhdGEodm9pZCogdHlwZWxlc3NCaXRtYXAsIHZvaWQqIHR5cGVsZXNzRGF0YSkKQEAg
LTIwMiwxMyArMjE4LDYgQEAgdm9pZCBTaGFyZWFibGVCaXRtYXA6OnJlbGVhc2VCaXRtYXBDb250
ZXh0RGF0YSh2b2lkKiB0eXBlbGVzc0JpdG1hcCwgdm9pZCogdHlwZWwKICAgICBiaXRtYXAtPmRl
cmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHJlZiBpbiBjcmVhdGVHcmFwaGljc0NvbnRleHQuCiB9CiAK
LXZvaWQgU2hhcmVhYmxlQml0bWFwOjpyZWxlYXNlRGF0YVByb3ZpZGVyRGF0YSh2b2lkKiB0eXBl
bGVzc0JpdG1hcCwgY29uc3Qgdm9pZCogdHlwZWxlc3NEYXRhLCBzaXplX3QpCi17Ci0gICAgU2hh
cmVhYmxlQml0bWFwKiBiaXRtYXAgPSBzdGF0aWNfY2FzdDxTaGFyZWFibGVCaXRtYXAqPih0eXBl
bGVzc0JpdG1hcCk7Ci0gICAgQVNTRVJUX1VOVVNFRCh0eXBlbGVzc0RhdGEsIGJpdG1hcC0+ZGF0
YSgpID09IHR5cGVsZXNzRGF0YSk7Ci0gICAgYml0bWFwLT5kZXJlZigpOyAvLyBCYWxhbmNlZCBi
eSByZWYgaW4gY3JlYXRlQ0dJbWFnZS4KLX0KLQogUmVmUHRyPEltYWdlPiBTaGFyZWFibGVCaXRt
YXA6OmNyZWF0ZUltYWdlKCkKIHsKICAgICBpZiAoYXV0byBwbGF0Zm9ybUltYWdlID0gbWFrZUNH
SW1hZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
LmNwcAppbmRleCA3YWUxNWEwZmUwNzBjODMxMGU1N2VmYzgzZWYwYmUzMzc1NTEwN2JjLi5kN2Uz
ZGE3MjljNjg5NTRkMzQyODc0ZDczMDliODgzOWVmZTM3YTdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL0ltYWdlQnVmZmVyU2hhcmVhYmxlQml0bWFw
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9J
bWFnZUJ1ZmZlclNoYXJlYWJsZUJpdG1hcEJhY2tlbmQuY3BwCkBAIC0xNDgsOSArMTQ4LDkgQEAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5k
OjpjcmVhdGVDYWlyb1N1cmZhY2UoKQogfQogI2VuZGlmCiAKLVJlZlB0cjxOYXRpdmVJbWFnZT4g
SW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2lu
Z1N0b3JlQ29weSkgY29uc3QKK1JlZlB0cjxOYXRpdmVJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFi
bGVCaXRtYXBCYWNrZW5kOjpjb3B5TmF0aXZlSW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVo
YXZpb3IpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUobV9iaXRtYXAt
PmNyZWF0ZVBsYXRmb3JtSW1hZ2UoKSk7CisgICAgcmV0dXJuIE5hdGl2ZUltYWdlOjpjcmVhdGUo
bV9iaXRtYXAtPmNyZWF0ZVBsYXRmb3JtSW1hZ2UoY29weUJlaGF2aW9yKSk7CiB9CiAKIFJlZlB0
cjxJbWFnZT4gSW1hZ2VCdWZmZXJTaGFyZWFibGVCaXRtYXBCYWNrZW5kOjpjb3B5SW1hZ2UoQmFj
a2luZ1N0b3JlQ29weSwgUHJlc2VydmVSZXNvbHV0aW9uKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVJbWFnZUJ1ZmZlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVm
ZmVyUHJveHkuaAppbmRleCA1NDYyOTFkNjQ3ZDEwNGExNDYxNTkyZmY5ZGU5MTM4ODgyNWIwNTcx
Li41NjNlMGJmMjQ2NDhmMjFiMWY3NjdmMjYzZmM2YzNlNjM1YmM2NDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUltYWdlQnVmZmVyUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZUlt
YWdlQnVmZmVyUHJveHkuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
cmV0dXJuIG1fcmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LT5nZXREYXRhRm9ySW1hZ2VCdWZm
ZXIobWltZVR5cGUsIHF1YWxpdHksIG1fcmVuZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1hZ2U+IGNvcHlOYXRpdmVJbWFnZShX
ZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6Q29w
eUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWwKKyAgICBSZWZQdHI8V2ViQ29yZTo6TmF0aXZlSW1h
Z2U+IGNvcHlOYXRpdmVJbWFnZShXZWJDb3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6
Q29weUJhY2tpbmdTdG9yZSkgY29uc3QgZmluYWwKICAgICB7CiAgICAgICAgIGlmIChVTkxJS0VM
WSghbV9yZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkpKQogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTE4MiwxMCArMTgyLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgYXV0byBiaXRtYXAg
PSBtX3JlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eS0+Z2V0U2hhcmVhYmxlQml0bWFwKG1fcmVu
ZGVyaW5nUmVzb3VyY2VJZGVudGlmaWVyLCBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Olll
cyk7CiAgICAgICAgIGlmICghYml0bWFwKQogICAgICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICAg
ICAgcmV0dXJuIFdlYkNvcmU6Ok5hdGl2ZUltYWdlOjpjcmVhdGUoYml0bWFwLT5jcmVhdGVQbGF0
Zm9ybUltYWdlKCkpOworICAgICAgICByZXR1cm4gV2ViQ29yZTo6TmF0aXZlSW1hZ2U6OmNyZWF0
ZShiaXRtYXAtPmNyZWF0ZVBsYXRmb3JtSW1hZ2UoV2ViQ29yZTo6RG9udENvcHlCYWNraW5nU3Rv
cmUpKTsKICAgICB9CiAKLSAgICBSZWZQdHI8V2ViQ29yZTo6SW1hZ2U+IGNvcHlJbWFnZShXZWJD
b3JlOjpCYWNraW5nU3RvcmVDb3B5ID0gV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weTo6Q29weUJh
Y2tpbmdTdG9yZSwgV2ViQ29yZTo6UHJlc2VydmVSZXNvbHV0aW9uIHByZXNlcnZlUmVzb2x1dGlv
biA9IFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbjo6Tm8pIGNvbnN0IGZpbmFsCisgICAgUmVm
UHRyPFdlYkNvcmU6OkltYWdlPiBjb3B5SW1hZ2UoV2ViQ29yZTo6QmFja2luZ1N0b3JlQ29weSA9
IFdlYkNvcmU6OkNvcHlCYWNraW5nU3RvcmUsIFdlYkNvcmU6OlByZXNlcnZlUmVzb2x1dGlvbiBw
cmVzZXJ2ZVJlc29sdXRpb24gPSBXZWJDb3JlOjpQcmVzZXJ2ZVJlc29sdXRpb246Ok5vKSBjb25z
dCBmaW5hbAogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFtX3JlbW90ZVJlbmRlcmluZ0Jh
Y2tlbmRQcm94eSkpCiAgICAgICAgICAgICByZXR1cm4geyB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>