<?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>47086</bug_id>
          
          <creation_ts>2010-10-04 07:42:26 -0700</creation_ts>
          <short_desc>Remove unused code from gtk2drawing.c</short_desc>
          <delta_ts>2010-10-06 10:04:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mrobinson</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288929</commentid>
    <comment_count>0</comment_count>
      <attachid>69633</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-04 07:42:26 -0700</bug_when>
    <thetext>Created attachment 69633
Remove unused code

That file was copied from mozilla and contains a lot of code that is not used by WebKit. Most of that unused code is uncompatible with gtk3, so removing it will make easier porting to gtk3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289083</commentid>
    <comment_count>1</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-04 12:40:14 -0700</bug_when>
    <thetext>We plan to fork this code when the styling changes for GTK+ land (to make it WebKit-y). Depending on the timetable for the styling updates, it may make sense to just use #ifdefs instead of trying to keep this code up to date.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289517</commentid>
    <comment_count>2</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-05 03:15:34 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; We plan to fork this code when the styling changes for GTK+ land (to make it WebKit-y). Depending on the timetable for the styling updates, it may make sense to just use #ifdefs instead of trying to keep this code up to date.

I suggested Carlos to fork it now, since keeping a single file that copes with both GTK+ 2 and the new drawing APIs already in GTK+ master would be an #ifdef nightmare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289611</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-05 08:09:31 -0700</bug_when>
    <thetext>We should probably just bite the bullet and start transitioning away from the Mozilla theme drawing code. The files already diverge from the original code and we can use C++ features to hide the differences between GTK+ 2 and GTK+ 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289824</commentid>
    <comment_count>4</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-05 13:08:25 -0700</bug_when>
    <thetext>After discussing this with Xan via IRC, we decided that the right approach here was to start replacing the Mozilla code with our own rendering code in WebKit sooner, rather than later. I feel pretty confidant that we can maintain this. We&apos;ll also be able to start dealing with the GTK2/GTK3 compatibility issues using C++ sugar.

In the interest of keeping things building with GTK3, I think we can start by removing the unused code. This patch needs a ChangeLog though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290125</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-06 00:26:34 -0700</bug_when>
    <thetext>Yes, the idea was doing a plain port to gtk3 now, so that ephy/webkit can release for GNOME 2.91.0, further improvements or redesigns can be done on top of this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290126</commentid>
    <comment_count>6</comment_count>
      <attachid>69896</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-06 00:27:46 -0700</bug_when>
    <thetext>Created attachment 69896
Updated patch to remove unused code

Updated patch including the ChangeLog entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290347</commentid>
    <comment_count>7</comment_count>
      <attachid>69948</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2010-10-06 09:15:28 -0700</bug_when>
    <thetext>Created attachment 69948
New version of the patch

New version of the patch with the ChangeLog correctly formatted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290350</commentid>
    <comment_count>8</comment_count>
      <attachid>69948</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-10-06 09:17:00 -0700</bug_when>
    <thetext>Comment on attachment 69948
New version of the patch

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290392</commentid>
    <comment_count>9</comment_count>
      <attachid>69948</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-06 10:04:49 -0700</bug_when>
    <thetext>Comment on attachment 69948
New version of the patch

Clearing flags on attachment: 69948

Committed r69205: &lt;http://trac.webkit.org/changeset/69205&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290393</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-10-06 10:04:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69633</attachid>
            <date>2010-10-04 07:42:26 -0700</date>
            <delta_ts>2010-10-06 00:27:46 -0700</delta_ts>
            <desc>Remove unused code</desc>
            <filename>gtk2drawing.diff</filename>
            <type>text/plain</type>
            <size>84793</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCmluZGV4IGZkNzcwZDIuLmM1NWNkN2EgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwpAQCAtMTIyLDI2ICsxMjIsNiBAQCBlbnN1cmVfYnV0
dG9uX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVfaHBhbmVkX3dpZGdldCgpCi17
Ci0gICAgaWYgKCFnUGFydHMtPmhwYW5lZFdpZGdldCkgewotICAgICAgICBnUGFydHMtPmhwYW5l
ZFdpZGdldCA9IGd0a19ocGFuZWRfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5
cGUoZ1BhcnRzLT5ocGFuZWRXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3ZwYW5lZF93aWRnZXQoKQotewotICAgIGlm
ICghZ1BhcnRzLT52cGFuZWRXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT52cGFuZWRXaWRnZXQg
PSBndGtfdnBhbmVkX25ldygpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0
cy0+dnBhbmVkV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKIGVuc3VyZV90b2dnbGVfYnV0dG9uX3dpZGdldCgpCiB7CiAgICAgaWYg
KCFnUGFydHMtPnRvZ2dsZUJ1dHRvbldpZGdldCkgewpAQCAtMjAxLDE2ICsxODEsNiBAQCBlbnN1
cmVfc2Nyb2xsYmFyX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVfc3Bpbl93aWRn
ZXQoKQotewotICBpZiAoIWdQYXJ0cy0+c3BpbldpZGdldCkgewotICAgIGdQYXJ0cy0+c3Bpbldp
ZGdldCA9IGd0a19zcGluX2J1dHRvbl9uZXcoTlVMTCwgMSwgMCk7Ci0gICAgc2V0dXBfd2lkZ2V0
X3Byb3RvdHlwZShnUGFydHMtPnNwaW5XaWRnZXQpOwotICB9Ci0gIHJldHVybiBNT1pfR1RLX1NV
Q0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50CiBlbnN1cmVfc2NhbGVfd2lkZ2V0KCkKIHsKICAgaWYg
KCFnUGFydHMtPmhTY2FsZVdpZGdldCkgewpAQCAtMzM3LDE3MSArMzA3LDYgQEAgZW5zdXJlX2Nv
bWJvX2JveF93aWRnZXRzKCkKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQogCi0vKiBX
ZSBuZWVkIHRvIGhhdmUgcG9pbnRlcnMgdG8gdGhlIGlubmVyIHdpZGdldHMgKGVudHJ5LCBidXR0
b24sIGFycm93KSBvZgotICogdGhlIENvbWJvQm94RW50cnkgdG8gZ2V0IHRoZSBjb3JyZWN0IHJl
bmRlcmluZyBmcm9tIHRoZW1lIGVuZ2luZXMgd2hpY2gKLSAqIHNwZWNpYWwgY2FzZXMgdGhlaXIg
bG9vay4gU2luY2UgdGhlIGlubmVyIGxheW91dCBjYW4gY2hhbmdlLCB3ZSBhc2sgR1RLCi0gKiB0
byBOVUxMIG91ciBwb2ludGVycyB3aGVuIHRoZXkgYXJlIGFib3V0IHRvIGJlY29tZSBpbnZhbGlk
IGJlY2F1c2UgdGhlCi0gKiBjb3JyZXNwb25kaW5nIHdpZGdldHMgZG9uJ3QgZXhpc3QgYW55bW9y
ZS4gSXQncyB0aGUgcm9sZSBvZgotICogZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRlcigpLgotICog
Tm90ZSB0aGF0IGlmIHdlIGRvbid0IGZpbmQgdGhlIGlubmVyIHdpZGdldHMgKHdoaWNoIHNob3Vs
ZG4ndCBoYXBwZW4pLCB3ZQotICogZmFsbGJhY2sgdG8gdXNlIGdlbmVyaWMgIm5vbi1pbm5lciIg
d2lkZ2V0cywgYW5kIHRoZXkgZG9uJ3QgbmVlZCB0aGF0IGtpbmQKLSAqIG9mIHdlYWsgcG9pbnRl
ciBzaW5jZSB0aGV5IGFyZSBleHBsaWNpdCBjaGlsZHJlbiBvZiBnUGFydHMtPnByb3RvV2luZG93
IGFuZCBhcwotICogc3VjaCBHVEsgaG9sZHMgYSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZW0uICov
Ci1zdGF0aWMgdm9pZAotbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5X2lubmVyX3dpZGdldHMo
R3RrV2lkZ2V0ICp3aWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBncG9pbnRlciBjbGllbnRfZGF0YSkKLXsKLSAgICBpZiAoR1RLX0lTX1RPR0dMRV9CVVRU
T04od2lkZ2V0KSkgewotICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQg
PSB3aWRnZXQ7Ci0gICAgICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qod2lk
Z2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3BvaW50ZXIpICZnUGFy
dHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQpOwotICAgIH0gZWxzZSBpZiAoR1RLX0lTX0VO
VFJZKHdpZGdldCkpIHsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRn
ZXQgPSB3aWRnZXQ7Ci0gICAgICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1Qo
d2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3BvaW50ZXIpICZn
UGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCk7Ci0gICAgfSBlbHNlCi0gICAgICAg
IHJldHVybjsKLSAgICBndGtfd2lkZ2V0X3JlYWxpemUod2lkZ2V0KTsKLSAgICBnX29iamVjdF9z
ZXRfZGF0YShHX09CSkVDVCh3aWRnZXQpLCAidHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9f
UE9JTlRFUihUUlVFKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1tb3pfZ3RrX2dldF9jb21ib19ib3hf
ZW50cnlfYXJyb3coR3RrV2lkZ2V0ICp3aWRnZXQsIGdwb2ludGVyIGNsaWVudF9kYXRhKQotewot
ICAgIGlmIChHVEtfSVNfQVJST1cod2lkZ2V0KSkgewotICAgICAgICBnUGFydHMtPmNvbWJvQm94
RW50cnlBcnJvd1dpZGdldCA9IHdpZGdldDsKLSAgICAgICAgZ19vYmplY3RfYWRkX3dlYWtfcG9p
bnRlcihHX09CSkVDVCh3aWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChncG9pbnRlcikgJmdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0KTsKLSAgICAgICAg
Z3RrX3dpZGdldF9yZWFsaXplKHdpZGdldCk7Ci0gICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdf
T0JKRUNUKHdpZGdldCksICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVSKFRS
VUUpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfY29tYm9fYm94X2VudHJ5X3dp
ZGdldHMoKQotewotICAgIEd0a1dpZGdldCogYnV0dG9uQ2hpbGQ7Ci0KLSAgICBpZiAoZ1BhcnRz
LT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQgJiYKLSAgICAgICAgICAgIGdQYXJ0cy0+Y29t
Ym9Cb3hFbnRyeUJ1dHRvbldpZGdldCAmJgotICAgICAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVu
dHJ5QXJyb3dXaWRnZXQpCi0gICAgICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci0KLSAgICAv
KiBDcmVhdGUgYSBDb21ib0JveEVudHJ5IGlmIG5lZWRlZCAqLwotICAgIGlmICghZ1BhcnRzLT5j
b21ib0JveEVudHJ5V2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeVdpZGdl
dCA9IGd0a19jb21ib19ib3hfZW50cnlfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90
b3R5cGUoZ1BhcnRzLT5jb21ib0JveEVudHJ5V2lkZ2V0KTsKLSAgICB9Ci0KLSAgICAvKiBHZXQg
aXRzIGlubmVyIEVudHJ5IGFuZCBCdXR0b24gKi8KLSAgICBndGtfY29udGFpbmVyX2ZvcmFsbChH
VEtfQ09OVEFJTkVSKGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeVdpZGdldCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5X2lubmVyX3dpZGdldHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICBpZiAoIWdQYXJ0cy0+Y29tYm9C
b3hFbnRyeVRleHRhcmVhV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3VyZV9lbnRyeV93aWRnZXQoKTsK
LSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQgPSBnUGFydHMtPmVu
dHJ5V2lkZ2V0OwotICAgIH0KLQotICAgIGlmIChnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25X
aWRnZXQpIHsKLSAgICAgICAgLyogR2V0IHRoZSBBcnJvdyBpbnNpZGUgdGhlIEJ1dHRvbiAqLwot
ICAgICAgICBidXR0b25DaGlsZCA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oZ1BhcnRzLT5j
b21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0KSk7Ci0gICAgICAgIGlmIChHVEtfSVNfSEJPWChidXR0
b25DaGlsZCkpIHsKLSAgICAgICAgICAgIC8qIGFwcGVhcnMtYXMtbGlzdCA9IEZBTFNFLCBjZWxs
LXZpZXcgPSBUUlVFOyB0aGUgYnV0dG9uCi0gICAgICAgICAgICAgKiBjb250YWlucyBhbiBoYm94
LiBUaGlzIGhib3ggaXMgdGhlcmUgYmVjYXVzZSBDb21ib0JveEVudHJ5Ci0gICAgICAgICAgICAg
KiBpbmhlcml0cyBmcm9tIENvbWJvQm94IHdoaWNoIG5lZWRzIHRvIHBsYWNlIGEgY2VsbCByZW5k
ZXJlciwKLSAgICAgICAgICAgICAqIGEgc2VwYXJhdG9yLCBhbmQgYW4gYXJyb3cgaW4gdGhlIGJ1
dHRvbiB3aGVuIGFwcGVhcnMtYXMtbGlzdAotICAgICAgICAgICAgICogaXMgRkFMU0UuIEhlcmUg
dGhlIGhib3ggc2hvdWxkIG9ubHkgY29udGFpbiBhbiBhcnJvdywgc2luY2UKLSAgICAgICAgICAg
ICAqIGEgQ29tYm9Cb3hFbnRyeSBkb2Vzbid0IG5lZWQgYWxsIHRob3NlIHdpZGdldHMgaW4gdGhl
Ci0gICAgICAgICAgICAgKiBidXR0b24uICovCi0gICAgICAgICAgICBndGtfY29udGFpbmVyX2Zv
cmFsbChHVEtfQ09OVEFJTkVSKGJ1dHRvbkNoaWxkKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vel9ndGtfZ2V0X2NvbWJvX2JveF9lbnRyeV9hcnJvdywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICB9IGVsc2UgaWYoR1RLX0lTX0FS
Uk9XKGJ1dHRvbkNoaWxkKSkgewotICAgICAgICAgICAgLyogYXBwZWFycy1hcy1saXN0ID0gVFJV
RSwgb3IgY2VsbC12aWV3ID0gRkFMU0U7Ci0gICAgICAgICAgICAgKiB0aGUgYnV0dG9uIG9ubHkg
Y29udGFpbnMgYW4gYXJyb3cgKi8KLSAgICAgICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFy
cm93V2lkZ2V0ID0gYnV0dG9uQ2hpbGQ7Ci0gICAgICAgICAgICBnX29iamVjdF9hZGRfd2Vha19w
b2ludGVyKEdfT0JKRUNUKGJ1dHRvbkNoaWxkKSwgKGdwb2ludGVyKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAmZ1BhcnRzLT5jb21ib0JveEVudHJ5QXJyb3dXaWRnZXQp
OwotICAgICAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFy
cm93V2lkZ2V0KTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGdQYXJ0
cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVSKFRSVUUpKTsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFNob3VsZG4ndCBiZSByZWFjaGVkIHdpdGgg
Y3VycmVudCBpbnRlcm5hbCBndGsgaW1wbGVtZW50YXRpb247Ci0gICAgICAgICAqIHdlIHVzZSBh
IGdlbmVyaWMgdG9nZ2xlIGJ1dHRvbiBhcyBsYXN0IHJlc29ydCBmYWxsYmFjayB0byBhdm9pZAot
ICAgICAgICAgKiBjcmFzaGluZy4gKi8KLSAgICAgICAgZW5zdXJlX3RvZ2dsZV9idXR0b25fd2lk
Z2V0KCk7Ci0gICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdldCA9IGdQYXJ0
cy0+dG9nZ2xlQnV0dG9uV2lkZ2V0OwotICAgIH0KLQotICAgIGlmICghZ1BhcnRzLT5jb21ib0Jv
eEVudHJ5QXJyb3dXaWRnZXQpIHsKLSAgICAgICAgLyogU2hvdWxkbid0IGJlIHJlYWNoZWQgd2l0
aCBjdXJyZW50IGludGVybmFsIGd0ayBpbXBsZW1lbnRhdGlvbjsKLSAgICAgICAgICogd2UgZ1Bh
cnRzLT5idXR0b25BcnJvd1dpZGdldCBhcyBsYXN0IHJlc29ydCBmYWxsYmFjayB0byBhdm9pZAot
ICAgICAgICAgKiBjcmFzaGluZy4gKi8KLSAgICAgICAgZW5zdXJlX2J1dHRvbl9hcnJvd193aWRn
ZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5QXJyb3dXaWRnZXQgPSBnUGFydHMt
PmJ1dHRvbkFycm93V2lkZ2V0OwotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7
Ci19Ci0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9oYW5kbGVib3hfd2lkZ2V0KCkKLXsKLSAgICBp
ZiAoIWdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+aGFuZGxlQm94
V2lkZ2V0ID0gZ3RrX2hhbmRsZV9ib3hfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90
b3R5cGUoZ1BhcnRzLT5oYW5kbGVCb3hXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dU
S19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3Rvb2xiYXJfd2lkZ2V0KCkKLXsK
LSAgICBpZiAoIWdQYXJ0cy0+dG9vbGJhcldpZGdldCkgewotICAgICAgICBlbnN1cmVfaGFuZGxl
Ym94X3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPnRvb2xiYXJXaWRnZXQgPSBndGtfdG9vbGJh
cl9uZXcoKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihnUGFydHMt
PmhhbmRsZUJveFdpZGdldCksIGdQYXJ0cy0+dG9vbGJhcldpZGdldCk7Ci0gICAgICAgIGd0a193
aWRnZXRfcmVhbGl6ZShnUGFydHMtPnRvb2xiYXJXaWRnZXQpOwotICAgICAgICBnX29iamVjdF9z
ZXRfZGF0YShHX09CSkVDVChnUGFydHMtPnRvb2xiYXJXaWRnZXQpLCAidHJhbnNwYXJlbnQtYmct
aGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgfQotICAgIHJldHVybiBNT1pfR1RL
X1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfdG9vbGJhcl9zZXBhcmF0b3Jfd2lk
Z2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+dG9vbGJhclNlcGFyYXRvcldpZGdldCkgewotICAg
ICAgICBlbnN1cmVfdG9vbGJhcl93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT50b29sYmFyU2Vw
YXJhdG9yV2lkZ2V0ID0gR1RLX1dJREdFVChndGtfc2VwYXJhdG9yX3Rvb2xfaXRlbV9uZXcoKSk7
Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT50b29sYmFyU2VwYXJhdG9y
V2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGlj
IGdpbnQKLWVuc3VyZV90b29sdGlwX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPnRvb2x0
aXBXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT50b29sdGlwV2lkZ2V0ID0gZ3RrX3dpbmRvd19u
ZXcoR1RLX1dJTkRPV19QT1BVUCk7Ci0gICAgICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMt
PnRvb2x0aXBXaWRnZXQpOwotICAgICAgICBtb3pfZ3RrX3NldF93aWRnZXRfbmFtZShnUGFydHMt
PnRvb2x0aXBXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQot
Ci1zdGF0aWMgZ2ludAotZW5zdXJlX3RhYl93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT50
YWJXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT50YWJXaWRnZXQgPSBndGtfbm90ZWJvb2tfbmV3
KCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT50YWJXaWRnZXQpOwot
ICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCiBzdGF0aWMgZ2ludAogZW5z
dXJlX3Byb2dyZXNzX3dpZGdldCgpCiB7CkBAIC01MTMsMjAwICszMTgsNiBAQCBlbnN1cmVfcHJv
Z3Jlc3Nfd2lkZ2V0KCkKIH0KIAogc3RhdGljIGdpbnQKLWVuc3VyZV9zdGF0dXNiYXJfd2lkZ2V0
KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+c3RhdHVzYmFyV2lkZ2V0KSB7Ci0gICAgICBnUGFydHMt
PnN0YXR1c2JhcldpZGdldCA9IGd0a19zdGF0dXNiYXJfbmV3KCk7Ci0gICAgICBzZXR1cF93aWRn
ZXRfcHJvdG90eXBlKGdQYXJ0cy0+c3RhdHVzYmFyV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJu
IE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9mcmFtZV93aWRnZXQo
KQotewotICAgIGlmICghZ1BhcnRzLT5mcmFtZVdpZGdldCkgewotICAgICAgICBlbnN1cmVfc3Rh
dHVzYmFyX3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPmZyYW1lV2lkZ2V0ID0gZ3RrX2ZyYW1l
X25ldyhOVUxMKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihnUGFy
dHMtPnN0YXR1c2JhcldpZGdldCksIGdQYXJ0cy0+ZnJhbWVXaWRnZXQpOwotICAgICAgICBndGtf
d2lkZ2V0X3JlYWxpemUoZ1BhcnRzLT5mcmFtZVdpZGdldCk7Ci0gICAgfQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9iYXJfd2lkZ2V0
KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+bWVudUJhcldpZGdldCkgewotICAgICAgICBnUGFydHMt
Pm1lbnVCYXJXaWRnZXQgPSBndGtfbWVudV9iYXJfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdl
dF9wcm90b3R5cGUoZ1BhcnRzLT5tZW51QmFyV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1P
Wl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9tZW51X2Jhcl9pdGVtX3dp
ZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1lbnVCYXJJdGVtV2lkZ2V0KSB7Ci0gICAgICAg
IGVuc3VyZV9tZW51X2Jhcl93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51QmFySXRlbVdp
ZGdldCA9IGd0a19tZW51X2l0ZW1fbmV3KCk7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVu
ZChHVEtfTUVOVV9TSEVMTChnUGFydHMtPm1lbnVCYXJXaWRnZXQpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ1BhcnRzLT5tZW51QmFySXRlbVdpZGdldCk7Ci0gICAgICAgIGd0a193
aWRnZXRfcmVhbGl6ZShnUGFydHMtPm1lbnVCYXJJdGVtV2lkZ2V0KTsKLSAgICAgICAgZ19vYmpl
Y3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51QmFySXRlbVdpZGdldCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVS
KFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGlj
IGdpbnQKLWVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1l
bnVQb3B1cFdpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9iYXJfaXRlbV93aWRnZXQoKTsK
LSAgICAgICAgZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQgPSBndGtfbWVudV9uZXcoKTsKLSAgICAg
ICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShHVEtfTUVOVV9JVEVNKGdQYXJ0cy0+bWVudUJh
ckl0ZW1XaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+
bWVudVBvcHVwV2lkZ2V0KTsKLSAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKGdQYXJ0cy0+bWVu
dVBvcHVwV2lkZ2V0KTsKLSAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRz
LT5tZW51UG9wdXBXaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwYXJl
bnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgfQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9pdGVtX3dpZGdl
dCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1lbnVJdGVtV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3Vy
ZV9tZW51X3BvcHVwX3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPm1lbnVJdGVtV2lkZ2V0ID0g
Z3RrX21lbnVfaXRlbV9uZXdfd2l0aF9sYWJlbCgiTSIpOwotICAgICAgICBndGtfbWVudV9zaGVs
bF9hcHBlbmQoR1RLX01FTlVfU0hFTEwoZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT5tZW51SXRlbVdpZGdldCk7Ci0gICAgICAg
IGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPm1lbnVJdGVtV2lkZ2V0KTsKLSAgICAgICAgZ19v
YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51SXRlbVdpZGdldCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVS
KFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGlj
IGdpbnQKLWVuc3VyZV9pbWFnZV9tZW51X2l0ZW1fd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0
cy0+aW1hZ2VNZW51SXRlbVdpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9wb3B1cF93aWRn
ZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5pbWFnZU1lbnVJdGVtV2lkZ2V0ID0gZ3RrX2ltYWdlX21l
bnVfaXRlbV9uZXcoKTsKLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kKEdUS19NRU5VX1NI
RUxMKGdQYXJ0cy0+bWVudVBvcHVwV2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGdQYXJ0cy0+aW1hZ2VNZW51SXRlbVdpZGdldCk7Ci0gICAgICAgIGd0a193aWRnZXRfcmVh
bGl6ZShnUGFydHMtPmltYWdlTWVudUl0ZW1XaWRnZXQpOwotICAgICAgICBnX29iamVjdF9zZXRf
ZGF0YShHX09CSkVDVChnUGFydHMtPmltYWdlTWVudUl0ZW1XaWRnZXQpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAidHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVF
KSk7Ci0gICAgfQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50
Ci1lbnN1cmVfbWVudV9zZXBhcmF0b3Jfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+bWVu
dVNlcGFyYXRvcldpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9wb3B1cF93aWRnZXQoKTsK
LSAgICAgICAgZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0ID0gZ3RrX3NlcGFyYXRvcl9tZW51
X2l0ZW1fbmV3KCk7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVM
TChnUGFydHMtPm1lbnVQb3B1cFdpZGdldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQpOwotICAgICAgICBndGtfd2lkZ2V0X3JlYWxp
emUoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KTsKLSAgICAgICAgZ19vYmplY3Rfc2V0X2Rh
dGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgInRyYW5zcGFyZW50LWJnLWhpbnQiLCBHSU5UX1RPX1BPSU5URVIoVFJVRSkp
OwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAot
ZW5zdXJlX2NoZWNrX21lbnVfaXRlbV93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT5jaGVj
a01lbnVJdGVtV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpOwot
ICAgICAgICBnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQgPSBndGtfY2hlY2tfbWVudV9pdGVt
X25ld193aXRoX2xhYmVsKCJNIik7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtf
TUVOVV9TSEVMTChnUGFydHMtPm1lbnVQb3B1cFdpZGdldCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQpOwotICAgICAgICBndGtfd2lk
Z2V0X3JlYWxpemUoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KTsKLSAgICAgICAgZ19vYmpl
Y3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRyYW5zcGFyZW50LWJnLWhpbnQiLCBHSU5UX1RPX1BPSU5U
RVIoVFJVRSkpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0
aWMgZ2ludAotZW5zdXJlX3RyZWVfdmlld193aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT50
cmVlVmlld1dpZGdldCkgewotICAgICAgICBnUGFydHMtPnRyZWVWaWV3V2lkZ2V0ID0gZ3RrX3Ry
ZWVfdmlld19uZXcoKTsKLSAgICAgICAgc2V0dXBfd2lkZ2V0X3Byb3RvdHlwZShnUGFydHMtPnRy
ZWVWaWV3V2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQot
c3RhdGljIGdpbnQKLWVuc3VyZV90cmVlX2hlYWRlcl9jZWxsX3dpZGdldCgpCi17Ci0gICAgaWYo
IWdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQpIHsKLSAgICAgICAgLyoKLSAgICAgICAgICog
U29tZSBHVEsgZW5naW5lcyBwYWludCB0aGUgZmlyc3QgYW5kIGxhc3QgY2VsbAotICAgICAgICAg
KiBvZiBhIFRyZWVWaWV3IGhlYWRlciB3aXRoIGEgaGlnaGxpZ2h0LgotICAgICAgICAgKiBTaW5j
ZSB3ZSBkbyBub3Qga25vdyB3aGVyZSBvdXIgd2lkZ2V0IHdpbGwgYmUgcmVsYXRpdmUKLSAgICAg
ICAgICogdG8gdGhlIG90aGVyIGJ1dHRvbnMgaW4gdGhlIFRyZWVWaWV3IGhlYWRlciwgd2UgbXVz
dAotICAgICAgICAgKiBwYWludCBpdCBhcyBhIGJ1dHRvbiB0aGF0IGlzIGJldHdlZW4gdHdvIG90
aGVycywKLSAgICAgICAgICogdGh1cyBlbnN1cmluZyBpdCBpcyBuZWl0aGVyIHRoZSBmaXJzdCBv
ciBsYXN0IGJ1dHRvbgotICAgICAgICAgKiBpbiB0aGUgaGVhZGVyLgotICAgICAgICAgKiBHVEsg
ZG9lc24ndCBnaXZlIHVzIGEgd2F5IHRvIGRvIHRoaXMgZXhwbGljaXRseSwKLSAgICAgICAgICog
c28gd2UgbXVzdCBwYWludCB3aXRoIGEgYnV0dG9uIHRoYXQgaXMgYmV0d2VlbiB0d28KLSAgICAg
ICAgICogb3RoZXJzLgotICAgICAgICAgKi8KLQotICAgICAgICBHdGtUcmVlVmlld0NvbHVtbiog
Zmlyc3RUcmVlVmlld0NvbHVtbjsKLSAgICAgICAgR3RrVHJlZVZpZXdDb2x1bW4qIGxhc3RUcmVl
Vmlld0NvbHVtbjsKLQotICAgICAgICBlbnN1cmVfdHJlZV92aWV3X3dpZGdldCgpOwotCi0gICAg
ICAgIC8qIENyZWF0ZSBhbmQgYXBwZW5kIG91ciB0aHJlZSBjb2x1bW5zICovCi0gICAgICAgIGZp
cnN0VHJlZVZpZXdDb2x1bW4gPSBndGtfdHJlZV92aWV3X2NvbHVtbl9uZXcoKTsKLSAgICAgICAg
Z3RrX3RyZWVfdmlld19jb2x1bW5fc2V0X3RpdGxlKGZpcnN0VHJlZVZpZXdDb2x1bW4sICJNIik7
Ci0gICAgICAgIGd0a190cmVlX3ZpZXdfYXBwZW5kX2NvbHVtbihHVEtfVFJFRV9WSUVXKGdQYXJ0
cy0+dHJlZVZpZXdXaWRnZXQpLCBmaXJzdFRyZWVWaWV3Q29sdW1uKTsKLQotICAgICAgICBnUGFy
dHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uID0gZ3RrX3RyZWVfdmlld19jb2x1bW5fbmV3KCk7Ci0g
ICAgICAgIGd0a190cmVlX3ZpZXdfY29sdW1uX3NldF90aXRsZShnUGFydHMtPm1pZGRsZVRyZWVW
aWV3Q29sdW1uLCAiTSIpOwotICAgICAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9jb2x1bW4oR1RL
X1RSRUVfVklFVyhnUGFydHMtPnRyZWVWaWV3V2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdQYXJ0cy0+bWlkZGxlVHJlZVZpZXdDb2x1bW4pOwotCi0gICAgICAg
IGxhc3RUcmVlVmlld0NvbHVtbiA9IGd0a190cmVlX3ZpZXdfY29sdW1uX25ldygpOwotICAgICAg
ICBndGtfdHJlZV92aWV3X2NvbHVtbl9zZXRfdGl0bGUobGFzdFRyZWVWaWV3Q29sdW1uLCAiTSIp
OwotICAgICAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9jb2x1bW4oR1RLX1RSRUVfVklFVyhnUGFy
dHMtPnRyZWVWaWV3V2lkZ2V0KSwgbGFzdFRyZWVWaWV3Q29sdW1uKTsKLQotI2lmZGVmIEdUS19B
UElfVkVSU0lPTl8yCi0gICAgICAgIC8qIFVzZSB0aGUgbWlkZGxlIGNvbHVtbidzIGhlYWRlciBm
b3Igb3VyIGJ1dHRvbiAqLwotICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJDZWxsV2lkZ2V0ID0g
Z1BhcnRzLT5taWRkbGVUcmVlVmlld0NvbHVtbi0+YnV0dG9uOwotICAgICAgICBnUGFydHMtPnRy
ZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQgPSBnUGFydHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uLT5h
cnJvdzsKLSNlbHNlCi0gICAgICAgIGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQgPSBndGtf
YnV0dG9uX25ldygpOwotICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQg
PSBndGtfYXJyb3dfbmV3KEdUS19BUlJPV19ET1dOLCBHVEtfU0hBRE9XX05PTkUpOwotI2VuZGlm
Ci0gICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGdQYXJ0cy0+dHJlZUhlYWRlckNl
bGxXaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwYXJlbnQtYmctaGlu
dCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdf
T0JKRUNUKGdQYXJ0cy0+dHJlZUhlYWRlclNvcnRBcnJvd1dpZGdldCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVSKFRSVUUp
KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQK
LWVuc3VyZV9leHBhbmRlcl93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT5leHBhbmRlcldp
ZGdldCkgewotICAgICAgICBnUGFydHMtPmV4cGFuZGVyV2lkZ2V0ID0gZ3RrX2V4cGFuZGVyX25l
dygiTSIpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+ZXhwYW5kZXJX
aWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMg
Z2ludAogZW5zdXJlX3Njcm9sbGVkX3dpbmRvd193aWRnZXQoKQogewogICAgIGlmICghZ1BhcnRz
LT5zY3JvbGxlZFdpbmRvd1dpZGdldCkgewpAQCAtOTEyLDE5ICs1MjMsNiBAQCBtb3pfZ3RrX3dp
ZGdldF9nZXRfZm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuKiBpbnRlcmlvcl9mb2N1
cywKIH0KIAogZ2ludAotbW96X2d0a19zcGxpdHRlcl9nZXRfbWV0cmljcyhnaW50IG9yaWVudGF0
aW9uLCBnaW50KiBzaXplKQotewotICAgIGlmIChvcmllbnRhdGlvbiA9PSBHVEtfT1JJRU5UQVRJ
T05fSE9SSVpPTlRBTCkgewotICAgICAgICBlbnN1cmVfaHBhbmVkX3dpZGdldCgpOwotICAgICAg
ICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMtPmhwYW5lZFdpZGdldCwgImhhbmRsZV9zaXpl
Iiwgc2l6ZSwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZW5zdXJlX3ZwYW5lZF93aWRn
ZXQoKTsKLSAgICAgICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT52cGFuZWRXaWRnZXQs
ICJoYW5kbGVfc2l6ZSIsIHNpemUsIE5VTEwpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19T
VUNDRVNTOwotfQotCi1naW50CiBtb3pfZ3RrX2J1dHRvbl9nZXRfaW5uZXJfYm9yZGVyKEd0a1dp
ZGdldCogd2lkZ2V0LCBHdGtCb3JkZXIqIGlubmVyX2JvcmRlcikKIHsKICAgICBzdGF0aWMgY29u
c3QgR3RrQm9yZGVyIGRlZmF1bHRfaW5uZXJfYm9yZGVyID0geyAxLCAxLCAxLCAxIH07CkBAIC0x
MzQxLDU5ICs5MzksNiBAQCBtb3pfZ3RrX3Njcm9sbGJhcl90aHVtYl9wYWludChHdGtUaGVtZVdp
ZGdldFR5cGUgd2lkZ2V0LAogfQogCiBzdGF0aWMgZ2ludAotbW96X2d0a19zcGluX3BhaW50KEdk
a0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAg
ICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsK
LQotICAgIGVuc3VyZV9zcGluX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlv
bihnUGFydHMtPnNwaW5XaWRnZXQsIGRpcmVjdGlvbik7Ci0gICAgc3R5bGUgPSBndGtfd2lkZ2V0
X2dldF9zdHlsZShnUGFydHMtPnNwaW5XaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhz
dHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2Fi
bGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfSU4sIE5VTEwsCi0gICAgICAgICAgICAg
ICAgICBnUGFydHMtPnNwaW5XaWRnZXQsICJzcGluYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAg
IHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3NwaW5fdXBkb3du
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc0Rvd24sIEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24p
Ci17Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRl
X3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93
X3R5cGUgPSBzdGF0ZV90eXBlID09IEdUS19TVEFURV9BQ1RJVkUgPwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19TSEFET1dfSU4gOiBHVEtfU0hBRE9XX09VVDsKLSAgICBH
dGtTdHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfc3Bpbl93aWRnZXQoKTsKLSAgICBzdHlsZSA9
IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+c3BpbldpZGdldCk7Ci0gICAgZ3RrX3dpZGdl
dF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+c3BpbldpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIFRT
T2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0a19wYWludF9i
b3goc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgTlVMTCwgZ1BhcnRz
LT5zcGluV2lkZ2V0LAotICAgICAgICAgICAgICAgICAgaXNEb3duID8gInNwaW5idXR0b25fZG93
biIgOiAic3BpbmJ1dHRvbl91cCIsCi0gICAgICAgICAgICAgICAgICByZWN0LT54LCByZWN0LT55
LCByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIC8qIGhhcmQgY29kZSB0aGVzZSB2
YWx1ZXMgKi8KLSAgICBhcnJvd19yZWN0LndpZHRoID0gNjsKLSAgICBhcnJvd19yZWN0LmhlaWdo
dCA9IDY7Ci0gICAgYXJyb3dfcmVjdC54ID0gcmVjdC0+eCArIChyZWN0LT53aWR0aCAtIGFycm93
X3JlY3Qud2lkdGgpIC8gMjsKLSAgICBhcnJvd19yZWN0LnkgPSByZWN0LT55ICsgKHJlY3QtPmhl
aWdodCAtIGFycm93X3JlY3QuaGVpZ2h0KSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55ICs9IGlzRG93
biA/IC0xIDogMTsKLQotICAgIGd0a19wYWludF9hcnJvdyhzdHlsZSwgZHJhd2FibGUsIHN0YXRl
X3R5cGUsIHNoYWRvd190eXBlLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICBnUGFydHMtPnNw
aW5XaWRnZXQsICJzcGluYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgaXNEb3duID8gR1RL
X0FSUk9XX0RPV04gOiBHVEtfQVJST1dfVVAsIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgIGFy
cm93X3JlY3QueCwgYXJyb3dfcmVjdC55LAotICAgICAgICAgICAgICAgICAgICBhcnJvd19yZWN0
LndpZHRoLCBhcnJvd19yZWN0LmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNT
OwotfQotCi1zdGF0aWMgZ2ludAogbW96X2d0a19zY2FsZV9wYWludChHZGtEcmF3YWJsZSogZHJh
d2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFu
Z2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlLAogICAgICAgICAgICAgICAgICAg
ICBHdGtPcmllbnRhdGlvbiBmbGFncywgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCkBAIC0x
NDcxLDc2ICsxMDE2LDYgQEAgbW96X2d0a19zY2FsZV90aHVtYl9wYWludChHZGtEcmF3YWJsZSog
ZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKIH0KIAogc3RhdGljIGdpbnQKLW1vel9ndGtf
Z3JpcHBlcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRT
dGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUo
c3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93X3R5cGU7Ci0gICAgR3RrU3R5bGUqIHN0
eWxlOwotCi0gICAgZW5zdXJlX2hhbmRsZWJveF93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT5oYW5kbGVCb3hXaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBz
dHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0KTsKLSAg
ICBzaGFkb3dfdHlwZSA9IGd0a19oYW5kbGVfYm94X2dldF9zaGFkb3dfdHlwZShHVEtfSEFORExF
X0JPWChnUGFydHMtPmhhbmRsZUJveFdpZGdldCkpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhz
dHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2Fi
bGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAg
IGdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0LCAiaGFuZGxlYm94X2JpbiIsIHJlY3QtPngsIHJlY3Qt
PnksCi0gICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2hwYW5l
ZF9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBz
dGF0ZSkKLXsKLSAgICBHdGtTdGF0ZVR5cGUgaHBhbmVkX3N0YXRlID0gQ29udmVydEd0a1N0YXRl
KHN0YXRlKTsKLQotICAgIGVuc3VyZV9ocGFuZWRfd2lkZ2V0KCk7Ci0gICAgZ3RrX3BhaW50X2hh
bmRsZShndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPmhwYW5lZFdpZGdldCksIGRyYXdhYmxl
LCBocGFuZWRfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICBHVEtfU0hBRE9XX05PTkUsIGNs
aXByZWN0LCBnUGFydHMtPmhwYW5lZFdpZGdldCwgInBhbmVkIiwKLSAgICAgICAgICAgICAgICAg
ICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQsCi0gICAgICAg
ICAgICAgICAgICAgICBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwotCi0gICAgcmV0dXJuIE1P
Wl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdnBhbmVkX3BhaW50KEdk
a0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlKQotewot
ICAgIEd0a1N0YXRlVHlwZSB2cGFuZWRfc3RhdGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwot
Ci0gICAgZW5zdXJlX3ZwYW5lZF93aWRnZXQoKTsKLSAgICBndGtfcGFpbnRfaGFuZGxlKGd0a193
aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dnBhbmVkV2lkZ2V0KSwgZHJhd2FibGUsIHZwYW5lZF9z
dGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgIEdUS19TSEFET1dfTk9ORSwgY2xpcHJlY3QsIGdQ
YXJ0cy0+dnBhbmVkV2lkZ2V0LCAicGFuZWQiLAotICAgICAgICAgICAgICAgICAgICAgcmVjdC0+
eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCwKLSAgICAgICAgICAgICAgICAg
ICAgIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NV
Q0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NhcmV0X3BhaW50KEdka0RyYXdhYmxl
KiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICBHZGtS
ZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBH
ZGtSZWN0YW5nbGUgbG9jYXRpb24gPSAqcmVjdDsKLSAgICBpZiAoZGlyZWN0aW9uID09IEdUS19U
RVhUX0RJUl9SVEwpIHsKLSAgICAgICAgLyogZ3RrX2RyYXdfaW5zZXJ0aW9uX2N1cnNvciBpZ25v
cmVzIGxvY2F0aW9uLndpZHRoICovCi0gICAgICAgIGxvY2F0aW9uLnggPSByZWN0LT54ICsgcmVj
dC0+d2lkdGg7Ci0gICAgfQotCi0gICAgZW5zdXJlX2VudHJ5X3dpZGdldCgpOwotICAgIGd0a19k
cmF3X2luc2VydGlvbl9jdXJzb3IoZ1BhcnRzLT5lbnRyeVdpZGdldCwgZHJhd2FibGUsIGNsaXBy
ZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2F0aW9uLCBUUlVFLCBkaXJl
Y3Rpb24sIEZBTFNFKTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRp
YyBnaW50CiBtb3pfZ3RrX2VudHJ5X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVj
dGFuZ2xlKiByZWN0LAogICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0
LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIEd0a1dpZGdldCog
d2lkZ2V0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE2NTQsMTQ0ICsxMTI5LDYg
QEAgbW96X2d0a19lbnRyeV9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rhbmds
ZSogcmVjdCwKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQogCi1zdGF0aWMgZ2ludCAK
LW1vel9ndGtfdHJlZXZpZXdfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5n
bGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3Qs
IEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERp
cmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgZ2ludCB4dGhpY2tuZXNzLCB5dGhpY2tuZXNzOwot
Ci0gICAgR3RrU3R5bGUgKnN0eWxlLCAqdHJlZXZpZXdfc3R5bGU7Ci0gICAgR3RrU3RhdGVUeXBl
IHN0YXRlX3R5cGU7Ci0KLSAgICBlbnN1cmVfdHJlZV92aWV3X3dpZGdldCgpOwotICAgIGVuc3Vy
ZV9zY3JvbGxlZF93aW5kb3dfd2lkZ2V0KCk7Ci0KLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rp
b24oZ1BhcnRzLT50cmVlVmlld1dpZGdldCwgZGlyZWN0aW9uKTsKLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT5zY3JvbGxlZFdpbmRvd1dpZGdldCwgZGlyZWN0aW9uKTsKLQot
ICAgIC8qIG9ubHkgaGFuZGxlIGRpc2FibGVkIGFuZCBub3JtYWwgc3RhdGVzLCBvdGhlcndpc2Ug
dGhlIHdob2xlIGJhY2tncm91bmQKLSAgICAgKiBhcmVhIHdpbGwgYmUgcGFpbnRlZCBkaWZmZXJl
bnRseSB3aXRoIG90aGVyIHN0YXRlcyAqLwotICAgIHN0YXRlX3R5cGUgPSBzdGF0ZS0+ZGlzYWJs
ZWQgPyBHVEtfU1RBVEVfSU5TRU5TSVRJVkUgOiBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAgLyog
SW4gR1RLIHRoZSB0cmVldmlldyBzZXRzIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSB3aW5kb3cKLSAg
ICAgKiB3aGljaCBjb250YWlucyB0aGUgY2VsbHMgdG8gdGhlIHRyZWV2aWV3IGJhc2UgY29sb3Iu
Ci0gICAgICogSWYgd2UgZG9uJ3Qgc2V0IGl0IGhlcmUgdGhlIGJhY2tncm91bmQgY29sb3Igd2ls
bCBub3QgYmUgY29ycmVjdC4qLwotICAgIGd0a193aWRnZXRfbW9kaWZ5X2JnKGdQYXJ0cy0+dHJl
ZVZpZXdXaWRnZXQsIHN0YXRlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmd0a193
aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dHJlZVZpZXdXaWRnZXQpLT5iYXNlW3N0YXRlX3R5cGVd
KTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5zY3JvbGxlZFdp
bmRvd1dpZGdldCk7Ci0gICAgeHRoaWNrbmVzcyA9IFhUSElDS05FU1Moc3R5bGUpOwotICAgIHl0
aGlja25lc3MgPSBZVEhJQ0tORVNTKHN0eWxlKTsKLQotICAgIHRyZWV2aWV3X3N0eWxlID0gZ3Rr
X3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT50cmVlVmlld1dpZGdldCk7Ci0gICAgVFNPZmZzZXRT
dHlsZUdDcyh0cmVldmlld19zdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBndGtfcGFpbnRfZmxhdF9i
b3godHJlZXZpZXdfc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfU0hBRE9XX05PTkUsIGNsaXByZWN0LCBnUGFydHMtPnRyZWVWaWV3V2lkZ2V0
LCAidHJlZXZpZXciLAotICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54ICsgeHRoaWNrbmVz
cywgcmVjdC0+eSArIHl0aGlja25lc3MsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndp
ZHRoIC0gMiAqIHh0aGlja25lc3MsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdo
dCAtIDIgKiB5dGhpY2tuZXNzKTsKLQotICAgIGd0a19wYWludF9zaGFkb3coc3R5bGUsIGRyYXdh
YmxlLCBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLAotICAgICAgICAgICAgICAgICAg
ICAgY2xpcHJlY3QsIGdQYXJ0cy0+c2Nyb2xsZWRXaW5kb3dXaWRnZXQsICJzY3JvbGxlZF93aW5k
b3ciLAotICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgs
IHJlY3QtPmhlaWdodCk7IAotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3Rh
dGljIGdpbnQKLW1vel9ndGtfdHJlZV9oZWFkZXJfY2VsbF9wYWludChHZGtEcmF3YWJsZSogZHJh
d2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaXNTb3J0ZWQsIEd0a1RleHREaXJlY3Rp
b24gZGlyZWN0aW9uKQotewotICAgIGd0a190cmVlX3ZpZXdfY29sdW1uX3NldF9zb3J0X2luZGlj
YXRvcihnUGFydHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpc1NvcnRlZCk7Ci0KLSAgICBtb3pfZ3RrX2J1dHRvbl9w
YWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBHVEtfUkVMSUVGX05PUk1BTCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJDZWxsV2lkZ2V0LCBk
aXJlY3Rpb24pOwotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50
Ci1tb3pfZ3RrX3RyZWVfaGVhZGVyX3NvcnRfYXJyb3dfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdh
YmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsIEd0a0Fycm93VHlwZSBmbGFncywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbikKLXsKLSAgICBHZGtSZWN0YW5nbGUgYXJyb3dfcmVjdDsKLSAgICBHdGtTdGF0ZVR5cGUg
c3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gICAgR3RrU2hhZG93VHlwZSBz
aGFkb3dfdHlwZSA9IEdUS19TSEFET1dfSU47Ci0gICAgR3RrQXJyb3dUeXBlIGFycm93X3R5cGUg
PSBmbGFnczsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfdHJlZV9oZWFkZXJf
Y2VsbF93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT50cmVl
SGVhZGVyU29ydEFycm93V2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgLyogaGFyZCBjb2RlIHRo
ZXNlIHZhbHVlcyAqLwotICAgIGFycm93X3JlY3Qud2lkdGggPSAxMTsKLSAgICBhcnJvd19yZWN0
LmhlaWdodCA9IDExOwotICAgIGFycm93X3JlY3QueCA9IHJlY3QtPnggKyAocmVjdC0+d2lkdGgg
LSBhcnJvd19yZWN0LndpZHRoKSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55ID0gcmVjdC0+eSArIChy
ZWN0LT5oZWlnaHQgLSBhcnJvd19yZWN0LmhlaWdodCkgLyAyOwotCi0gICAgc3R5bGUgPSBndGtf
d2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQpOwotICAg
IFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIGFycm93X3JlY3QueCwgYXJyb3dfcmVjdC55KTsKLQot
ICAgIGd0a19wYWludF9hcnJvdyhzdHlsZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUsIHNoYWRvd190
eXBlLCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT50cmVlSGVhZGVyU29y
dEFycm93V2lkZ2V0LCAiYXJyb3ciLCAgYXJyb3dfdHlwZSwgVFJVRSwKLSAgICAgICAgICAgICAg
ICAgICAgYXJyb3dfcmVjdC54LCBhcnJvd19yZWN0LnksCi0gICAgICAgICAgICAgICAgICAgIGFy
cm93X3JlY3Qud2lkdGgsIGFycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJldHVybiBNT1pfR1RL
X1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RyZWV2aWV3X2V4cGFuZGVyX3Bh
aW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRT
dGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0a0V4cGFuZGVy
U3R5bGUgZXhwYW5kZXJfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0
a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlICpzdHlsZTsKLSAgICBH
dGtTdGF0ZVR5cGUgc3RhdGVfdHlwZTsKLQotICAgIGVuc3VyZV90cmVlX3ZpZXdfd2lkZ2V0KCk7
Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+dHJlZVZpZXdXaWRnZXQsIGRp
cmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dHJl
ZVZpZXdXaWRnZXQpOwotCi0gICAgLyogQmVjYXVzZSB0aGUgZnJhbWUgd2UgZ2V0IGlzIG9mIHRo
ZSBlbnRpcmUgdHJlZXZpZXcsIHdlIGNhbid0IGdldCB0aGUgcHJlY2lzZQotICAgICAqIGV2ZW50
IHN0YXRlIG9mIG9uZSBleHBhbmRlciwgdGh1cyByZW5kZXJpbmcgaG92ZXIgYW5kIGFjdGl2ZSBm
ZWVkYmFjayB1c2VsZXNzLiAqLwotICAgIHN0YXRlX3R5cGUgPSBzdGF0ZS0+ZGlzYWJsZWQgPyBH
VEtfU1RBVEVfSU5TRU5TSVRJVkUgOiBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2V4cGFuZGVy
KHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgY2xpcHJlY3QsIGdQYXJ0cy0+dHJlZVZpZXdX
aWRnZXQsICJ0cmVldmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPnggKyByZWN0
LT53aWR0aCAvIDIsIHJlY3QtPnkgKyByZWN0LT5oZWlnaHQgLyAyLCBleHBhbmRlcl9zdGF0ZSk7
Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0
a19leHBhbmRlcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lk
Z2V0U3RhdGUqIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBHdGtFeHBhbmRlclN0eWxl
IGV4cGFuZGVyX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdHlsZSAqc3R5bGU7Ci0gICAgR3RrU3RhdGVUeXBlIHN0
YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotCi0gICAgZW5zdXJlX2V4cGFuZGVy
X3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPmV4cGFuZGVy
V2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShn
UGFydHMtPmV4cGFuZGVyV2lkZ2V0KTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJl
Y3QtPngsIHJlY3QtPnkpOwotICAgIGd0a19wYWludF9leHBhbmRlcihzdHlsZSwgZHJhd2FibGUs
IHN0YXRlX3R5cGUsIGNsaXByZWN0LCBnUGFydHMtPmV4cGFuZGVyV2lkZ2V0LCAiZXhwYW5kZXIi
LAotICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54ICsgcmVjdC0+d2lkdGggLyAyLCByZWN0
LT55ICsgcmVjdC0+aGVpZ2h0IC8gMiwgZXhwYW5kZXJfc3RhdGUpOwotCi0gICAgcmV0dXJuIE1P
Wl9HVEtfU1VDQ0VTUzsKLX0KLQogc3RhdGljIGdpbnQKIG1vel9ndGtfY29tYm9fYm94X3BhaW50
KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRl
LApAQCAtMTg3OCwzMjMgKzEyMTUsNiBAQCBtb3pfZ3RrX2NvbWJvX2JveF9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKIH0KIAogc3RhdGljIGdpbnQKLW1v
el9ndGtfZG93bmFycm93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xl
KiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwg
R3RrV2lkZ2V0U3RhdGUqIHN0YXRlKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtT
dGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gICAgR3RrU2hh
ZG93VHlwZSBzaGFkb3dfdHlwZSA9IHN0YXRlLT5hY3RpdmUgPyBHVEtfU0hBRE9XX0lOIDogR1RL
X1NIQURPV19PVVQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7Ci0KLSAgICBlbnN1cmVf
YnV0dG9uX2Fycm93X3dpZGdldCgpOwotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUo
Z1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCk7Ci0KLSAgICBjYWxjdWxhdGVfYXJyb3dfcmVjdChn
UGFydHMtPmJ1dHRvbkFycm93V2lkZ2V0LCByZWN0LCAmYXJyb3dfcmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBHVEtfVEVYVF9ESVJfTFRSKTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Mo
c3R5bGUsIGFycm93X3JlY3QueCwgYXJyb3dfcmVjdC55KTsKLSAgICBndGtfcGFpbnRfYXJyb3co
c3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJlY3QsCi0gICAg
ICAgICAgICAgICAgICAgIGdQYXJ0cy0+YnV0dG9uQXJyb3dXaWRnZXQsICJhcnJvdyIsICBHVEtf
QVJST1dfRE9XTiwgVFJVRSwKLSAgICAgICAgICAgICAgICAgICAgYXJyb3dfcmVjdC54LCBhcnJv
d19yZWN0LnksIGFycm93X3JlY3Qud2lkdGgsIGFycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJl
dHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NvbWJvX2Jv
eF9lbnRyeV9idXR0b25fcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUq
IHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xl
KiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtXaWRn
ZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jv
b2xlYW4gaW5wdXRfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
R3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgZ2ludCB4X2Rpc3BsYWNlbWVudCwg
eV9kaXNwbGFjZW1lbnQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3QsIHJlYWxfYXJyb3df
cmVjdDsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0
ZSk7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZSA9IHN0YXRlLT5hY3RpdmUgPyBHVEtf
U0hBRE9XX0lOIDogR1RLX1NIQURPV19PVVQ7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotCi0gICAg
ZW5zdXJlX2NvbWJvX2JveF9lbnRyeV93aWRnZXRzKCk7Ci0KLSAgICBpZiAoaW5wdXRfZm9jdXMp
IHsKLSAgICAgICAgLyogU29tZSB0aGVtZXMgZHJhdyBhIGNvbXBsZW1lbnRhcnkgZm9jdXMgcmlu
ZyBmb3IgdGhlIGRyb3Bkb3duIGJ1dHRvbgotICAgICAgICAgKiB3aGVuIHRoZSBkcm9wZG93biBl
bnRyeSBoYXMgZm9jdXMgKi8KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgICAgICBHVEtf
V0lER0VUX1NFVF9GTEFHUyhnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCwgR1RL
X0hBU19GT0NVUyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBtb3pfZ3RrX2J1dHRvbl9wYWludChk
cmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBHVEtfUkVMSUVGX05PUk1BTCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQsIGRp
cmVjdGlvbik7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGlmIChpbnB1dF9mb2N1
cykKLSAgICAgICAgR1RLX1dJREdFVF9VTlNFVF9GTEFHUyhnUGFydHMtPmNvbWJvQm94RW50cnlU
ZXh0YXJlYVdpZGdldCwgR1RLX0hBU19GT0NVUyk7Ci0jZW5kaWYKLQotICAgIGNhbGN1bGF0ZV9i
dXR0b25faW5uZXJfcmVjdChnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QsICZhcnJvd19yZWN0LCBkaXJlY3Rpb24s
IEZBTFNFKTsKLSAgICBpZiAoc3RhdGVfdHlwZSA9PSBHVEtfU1RBVEVfQUNUSVZFKSB7Ci0gICAg
ICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdl
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkLWRpc3BsYWNlbWVudC14Iiwg
JnhfZGlzcGxhY2VtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hpbGQtZGlz
cGxhY2VtZW50LXkiLCAmeV9kaXNwbGFjZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE5VTEwpOwotICAgICAgICBhcnJvd19yZWN0LnggKz0geF9kaXNwbGFjZW1lbnQ7Ci0gICAg
ICAgIGFycm93X3JlY3QueSArPSB5X2Rpc3BsYWNlbWVudDsKLSAgICB9Ci0KLSAgICBjYWxjdWxh
dGVfYXJyb3dfcmVjdChnUGFydHMtPmNvbWJvQm94RW50cnlBcnJvd1dpZGdldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAmYXJyb3dfcmVjdCwgJnJlYWxfYXJyb3dfcmVjdCwgZGlyZWN0aW9u
KTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5jb21ib0JveEVu
dHJ5QXJyb3dXaWRnZXQpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlYWxfYXJyb3df
cmVjdC54LCByZWFsX2Fycm93X3JlY3QueSk7Ci0KLSAgICBndGtfcGFpbnRfYXJyb3coc3R5bGUs
IGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJlY3QsCi0gICAgICAgICAg
ICAgICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0LCAiYXJyb3ciLCAgR1RL
X0FSUk9XX0RPV04sIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgIHJlYWxfYXJyb3dfcmVjdC54
LCByZWFsX2Fycm93X3JlY3QueSwKLSAgICAgICAgICAgICAgICAgICAgcmVhbF9hcnJvd19yZWN0
LndpZHRoLCByZWFsX2Fycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NV
Q0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NvbnRhaW5lcl9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwgCi0gICAg
ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc3JhZGlvLCBHdGtUZXh0RGlyZWN0aW9uIGRp
cmVjdGlvbikKLXsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0
ZShzdGF0ZSk7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1dpZGdldCAqd2lkZ2V0Owot
ICAgIGdib29sZWFuIGludGVyaW9yX2ZvY3VzOwotICAgIGdpbnQgZm9jdXNfd2lkdGgsIGZvY3Vz
X3BhZDsKLQotICAgIGlmIChpc3JhZGlvKSB7Ci0gICAgICAgIGVuc3VyZV9yYWRpb2J1dHRvbl93
aWRnZXQoKTsKLSAgICAgICAgd2lkZ2V0ID0gZ1BhcnRzLT5yYWRpb2J1dHRvbldpZGdldDsKLSAg
ICB9IGVsc2UgewotICAgICAgICBlbnN1cmVfY2hlY2tib3hfd2lkZ2V0KCk7Ci0gICAgICAgIHdp
ZGdldCA9IGdQYXJ0cy0+Y2hlY2tib3hXaWRnZXQ7Ci0gICAgfQotICAgIGd0a193aWRnZXRfc2V0
X2RpcmVjdGlvbih3aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRf
Z2V0X3N0eWxlKHdpZGdldCk7Ci0gICAgbW96X2d0a193aWRnZXRfZ2V0X2ZvY3VzKHdpZGdldCwg
JmludGVyaW9yX2ZvY3VzLCAmZm9jdXNfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICZmb2N1c19wYWQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwg
cmVjdC0+eSk7Ci0KLSAgICAvKiBUaGUgZGV0YWlsIGFyZ3VtZW50IGZvciB0aGUgZ3RrX3BhaW50
XyogY2FsbHMgYmVsb3cgYXJlICJjaGVja2J1dHRvbiIKLSAgICAgICBldmVuIGZvciByYWRpbyBi
dXR0b25zLCB0byBtYXRjaCB3aGF0IGd0ayBkb2VzLiAqLwotCi0gICAgLyogdGhpcyBpcyBmb3Ig
ZHJhd2luZyBhIHByZWxpZ2h0IGJveCAqLwotICAgIGlmIChzdGF0ZV90eXBlID09IEdUS19TVEFU
RV9QUkVMSUdIVCB8fCBzdGF0ZV90eXBlID09IEdUS19TVEFURV9BQ1RJVkUpIHsKLSAgICAgICAg
Z3RrX3BhaW50X2ZsYXRfYm94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX1BSRUxJR0hULAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NIQURPV19FVENIRURfT1VULCBjbGlwcmVj
dCwgd2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrYnV0dG9uIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCBy
ZWN0LT5oZWlnaHQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZV90eXBlICE9IEdUS19TVEFURV9O
T1JNQUwgJiYgc3RhdGVfdHlwZSAhPSBHVEtfU1RBVEVfUFJFTElHSFQpCi0gICAgICAgIHN0YXRl
X3R5cGUgPSBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAgaWYgKHN0YXRlLT5mb2N1c2VkICYmICFp
bnRlcmlvcl9mb2N1cykgewotICAgICAgICBndGtfcGFpbnRfZm9jdXMoc3R5bGUsIGRyYXdhYmxl
LCBzdGF0ZV90eXBlLCBjbGlwcmVjdCwgd2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ImNoZWNrYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnks
IHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RL
X1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RvZ2dsZV9sYWJlbF9wYWludChH
ZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc3JhZGlvLCBHdGtUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZTsKLSAg
ICBHdGtTdHlsZSAqc3R5bGU7Ci0gICAgR3RrV2lkZ2V0ICp3aWRnZXQ7Ci0gICAgZ2Jvb2xlYW4g
aW50ZXJpb3JfZm9jdXM7Ci0KLSAgICBpZiAoIXN0YXRlLT5mb2N1c2VkKQotICAgICAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotCi0gICAgaWYgKGlzcmFkaW8pIHsKLSAgICAgICAgZW5zdXJl
X3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICB3aWRnZXQgPSBnUGFydHMtPnJhZGlvYnV0
dG9uV2lkZ2V0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVuc3VyZV9jaGVja2JveF93aWRnZXQo
KTsKLSAgICAgICAgd2lkZ2V0ID0gZ1BhcnRzLT5jaGVja2JveFdpZGdldDsKLSAgICB9Ci0gICAg
Z3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIGd0a193
aWRnZXRfc3R5bGVfZ2V0KHdpZGdldCwgImludGVyaW9yLWZvY3VzIiwgJmludGVyaW9yX2ZvY3Vz
LCBOVUxMKTsKLSAgICBpZiAoIWludGVyaW9yX2ZvY3VzKQotICAgICAgICByZXR1cm4gTU9aX0dU
S19TVUNDRVNTOwotCi0gICAgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0K
LSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICAvKiBBbHdheXMgImNoZWNr
YnV0dG9uIiB0byBtYXRjaCBndGtjaGVja2J1dHRvbi5jICovCi0gICAgZ3RrX3BhaW50X2ZvY3Vz
KHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgY2xpcHJlY3QsIHdpZGdldCwKLSAgICAgICAg
ICAgICAgICAgICAgImNoZWNrYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwg
cmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dU
S19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a190b29sYmFyX3BhaW50KEdka0Ry
YXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQot
ewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlOwot
Ci0gICAgZW5zdXJlX3Rvb2xiYXJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0
aW9uKGdQYXJ0cy0+dG9vbGJhcldpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0gZ3Rr
X3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT50b29sYmFyV2lkZ2V0KTsKLQotICAgIFRTT2Zmc2V0
U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotCi0gICAgZ3RrX3N0eWxlX2FwcGx5
X2RlZmF1bHRfYmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfTk9STUFMLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIHJlY3QtPngsIHJlY3QtPnksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+
aGVpZ2h0KTsKLQotICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KGdQYXJ0cy0+dG9vbGJhcldpZGdl
dCwgInNoYWRvdy10eXBlIiwgJnNoYWRvd190eXBlLCBOVUxMKTsKLQotICAgIGd0a19wYWludF9i
b3ggKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgc2hhZG93X3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+dG9vbGJhcldpZGdldCwgInRvb2xiYXIi
LAotICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0
LT5oZWlnaHQpOwotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdp
bnQKLW1vel9ndGtfdG9vbGJhcl9zZXBhcmF0b3JfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxl
LCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdk
a1JlY3RhbmdsZSogY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0
a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBn
aW50ICAgICBzZXBhcmF0b3Jfd2lkdGg7Ci0gICAgZ2ludCAgICAgcGFpbnRfd2lkdGg7Ci0gICAg
Z2Jvb2xlYW4gd2lkZV9zZXBhcmF0b3JzOwotICAgIAotICAgIC8qIERlZmluZWQgYXMgY29uc3Rh
bnRzIGluIEdUSysgMi4xMC4xNCAqLwotICAgIGNvbnN0IGRvdWJsZSBzdGFydF9mcmFjdGlvbiA9
IDAuMjsKLSAgICBjb25zdCBkb3VibGUgZW5kX2ZyYWN0aW9uID0gMC44OwotCi0gICAgZW5zdXJl
X3Rvb2xiYXJfc2VwYXJhdG9yX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlv
bihnUGFydHMtPnRvb2xiYXJTZXBhcmF0b3JXaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHls
ZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dG9vbGJhclNlcGFyYXRvcldpZGdldCk7
Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMtPnRvb2xiYXJXaWRnZXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICZ3aWRlX3NlcGFyYXRvcnMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgInNlcGFyYXRvci13aWR0aCIsICZzZXBhcmF0b3Jf
d2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICBUU09mZnNldFN0
eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLQotICAgIGlmICh3aWRlX3NlcGFyYXRv
cnMpIHsKLSAgICAgICAgaWYgKHNlcGFyYXRvcl93aWR0aCA+IHJlY3QtPndpZHRoKQotICAgICAg
ICAgICAgc2VwYXJhdG9yX3dpZHRoID0gcmVjdC0+d2lkdGg7Ci0KLSAgICAgICAgZ3RrX3BhaW50
X2JveChzdHlsZSwgZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX05P
Uk1BTCwgR1RLX1NIQURPV19FVENIRURfT1VULAotICAgICAgICAgICAgICAgICAgICAgIGNsaXBy
ZWN0LCBnUGFydHMtPnRvb2xiYXJXaWRnZXQsICJ2c2VwYXJhdG9yIiwKLSAgICAgICAgICAgICAg
ICAgICAgICByZWN0LT54ICsgKHJlY3QtPndpZHRoIC0gc2VwYXJhdG9yX3dpZHRoKSAvIDIsCi0g
ICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eSArIHJlY3QtPmhlaWdodCAqIHN0YXJ0X2ZyYWN0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcl93aWR0aCwKLSAgICAgICAgICAg
ICAgICAgICAgICByZWN0LT5oZWlnaHQgKiAoZW5kX2ZyYWN0aW9uIC0gc3RhcnRfZnJhY3Rpb24p
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgfSBlbHNlIHsKLSAgICAgICAgcGFpbnRf
d2lkdGggPSBzdHlsZS0+eHRoaWNrbmVzczsKLSAgICAgICAgCi0gICAgICAgIGlmIChwYWludF93
aWR0aCA+IHJlY3QtPndpZHRoKQotICAgICAgICAgICAgcGFpbnRfd2lkdGggPSByZWN0LT53aWR0
aDsKLSAgICAKLSAgICAgICAgZ3RrX3BhaW50X3ZsaW5lKHN0eWxlLCBkcmF3YWJsZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LCBnUGFydHMtPnRv
b2xiYXJTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAidG9vbGJhciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVjdC0+aGVpZ2h0ICogc3RhcnRf
ZnJhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVjdC0+aGVpZ2h0
ICogZW5kX2ZyYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCArIChyZWN0
LT53aWR0aCAtIHBhaW50X3dpZHRoKSAvIDIpOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a190b29sdGlwX3BhaW50KEdk
a0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAg
ICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9u
KQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLQotICAgIGVuc3VyZV90b29sdGlwX3dpZGdldCgp
OwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPnRvb2x0aXBXaWRnZXQsIGRp
cmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a19yY19nZXRfc3R5bGVfYnlfcGF0aHMoZ3RrX3Nl
dHRpbmdzX2dldF9kZWZhdWx0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJndGstdG9vbHRpcHMiLCAiR3RrV2luZG93IiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR1RLX1RZUEVfV0lORE9XKTsKLQotICAgIHN0eWxlID0gZ3RrX3N0eWxl
X2F0dGFjaChzdHlsZSwgZ3RrX3dpZGdldF9nZXRfd2luZG93KGdQYXJ0cy0+dG9vbHRpcFdpZGdl
dCkpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAg
IGd0a19wYWludF9mbGF0X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUwsIEdU
S19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgZ1BhcnRzLT50
b29sdGlwV2lkZ2V0LCAidG9vbHRpcCIsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngs
IHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gICAgcmV0dXJuIE1PWl9H
VEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfcmVzaXplcl9wYWludChHZGtE
cmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3Rr
U3R5bGUqIHN0eWxlOwotICAgIEd0a1N0YXRlVHlwZSBzdGF0ZV90eXBlID0gQ29udmVydEd0a1N0
YXRlKHN0YXRlKTsKLQotICAgIGVuc3VyZV93aW5kb3dfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdl
dF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+cHJvdG9XaW5kb3csIGRpcmVjdGlvbik7Ci0KLSAgICBz
dHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+cHJvdG9XaW5kb3cpOwotCi0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBndGtfcGFp
bnRfcmVzaXplX2dyaXAoc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBjbGlwcmVjdCwgZ1Bh
cnRzLT5wcm90b1dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgKGRpcmVj
dGlvbiA9PSBHVEtfVEVYVF9ESVJfTFRSKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEdE
S19XSU5ET1dfRURHRV9TT1VUSF9FQVNUIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR0RL
X1dJTkRPV19FREdFX1NPVVRIX1dFU1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qt
PngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIHJldHVybiBNT1pf
R1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2ZyYW1lX3BhaW50KEdka0Ry
YXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAg
ICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsK
LSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZTsKLQot
ICAgIGVuc3VyZV9mcmFtZV93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rpb24o
Z1BhcnRzLT5mcmFtZVdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdl
dF9nZXRfc3R5bGUoZ1BhcnRzLT5mcmFtZVdpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxl
X2dldChnUGFydHMtPnN0YXR1c2JhcldpZGdldCwgInNoYWRvdy10eXBlIiwgJnNoYWRvd190eXBl
LCBOVUxMKTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkp
OwotICAgIGd0a19wYWludF9zaGFkb3coc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFM
LCBzaGFkb3dfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPmZy
YW1lV2lkZ2V0LCAiZnJhbWUiLCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAgICAg
ICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1zdGF0aWMgZ2ludAogbW96X2d0a19wcm9ncmVzc2Jhcl9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24p
CiB7CkBAIC0yMjMzLDQzOCArMTI1Myw2IEBAIG1vel9ndGtfcHJvZ3Jlc3NfY2h1bmtfcGFpbnQo
R2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCiB9CiAKIGdpbnQKLW1v
el9ndGtfZ2V0X3RhYl90aGlja25lc3Modm9pZCkKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0K
LSAgICBlbnN1cmVfdGFiX3dpZGdldCgpOwotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5
bGUoZ1BhcnRzLT50YWJXaWRnZXQpOwotICAgIGlmIChZVEhJQ0tORVNTKHN0eWxlKSA8IDIpCi0g
ICAgICAgIHJldHVybiAyOyAvKiBzb21lIHRoZW1lcyBkb24ndCBzZXQgeXRoaWNrbmVzcyBjb3Jy
ZWN0bHkgKi8KLQotICAgIHJldHVybiBZVEhJQ0tORVNTKHN0eWxlKTsKLX0KLQotc3RhdGljIGdp
bnQKLW1vel9ndGtfdGFiX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xl
KiByZWN0LAotICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGFi
RmxhZ3MgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlv
bikKLXsKLSAgICAvKiBXaGVuIHRoZSB0YWIgaXNuJ3Qgc2VsZWN0ZWQsIHdlIGp1c3QgZHJhdyBh
IG5vdGVib29rIGV4dGVuc2lvbi4KLSAgICAgKiBXaGVuIGl0IGlzIHNlbGVjdGVkLCB3ZSBvdmVy
d3JpdGUgdGhlIGFkamFjZW50IGJvcmRlciBvZiB0aGUgdGFicGFuZWwKLSAgICAgKiB0b3VjaGlu
ZyB0aGUgdGFiIHdpdGggYSBwaWVyY2VkIGJvcmRlciAoY2FsbGVkICJ0aGUgZ2FwIikgdG8gbWFr
ZSB0aGUKLSAgICAgKiB0YWIgYXBwZWFyIHBoeXNpY2FsbHkgYXR0YWNoZWQgdG8gdGhlIHRhYnBh
bmVsOyBzZWUgZGV0YWlscyBiZWxvdy4gKi8KLQotICAgIEd0a1N0eWxlKiBzdHlsZTsKLQotICAg
IGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0
cy0+dGFiV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9z
dHlsZShnUGFydHMtPnRhYldpZGdldCk7Ci0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVj
dC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBpZiAoKGZsYWdzICYgTU9aX0dUS19UQUJfU0VMRUNURUQp
ID09IDApIHsKLSAgICAgICAgLyogT25seSBkcmF3IHRoZSB0YWIgKi8KLSAgICAgICAgZ3RrX3Bh
aW50X2V4dGVuc2lvbihzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9BQ1RJVkUsIEdUS19TSEFE
T1dfT1VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPnRh
YldpZGdldCwgInRhYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVj
dC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoZmxhZ3MgJiBNT1pfR1RLX1RBQl9CT1RUT00pID8KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR1RLX1BPU19UT1AgOiBHVEtfUE9TX0JPVFRPTSApOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIC8qIERyYXcgdGhlIHRhYiBhbmQgdGhlIGdhcAotICAgICAgICAgKiBXZSB3YW50
IHRoZSBnYXAgdG8gYmUgcG9zaXRpb25uZWQgZXhhY3RseSBvbiB0aGUgdGFicGFuZWwgdG9wCi0g
ICAgICAgICAqIGJvcmRlcjsgc2luY2UgdGFiYm94LmNzcyBtYXkgc2V0IGEgbmVnYXRpdmUgbWFy
Z2luIHNvIHRoYXQgdGhlIHRhYgotICAgICAgICAgKiBmcmFtZSByZWN0IGFscmVhZHkgb3Zlcmxh
cHMgdGhlIHRhYnBhbmVsIGZyYW1lIHJlY3QsIHdlIG5lZWQgdG8gdGFrZQotICAgICAgICAgKiB0
aGF0IGludG8gYWNjb3VudCB3aGVuIGRyYXdpbmcuIFRvIHRoYXQgZWZmZWN0LCBuc05hdGl2ZVRo
ZW1lR1RLCi0gICAgICAgICAqIHBhc3NlcyB1cyB0aGlzIG5lZ2F0aXZlIG1hcmdpbiAoYm1hcmdp
biBpbiB0aGUgZ3JhcGhpYyBiZWxvdykgaW4gdGhlCi0gICAgICAgICAqIGxvd2VzdCBiaXRzIG9m
IHxmbGFnc3wuICBXZSB1c2UgaXQgdG8gc2V0IGdhcF92b2Zmc2V0LCB0aGUgZGlzdGFuY2UKLSAg
ICAgICAgICogYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBnYXAgYW5kIHRoZSBib3R0b20gb2YgdGhl
IHRhYiAocmVzcC4gdGhlCi0gICAgICAgICAqIGJvdHRvbSBvZiB0aGUgZ2FwIGFuZCB0aGUgdG9w
IG9mIHRoZSB0YWIgd2hlbiB3ZSBkcmF3IGEgYm90dG9tIHRhYiksCi0gICAgICAgICAqIHdoaWxl
IGVuc3VyaW5nIHRoYXQgdGhlIGdhcCBhbHdheXMgdG91Y2hlcyB0aGUgYm9yZGVyIG9mIHRoZSB0
YWIsCi0gICAgICAgICAqIGkuZS4gMCA8PSBnYXBfdm9mZnNldCA8PSBnYXBfaGVpZ2h0LCB0byBh
dm9pZCBzdXJwcmluc2luZyByZXN1bHRzCi0gICAgICAgICAqIHdpdGggYmlnIG5lZ2F0aXZlIG9y
IHBvc2l0aXZlIG1hcmdpbnMuCi0gICAgICAgICAqIEhlcmUgaXMgYSBncmFwaGljYWwgZXhwbGFu
YXRpb24gaW4gdGhlIGNhc2Ugb2YgdG9wIHRhYnM6Ci0gICAgICAgICAqICAgICAgICAgICAgIF9f
X19fX19fX19fX19fX19fX19fX19fX19fXwotICAgICAgICAgKiAgICAgICAgICAgIC8gICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAg
VCBBIEIgICAgICAgICAgICB8Ci0gICAgICAgICAqIC0tLS0tLS0tLS18LiAuIC4gLiAuIC4gLiAu
IC4gLiAuIC4gLiAuIC58LS0tLS0gdG9wIG9mIHRhYnBhbmVsCi0gICAgICAgICAqICAgICAgICAg
ICA6ICAgIF4gICAgICAgYm1hcmdpbiAgICAgICAgICA6ICBeCi0gICAgICAgICAqICAgICAgICAg
ICA6ICAgIHwgKC1uZWdhdGl2ZSBtYXJnaW4sICAgICA6ICB8Ci0gICAgICAgICAqICBib3R0b20g
ICA6ICAgIHYgIHBhc3NlZCBpbiBmbGFncykgICAgICA6ICB8ICAgICAgIGdhcF9oZWlnaHQKLSAg
ICAgICAgICogICAgb2YgIC0+IDouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLjogIHwgICAg
KHRoZSBzaXplIG9mIHRoZQotICAgICAgICAgKiB0aGUgdGFiICAgLiAgICAgICBwYXJ0IG9mIHRo
ZSBnYXAgICAgICAgLiAgfCAgdGFicGFuZWwgdG9wIGJvcmRlcikKLSAgICAgICAgICogICAgICAg
ICAgIC4gICAgICBvdXRzaWRlIG9mIHRoZSB0YWIgICAgIC4gIHYKLSAgICAgICAgICogLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgKgotICAg
ICAgICAgKiBUbyBkcmF3IHRoZSBnYXAsIHdlIHVzZSBndGtfcGFpbnRfYm94X2dhcCgpLCBzZWUg
Y29tbWVudCBpbgotICAgICAgICAgKiBtb3pfZ3RrX3RhYnBhbmVsc19wYWludCgpLiBUaGlzIGJv
eF9nYXAgaXMgbWFkZSAzICogZ2FwX2hlaWdodCB0YWxsLAotICAgICAgICAgKiB3aGljaCBzaG91
bGQgc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgb25seSB2aXNpYmxlIGJvcmRlciBpcyB0aGUK
LSAgICAgICAgICogcGllcmNlZCBvbmUuICBJZiB0aGUgdGFiIGlzIGluIHRoZSBtaWRkbGUsIHdl
IG1ha2UgdGhlIGJveF9nYXAgYmVnaW4KLSAgICAgICAgICogYSBiaXQgdG8gdGhlIGxlZnQgb2Yg
dGhlIHRhYiBhbmQgZW5kIGEgYml0IHRvIHRoZSByaWdodCwgYWRqdXN0aW5nCi0gICAgICAgICAq
IHRoZSBnYXAgcG9zaXRpb24gc28gaXQgc3RpbGwgaXMgdW5kZXIgdGhlIHRhYiwgYmVjYXVzZSB3
ZSB3YW50IHRoZQotICAgICAgICAgKiByZW5kZXJpbmcgb2YgYSBnYXAgaW4gdGhlIG1pZGRsZSBv
ZiBhIHRhYnBhbmVsLiAgVGhpcyBpcyB0aGUgcm9sZSBvZgotICAgICAgICAgKiB0aGUgZ2ludHMg
Z2FwX3tsLHJ9X29mZnNldC4gT24gdGhlIGNvbnRyYXJ5LCBpZiB0aGUgdGFiIGlzIHRoZQotICAg
ICAgICAgKiBmaXJzdCwgd2UgYWxpZ24gdGhlIHN0YXJ0IGJvcmRlciBvZiB0aGUgYm94X2dhcCB3
aXRoIHRoZSBzdGFydAotICAgICAgICAgKiBib3JkZXIgb2YgdGhlIHRhYiAobGVmdCBpZiBMVFIs
IHJpZ2h0IGlmIFJUTCksIGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAqIGFwcHJvcHJpYXRlIG9m
ZnNldCB0byAwLiovCi0gICAgICAgIGdpbnQgZ2FwX2xvZmZzZXQsIGdhcF9yb2Zmc2V0LCBnYXBf
dm9mZnNldCwgZ2FwX2hlaWdodDsKLQotICAgICAgICAvKiBHZXQgaGVpZ2h0IG5lZWRlZCBieSB0
aGUgZ2FwICovCi0gICAgICAgIGdhcF9oZWlnaHQgPSBtb3pfZ3RrX2dldF90YWJfdGhpY2tuZXNz
KCk7Ci0KLSAgICAgICAgLyogRXh0cmFjdCBnYXBfdm9mZnNldCBmcm9tIHRoZSBmaXJzdCBiaXRz
IG9mIGZsYWdzICovCi0gICAgICAgIGdhcF92b2Zmc2V0ID0gZmxhZ3MgJiBNT1pfR1RLX1RBQl9N
QVJHSU5fTUFTSzsKLSAgICAgICAgaWYgKGdhcF92b2Zmc2V0ID4gZ2FwX2hlaWdodCkKLSAgICAg
ICAgICAgIGdhcF92b2Zmc2V0ID0gZ2FwX2hlaWdodDsKLQotICAgICAgICAvKiBTZXQgZ2FwX3ts
LHJ9X29mZnNldCB0byBhcHByb3ByaWF0ZSB2YWx1ZXMgKi8KLSAgICAgICAgZ2FwX2xvZmZzZXQg
PSBnYXBfcm9mZnNldCA9IDIwOyAvKiBzaG91bGQgYmUgZW5vdWdoICovCi0gICAgICAgIGlmIChm
bGFncyAmIE1PWl9HVEtfVEFCX0ZJUlNUKSB7Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09
IEdUS19URVhUX0RJUl9SVEwpCi0gICAgICAgICAgICAgICAgZ2FwX3JvZmZzZXQgPSAwOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0ID0gMDsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChmbGFncyAmIE1PWl9HVEtfVEFCX0JPVFRPTSkgewotICAgICAgICAg
ICAgLyogRW5sYXJnZSB0aGUgY2xpcHJlY3QgdG8gaGF2ZSByb29tIGZvciB0aGUgZnVsbCBnYXAg
aGVpZ2h0ICovCi0gICAgICAgICAgICBjbGlwcmVjdC0+aGVpZ2h0ICs9IGdhcF9oZWlnaHQgLSBn
YXBfdm9mZnNldDsKLSAgICAgICAgICAgIGNsaXByZWN0LT55IC09IGdhcF9oZWlnaHQgLSBnYXBf
dm9mZnNldDsKLQotICAgICAgICAgICAgLyogRHJhdyB0aGUgdGFiICovCi0gICAgICAgICAgICBn
dGtfcGFpbnRfZXh0ZW5zaW9uKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NIQURPV19PVVQsIGNsaXByZWN0LCBn
UGFydHMtPnRhYldpZGdldCwgInRhYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlY3QtPngsIHJlY3QtPnkgKyBnYXBfdm9mZnNldCwgcmVjdC0+d2lkdGgsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdodCAtIGdhcF92b2Zmc2V0LCBHVEtfUE9T
X1RPUCk7Ci0KLSAgICAgICAgICAgIC8qIERyYXcgdGhlIGdhcDsgZXJhc2Ugd2l0aCBiYWNrZ3Jv
dW5kIGNvbG9yIGJlZm9yZSBwYWludGluZyBpbgotICAgICAgICAgICAgICogY2FzZSB0aGVtZSBk
b2VzIG5vdCAqLwotICAgICAgICAgICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRfYmFja2dyb3Vu
ZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgZ2FwX3ZvZmZzZXQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAt
IGdhcF9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY3QtPndpZHRoLCBnYXBfaGVpZ2h0KTsKLSAgICAgICAgICAgIGd0a19wYWludF9ib3hf
Z2FwKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19PVVQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgZ1BhcnRzLT50YWJXaWRnZXQs
ICJub3RlYm9vayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54IC0gZ2Fw
X2xvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgZ2FwX3Zv
ZmZzZXQgLSAzICogZ2FwX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QtPndpZHRoICsgZ2FwX2xvZmZzZXQgKyBnYXBfcm9mZnNldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDMgKiBnYXBfaGVpZ2h0LCBHVEtfUE9TX0JPVFRPTSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0LCByZWN0LT53aWR0aCk7Ci0gICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAvKiBFbmxhcmdlIHRoZSBjbGlwcmVjdCB0byBoYXZlIHJvb20g
Zm9yIHRoZSBmdWxsIGdhcCBoZWlnaHQgKi8KLSAgICAgICAgICAgIGNsaXByZWN0LT5oZWlnaHQg
Kz0gZ2FwX2hlaWdodCAtIGdhcF92b2Zmc2V0OwotCi0gICAgICAgICAgICAvKiBEcmF3IHRoZSB0
YWIgKi8KLSAgICAgICAgICAgIGd0a19wYWludF9leHRlbnNpb24oc3R5bGUsIGRyYXdhYmxlLCBH
VEtfU1RBVEVfTk9STUFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU0hB
RE9XX09VVCwgY2xpcHJlY3QsIGdQYXJ0cy0+dGFiV2lkZ2V0LCAidGFiIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdodCAtIGdhcF92b2Zmc2V0LCBH
VEtfUE9TX0JPVFRPTSk7Ci0KLSAgICAgICAgICAgIC8qIERyYXcgdGhlIGdhcDsgZXJhc2Ugd2l0
aCBiYWNrZ3JvdW5kIGNvbG9yIGJlZm9yZSBwYWludGluZyBpbgotICAgICAgICAgICAgICogY2Fz
ZSB0aGVtZSBkb2VzIG5vdCAqLwotICAgICAgICAgICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRf
YmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVj
dC0+aGVpZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgLSBnYXBfdm9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIGdhcF9oZWlnaHQpOwotICAgICAgICAgICAgZ3Rr
X3BhaW50X2JveF9nYXAoc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hB
RE9XX09VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMt
PnRhYldpZGdldCwgIm5vdGVib29rIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QtPnggLSBnYXBfbG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3Qt
PnkgKyByZWN0LT5oZWlnaHQgLSBnYXBfdm9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPndpZHRoICsgZ2FwX2xvZmZzZXQgKyBnYXBfcm9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMgKiBnYXBfaGVpZ2h0LCBHVEtfUE9TX1RPUCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0LCByZWN0LT53aWR0aCk7Ci0gICAg
ICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRp
YyBnaW50Ci1tb3pfZ3RrX3RhYnBhbmVsc19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdk
a1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSog
Y2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIC8qIFdlIHVzZSBn
dGtfcGFpbnRfYm94X2dhcCgpIHRvIGRyYXcgdGhlIHRhYnBhbmVscyB3aWRnZXQuIGd0a19wYWlu
dF9ib3goKQotICAgICAqIGRyYXdzIGFuIGFsbC1wdXJwb3NlIGJveCwgd2hpY2ggYSBsb3Qgb2Yg
dGhlbWVzIHJlbmRlciBkaWZmZXJlbnRseS4KLSAgICAgKiBBIHplcm8td2lkdGggZ2FwIGlzIHN0
aWxsIHZpc2libGUgaW4gbW9zdCB0aGVtZXMsIHNvIHdlIGhpZGUgaXQgdG8gdGhlCi0gICAgICog
bGVmdCAoMTBweCBzaG91bGQgYmUgZW5vdWdoKSAqLwotICAgIEd0a1N0eWxlKiBzdHlsZTsKLQot
ICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQ
YXJ0cy0+dGFiV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dl
dF9zdHlsZShnUGFydHMtPnRhYldpZGdldCk7Ci0KLSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxl
LCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfcGFpbnRfYm94X2dhcChzdHlsZSwgZHJhd2Fi
bGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAg
ICAgIGNsaXByZWN0LCBnUGFydHMtPnRhYldpZGdldCwgIm5vdGVib29rIiwgcmVjdC0+eCwgcmVj
dC0+eSwKLSAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgIEdUS19QT1NfVE9QLCAtMTAsIDApOwotCi0gICAgcmV0dXJu
IE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdGFiX3Njcm9sbF9h
cnJvd19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtX
aWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrQXJy
b3dUeXBlIGFycm93X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRlX3R5cGUgPSBD
b252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93X3R5cGUgPSBz
dGF0ZS0+YWN0aXZlID8gR1RLX1NIQURPV19JTiA6IEdUS19TSEFET1dfT1VUOwotICAgIEd0a1N0
eWxlKiBzdHlsZTsKLSAgICBnaW50IGFycm93X3NpemUgPSBNSU4ocmVjdC0+d2lkdGgsIHJlY3Qt
PmhlaWdodCk7Ci0gICAgZ2ludCB4ID0gcmVjdC0+eCArIChyZWN0LT53aWR0aCAtIGFycm93X3Np
emUpIC8gMjsKLSAgICBnaW50IHkgPSByZWN0LT55ICsgKHJlY3QtPmhlaWdodCAtIGFycm93X3Np
emUpIC8gMjsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0KLSAgICBzdHlsZSA9IGd0a193
aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dGFiV2lkZ2V0KTsKLSAgICBUU09mZnNldFN0eWxlR0Nz
KHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLQotICAgIGlmIChkaXJlY3Rpb24gPT0gR1RLX1RF
WFRfRElSX1JUTCkgewotICAgICAgICBhcnJvd190eXBlID0gKGFycm93X3R5cGUgPT0gR1RLX0FS
Uk9XX0xFRlQpID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQVJST1dfUklHSFQgOiBH
VEtfQVJST1dfTEVGVDsKLSAgICB9Ci0KLSAgICBndGtfcGFpbnRfYXJyb3coc3R5bGUsIGRyYXdh
YmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgTlVMTCwKLSAgICAgICAgICAgICAgICAgICAg
Z1BhcnRzLT50YWJXaWRnZXQsICJub3RlYm9vayIsIGFycm93X3R5cGUsIFRSVUUsCi0gICAgICAg
ICAgICAgICAgICAgIHgsIHksIGFycm93X3NpemUsIGFycm93X3NpemUpOwotCi0gICAgcmV0dXJu
IE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVudV9iYXJfcGFp
bnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGly
ZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRv
d190eXBlOwotICAgIGVuc3VyZV9tZW51X2Jhcl93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT5tZW51QmFyV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgZ3Rr
X3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT5tZW51QmFyV2lkZ2V0LCAic2hhZG93LXR5cGUiLCAm
c2hhZG93X3R5cGUsIE5VTEwpOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShn
UGFydHMtPm1lbnVCYXJXaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVj
dC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRfYmFja2dyb3VuZChz
dHlsZSwgZHJhd2FibGUsIFRSVUUsIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVjdC0+eSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoLCByZWN0LT5oZWln
aHQpOwotCi0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JN
QUwsIHNoYWRvd190eXBlLAotICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+bWVu
dUJhcldpZGdldCwgIm1lbnViYXIiLCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAg
ICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VT
UzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVudV9wb3B1cF9wYWludChHZGtEcmF3YWJs
ZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsK
LSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgZW5zdXJlX21lbnVfcG9wdXBfd2lkZ2V0KCk7Ci0g
ICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+bWVudVBvcHVwV2lkZ2V0LCBkaXJl
Y3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPm1lbnVQ
b3B1cFdpZGdldCk7Ci0KLSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0
LT55KTsKLSAgICBndGtfc3R5bGVfYXBwbHlfZGVmYXVsdF9iYWNrZ3JvdW5kKHN0eWxlLCBkcmF3
YWJsZSwgVFJVRSwgR1RLX1NUQVRFX05PUk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNsaXByZWN0LCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0gICAg
Z3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFE
T1dfT1VULCAKLSAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPm1lbnVQb3B1cFdp
ZGdldCwgIm1lbnUiLAotICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+
d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQot
Ci1zdGF0aWMgZ2ludAotbW96X2d0a19tZW51X3NlcGFyYXRvcl9wYWludChHZGtEcmF3YWJsZSog
ZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17
Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIGdib29sZWFuIHdpZGVfc2VwYXJhdG9yczsKLSAg
ICBnaW50IHNlcGFyYXRvcl9oZWlnaHQ7Ci0gICAgZ3VpbnQgaG9yaXpvbnRhbF9wYWRkaW5nOwot
ICAgIGdpbnQgcGFpbnRfaGVpZ2h0OwotCi0gICAgZW5zdXJlX21lbnVfc2VwYXJhdG9yX3dpZGdl
dCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPm1lbnVTZXBhcmF0b3JX
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQ
YXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChn
UGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIndp
ZGUtc2VwYXJhdG9ycyIsICAgICZ3aWRlX3NlcGFyYXRvcnMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgInNlcGFyYXRvci1oZWlnaHQiLCAgICZzZXBhcmF0b3JfaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICJob3Jpem9udGFsLXBhZGRpbmciLCAmaG9yaXpvbnRhbF9wYWRkaW5n
LAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdD
cyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBpZiAod2lkZV9zZXBhcmF0b3JzKSB7
Ci0gICAgICAgIGlmIChzZXBhcmF0b3JfaGVpZ2h0ID4gcmVjdC0+aGVpZ2h0KQotICAgICAgICAg
ICAgc2VwYXJhdG9yX2hlaWdodCA9IHJlY3QtPmhlaWdodDsKLQotICAgICAgICBndGtfcGFpbnRf
Ym94KHN0eWxlLCBkcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfTk9S
TUFMLCBHVEtfU0hBRE9XX0VUQ0hFRF9PVVQsCi0gICAgICAgICAgICAgICAgICAgICAgY2xpcHJl
Y3QsIGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCwgImhzZXBhcmF0b3IiLAotICAgICAgICAg
ICAgICAgICAgICAgIHJlY3QtPnggKyBob3Jpem9udGFsX3BhZGRpbmcgKyBzdHlsZS0+eHRoaWNr
bmVzcywKLSAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgKHJlY3QtPmhlaWdodCAtIHNl
cGFyYXRvcl9oZWlnaHQgLSBzdHlsZS0+eXRoaWNrbmVzcykgLyAyLAotICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPndpZHRoIC0gMiAqIChob3Jpem9udGFsX3BhZGRpbmcgKyBzdHlsZS0+eHRo
aWNrbmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yX2hlaWdodCk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgcGFpbnRfaGVpZ2h0ID0gc3R5bGUtPnl0aGlja25lc3M7Ci0gICAg
ICAgIGlmIChwYWludF9oZWlnaHQgPiByZWN0LT5oZWlnaHQpCi0gICAgICAgICAgICBwYWludF9o
ZWlnaHQgPSByZWN0LT5oZWlnaHQ7Ci0KLSAgICAgICAgZ3RrX3BhaW50X2hsaW5lKHN0eWxlLCBk
cmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXBy
ZWN0LCBnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAibWVudWl0ZW0iLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCArIGhvcml6b250
YWxfcGFkZGluZyArIHN0eWxlLT54dGhpY2tuZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAg
cmVjdC0+eCArIHJlY3QtPndpZHRoIC0gaG9yaXpvbnRhbF9wYWRkaW5nIC0gc3R5bGUtPnh0aGlj
a25lc3MgLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eSArIChyZWN0LT5oZWln
aHQgLSBzdHlsZS0+eXRoaWNrbmVzcykgLyAyKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gTU9aX0dU
S19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19tZW51X2l0ZW1fcGFpbnQoR2Rr
RHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBnaW50IGZsYWdzLCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3df
dHlwZTsKLSAgICBHdGtXaWRnZXQqIGl0ZW1fd2lkZ2V0OwotCi0gICAgaWYgKHN0YXRlLT5pbkhv
dmVyICYmICFzdGF0ZS0+ZGlzYWJsZWQpIHsKLSAgICAgICAgaWYgKGZsYWdzICYgTU9aX1RPUExF
VkVMX01FTlVfSVRFTSkgewotICAgICAgICAgICAgZW5zdXJlX21lbnVfYmFyX2l0ZW1fd2lkZ2V0
KCk7Ci0gICAgICAgICAgICBpdGVtX3dpZGdldCA9IGdQYXJ0cy0+bWVudUJhckl0ZW1XaWRnZXQ7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbnN1cmVfbWVudV9pdGVtX3dpZGdldCgp
OwotICAgICAgICAgICAgaXRlbV93aWRnZXQgPSBnUGFydHMtPm1lbnVJdGVtV2lkZ2V0OwotICAg
ICAgICB9Ci0gICAgICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihpdGVtX3dpZGdldCwgZGly
ZWN0aW9uKTsKLSAgICAgICAgCi0gICAgICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUo
aXRlbV93aWRnZXQpOwotICAgICAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCBy
ZWN0LT55KTsKLQotICAgICAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChpdGVtX3dpZGdldCwgInNl
bGVjdGVkLXNoYWRvdy10eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNoYWRv
d190eXBlLCBOVUxMKTsKLQotICAgICAgICBndGtfcGFpbnRfYm94KHN0eWxlLCBkcmF3YWJsZSwg
R1RLX1NUQVRFX1BSRUxJR0hULCBzaGFkb3dfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICBj
bGlwcmVjdCwgaXRlbV93aWRnZXQsICJtZW51aXRlbSIsIHJlY3QtPngsIHJlY3QtPnksCi0gICAg
ICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVu
dV9hcnJvd19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRn
ZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1N0YXRlVHlwZSBz
dGF0ZV90eXBlID0gQ29udmVydEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3VyZV9tZW51X2l0
ZW1fd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+bWVudUl0
ZW1XaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxl
KGdQYXJ0cy0+bWVudUl0ZW1XaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwg
cmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2Fycm93KHN0eWxlLCBkcmF3YWJsZSwg
c3RhdGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgKHN0YXRlX3R5cGUgPT0gR1RLX1NUQVRF
X1BSRUxJR0hUKSA/IEdUS19TSEFET1dfSU4gOiBHVEtfU0hBRE9XX09VVCwKLSAgICAgICAgICAg
ICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+bWVudUl0ZW1XaWRnZXQsICJtZW51aXRlbSIsCi0g
ICAgICAgICAgICAgICAgICAgIChkaXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX0xUUikgPyBHVEtf
QVJST1dfUklHSFQgOiBHVEtfQVJST1dfTEVGVCwKLSAgICAgICAgICAgICAgICAgICAgVFJVRSwg
cmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19jaGVja19tZW51
X2l0ZW1fcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtX
aWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh
biBjaGVja2VkLCBnYm9vbGVhbiBpc3JhZGlvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRl
X3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAg
ICBHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlID0gKGNoZWNrZWQpP0dUS19TSEFET1dfSU46R1RL
X1NIQURPV19PVVQ7Ci0gICAgZ2ludCBvZmZzZXQ7Ci0gICAgZ2ludCBpbmRpY2F0b3Jfc2l6ZTsK
LSAgICBnaW50IHgsIHk7Ci0KLSAgICBtb3pfZ3RrX21lbnVfaXRlbV9wYWludChkcmF3YWJsZSwg
cmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBGQUxTRSwgZGlyZWN0aW9uKTsKLQotICAgIGVuc3VyZV9j
aGVja19tZW51X2l0ZW1fd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQ
YXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIGd0a193aWRnZXRf
c3R5bGVfZ2V0IChnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICJpbmRpY2F0b3Itc2l6ZSIsICZpbmRpY2F0b3Jfc2l6ZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGlm
IChjaGVja2VkIHx8IEdUS19DSEVDS19NRU5VX0lURU0oZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lk
Z2V0KS0+YWx3YXlzX3Nob3dfdG9nZ2xlKSB7Ci0jZWxzZQotICAgIGlmIChjaGVja2VkIHx8IEZB
TFNFKSB7Ci0jZW5kaWYKLSAgICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRz
LT5jaGVja01lbnVJdGVtV2lkZ2V0KTsKLQotICAgICAgb2Zmc2V0ID0gZ3RrX2NvbnRhaW5lcl9n
ZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0
KSkgKyBzdHlsZS0+eHRoaWNrbmVzcyArIDI7Ci0KLSAgICAgIC8qIHdoaWxlIG5vcm1hbGx5IHRo
aXMgIjMiIHdvdWxkIGJlIHRoZSBob3Jpem9udGFsLXBhZGRpbmcgc3R5bGUgdmFsdWUsIHBhc3Np
bmcgaXQgdG8gR2Vja28KLSAgICAgICAgIGFzIHRoZSB2YWx1ZSBvZiBtZW51aXRlbSBwYWRkaW5n
IGNhdXNlcyBwcm9ibGVtcyB3aXRoIGRyb3Bkb3ducyAoYnVnIDQwNjEyOSksIHNvIGluIHRoZSBt
ZW51LmNzcwotICAgICAgICAgZmlsZSB0aGlzIGlzIGhhcmRjb2RlZCBhcyAzcHguIFllcyBpdCBz
dWNrcywgYnV0IHdlIGRvbid0IHJlYWxseSBoYXZlIGEgY2hvaWNlLiAqLwotICAgICAgeCA9IChk
aXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX1JUTCkgPwotICAgICAgICAgICAgcmVjdC0+d2lkdGgg
LSBpbmRpY2F0b3Jfc2l6ZSAtIG9mZnNldCAtIDM6IHJlY3QtPnggKyBvZmZzZXQgKyAzOwotICAg
ICAgeSA9IHJlY3QtPnkgKyAocmVjdC0+aGVpZ2h0IC0gaW5kaWNhdG9yX3NpemUpIC8gMjsKLQot
ICAgICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgeCwgeSk7Ci0gICAgICBndGtfY2hlY2tfbWVu
dV9pdGVtX3NldF9hY3RpdmUoR1RLX0NIRUNLX01FTlVfSVRFTShnUGFydHMtPmNoZWNrTWVudUl0
ZW1XaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQp
OwotCi0gICAgICBpZiAoaXNyYWRpbykgewotICAgICAgICBndGtfcGFpbnRfb3B0aW9uKHN0eWxl
LCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgc2hhZG93X3R5cGUsIGNsaXByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgIm9wdGlvbiIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgaW5kaWNhdG9yX3NpemUsIGluZGljYXRvcl9z
aXplKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGd0a19wYWludF9jaGVjayhzdHlsZSwgZHJh
d2FibGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgImNoZWNrIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHgsIHksIGluZGljYXRvcl9zaXplLCBpbmRpY2F0b3Jfc2l6ZSk7Ci0g
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGlj
IGdpbnQKLW1vel9ndGtfd2luZG93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVj
dGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVj
dCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwot
Ci0gICAgZW5zdXJlX3dpbmRvd193aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rp
b24oZ1BhcnRzLT5wcm90b1dpbmRvdywgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0gZ3RrX3dp
ZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5wcm90b1dpbmRvdyk7Ci0KLSAgICBUU09mZnNldFN0eWxl
R0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfc3R5bGVfYXBwbHlfZGVmYXVs
dF9iYWNrZ3JvdW5kKHN0eWxlLCBkcmF3YWJsZSwgVFJVRSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVjdC0+eSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQp
OwotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKIG1vel9ndGtfZ2V0X3dp
ZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCog
dG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50KiByaWdodCwgZ2ludCogYm90dG9t
LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2Jvb2xlYW4gaW5odG1sKQpAQCAtMjcwNSw1MiArMTI5Myw2IEBAIG1vel9ndGtfZ2V0X3dpZGdl
dF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCogdG9w
LAogICAgICAgICBlbnN1cmVfZW50cnlfd2lkZ2V0KCk7CiAgICAgICAgIHcgPSBnUGFydHMtPmVu
dHJ5V2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVc6Ci0g
ICAgICAgIGVuc3VyZV90cmVlX3ZpZXdfd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPnRy
ZWVWaWV3V2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRV9IRUFE
RVJfQ0VMTDoKLSAgICAgICAgewotICAgICAgICAgICAgLyogQSBUcmVlIEhlYWRlciBpbiBHVEsg
aXMganVzdCBhIGRpZmZlcmVudCBzdHlsZWQgYnV0dG9uIAotICAgICAgICAgICAgICogSXQgbXVz
dCBiZSBwbGFjZWQgaW4gYSBUcmVlVmlldyBmb3IgZ2V0dGluZyB0aGUgY29ycmVjdCBzdHlsZQot
ICAgICAgICAgICAgICogYXNzaWduZWQuCi0gICAgICAgICAgICAgKiBUaGF0IGlzIHdoeSB0aGUg
Zm9sbG93aW5nIGNvZGUgaXMgdGhlIHNhbWUgYXMgZm9yIE1PWl9HVEtfQlVUVE9OLiAgCi0gICAg
ICAgICAgICAgKiAqLwotCi0gICAgICAgICAgICBHdGtCb3JkZXIgaW5uZXJfYm9yZGVyOwotICAg
ICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJpb3JfZm9jdXM7Ci0gICAgICAgICAgICBnaW50IGZvY3Vz
X3dpZHRoLCBmb2N1c19wYWQ7Ci0gICAgICAgICAgICBHdGtTdHlsZSogc3R5bGU7Ci0KLSAgICAg
ICAgICAgIGVuc3VyZV90cmVlX2hlYWRlcl9jZWxsX3dpZGdldCgpOwotICAgICAgICAgICAgKmxl
ZnQgPSAqdG9wID0gKnJpZ2h0ID0gKmJvdHRvbSA9IGd0a19jb250YWluZXJfZ2V0X2JvcmRlcl93
aWR0aChHVEtfQ09OVEFJTkVSKGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQpKTsKLQotICAg
ICAgICAgICAgbW96X2d0a193aWRnZXRfZ2V0X2ZvY3VzKGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxX
aWRnZXQsICZpbnRlcmlvcl9mb2N1cywgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAg
ICAgICAgIG1vel9ndGtfYnV0dG9uX2dldF9pbm5lcl9ib3JkZXIoZ1BhcnRzLT50cmVlSGVhZGVy
Q2VsbFdpZGdldCwgJmlubmVyX2JvcmRlcik7Ci0gICAgICAgICAgICAqbGVmdCArPSBmb2N1c193
aWR0aCArIGZvY3VzX3BhZCArIGlubmVyX2JvcmRlci5sZWZ0OwotICAgICAgICAgICAgKnJpZ2h0
ICs9IGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkICsgaW5uZXJfYm9yZGVyLnJpZ2h0OwotICAgICAg
ICAgICAgKnRvcCArPSBmb2N1c193aWR0aCArIGZvY3VzX3BhZCArIGlubmVyX2JvcmRlci50b3A7
Ci0gICAgICAgICAgICAqYm90dG9tICs9IGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkICsgaW5uZXJf
Ym9yZGVyLmJvdHRvbTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3R5bGUgPSBndGtfd2lk
Z2V0X2dldF9zdHlsZShnUGFydHMtPnRyZWVIZWFkZXJDZWxsV2lkZ2V0KTsKLSAgICAgICAgICAg
ICpsZWZ0ICs9IHN0eWxlLT54dGhpY2tuZXNzOwotICAgICAgICAgICAgKnJpZ2h0ICs9IHN0eWxl
LT54dGhpY2tuZXNzOwotICAgICAgICAgICAgKnRvcCArPSBzdHlsZS0+eXRoaWNrbmVzczsKLSAg
ICAgICAgICAgICpib3R0b20gKz0gc3R5bGUtPnl0aGlja25lc3M7Ci0gICAgICAgICAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotICAgICAgICB9Ci0gICAgY2FzZSBNT1pfR1RLX1RSRUVfSEVB
REVSX1NPUlRBUlJPVzoKLSAgICAgICAgZW5zdXJlX3RyZWVfaGVhZGVyX2NlbGxfd2lkZ2V0KCk7
Ci0gICAgICAgIHcgPSBnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQ7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19EUk9QRE9XTl9FTlRSWToKLSAgICAgICAgZW5zdXJl
X2NvbWJvX2JveF9lbnRyeV93aWRnZXRzKCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPmNvbWJvQm94
RW50cnlUZXh0YXJlYVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX0RS
T1BET1dOX0FSUk9XOgotICAgICAgICBlbnN1cmVfY29tYm9fYm94X2VudHJ5X3dpZGdldHMoKTsK
LSAgICAgICAgdyA9IGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdldDsKLSAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBNT1pfR1RLX0RST1BET1dOOgogICAgICAgICB7CiAgICAgICAgICAg
ICAvKiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBhcnJvdyBvbiB0aGUgZHJvcGRvd24sIHNv
IHRleHQKQEAgLTI4MDMsMjAgKzEzNDUsMTAgQEAgbW96X2d0a19nZXRfd2lkZ2V0X2JvcmRlcihH
dGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBnaW50KiBsZWZ0LCBnaW50KiB0b3AsCiAKICAgICAg
ICAgICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7CiAgICAgICAgIH0KLSAgICBjYXNlIE1PWl9H
VEtfVEFCUEFORUxTOgotICAgICAgICBlbnN1cmVfdGFiX3dpZGdldCgpOwotICAgICAgICB3ID0g
Z1BhcnRzLT50YWJXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9aX0dUS19QUk9H
UkVTU0JBUjoKICAgICAgICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwogICAgICAgICB3ID0g
Z1BhcnRzLT5wcm9ncmVzV2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtf
U1BJTkJVVFRPTl9FTlRSWToKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTl9VUDoKLSAgICBj
YXNlIE1PWl9HVEtfU1BJTkJVVFRPTl9ET1dOOgotICAgICAgICBlbnN1cmVfc3Bpbl93aWRnZXQo
KTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+c3BpbldpZGdldDsKLSAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNT1pfR1RLX1NDQUxFX0hPUklaT05UQUw6CiAgICAgICAgIGVuc3VyZV9zY2FsZV93aWRn
ZXQoKTsKICAgICAgICAgdyA9IGdQYXJ0cy0+aFNjYWxlV2lkZ2V0OwpAQCAtMjgyNSw4OSArMTM1
Nyw3IEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdl
dCwgZ2ludCogbGVmdCwgZ2ludCogdG9wLAogICAgICAgICBlbnN1cmVfc2NhbGVfd2lkZ2V0KCk7
CiAgICAgICAgIHcgPSBnUGFydHMtPnZTY2FsZVdpZGdldDsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBNT1pfR1RLX0ZSQU1FOgotICAgICAgICBlbnN1cmVfZnJhbWVfd2lkZ2V0KCk7Ci0gICAg
ICAgIHcgPSBnUGFydHMtPmZyYW1lV2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1P
Wl9HVEtfQ0hFQ0tCVVRUT05fTEFCRUw6Ci0gICAgY2FzZSBNT1pfR1RLX1JBRElPQlVUVE9OX0xB
QkVMOgotICAgICAgICB7Ci0gICAgICAgICAgICBnYm9vbGVhbiBpbnRlcmlvcl9mb2N1czsKLSAg
ICAgICAgICAgIGdpbnQgZm9jdXNfd2lkdGgsIGZvY3VzX3BhZDsKLQotICAgICAgICAgICAgLyog
SWYgdGhlIGZvY3VzIGlzIGludGVyaW9yLCB0aGVuIHRoZSBsYWJlbCBoYXMgYSBib3JkZXIgb2YK
LSAgICAgICAgICAgICAgIChmb2N1c193aWR0aCArIGZvY3VzX3BhZCkuICovCi0gICAgICAgICAg
ICBpZiAod2lkZ2V0ID09IE1PWl9HVEtfQ0hFQ0tCVVRUT05fTEFCRUwpIHsKLSAgICAgICAgICAg
ICAgICBlbnN1cmVfY2hlY2tib3hfd2lkZ2V0KCk7Ci0gICAgICAgICAgICAgICAgbW96X2d0a193
aWRnZXRfZ2V0X2ZvY3VzKGdQYXJ0cy0+Y2hlY2tib3hXaWRnZXQsICZpbnRlcmlvcl9mb2N1cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9jdXNfd2lkdGgs
ICZmb2N1c19wYWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICAgICAgICAgIG1v
el9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPnJhZGlvYnV0dG9uV2lkZ2V0LCAmaW50ZXJp
b3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvY3Vz
X3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGlu
dGVyaW9yX2ZvY3VzKQotICAgICAgICAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpi
b3R0b20gPSAoZm9jdXNfd2lkdGggKyBmb2N1c19wYWQpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20gPSAwOwotCi0gICAg
ICAgICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotICAgICAgICB9Ci0KLSAgICBjYXNlIE1P
Wl9HVEtfQ0hFQ0tCVVRUT05fQ09OVEFJTkVSOgotICAgIGNhc2UgTU9aX0dUS19SQURJT0JVVFRP
Tl9DT05UQUlORVI6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdib29sZWFuIGludGVyaW9yX2Zv
Y3VzOwotICAgICAgICAgICAgZ2ludCBmb2N1c193aWR0aCwgZm9jdXNfcGFkOwotCi0gICAgICAg
ICAgICAvKiBJZiB0aGUgZm9jdXMgaXMgX25vdF8gaW50ZXJpb3IsIHRoZW4gdGhlIGNvbnRhaW5l
ciBoYXMgYSBib3JkZXIKLSAgICAgICAgICAgICAgIG9mIChmb2N1c193aWR0aCArIGZvY3VzX3Bh
ZCkuICovCi0gICAgICAgICAgICBpZiAod2lkZ2V0ID09IE1PWl9HVEtfQ0hFQ0tCVVRUT05fQ09O
VEFJTkVSKSB7Ci0gICAgICAgICAgICAgICAgZW5zdXJlX2NoZWNrYm94X3dpZGdldCgpOwotICAg
ICAgICAgICAgICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPmNoZWNrYm94V2lk
Z2V0LCAmaW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgICAgICB3ID0g
Z1BhcnRzLT5jaGVja2JveFdpZGdldDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICAgICAgICAgIG1vel9n
dGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPnJhZGlvYnV0dG9uV2lkZ2V0LCAmaW50ZXJpb3Jf
Zm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvY3VzX3dp
ZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgICAgICB3ID0gZ1BhcnRzLT5yYWRpb2J1dHRv
bldpZGdldDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKmxlZnQgPSAqdG9wID0gKnJp
Z2h0ID0gKmJvdHRvbSA9IGd0a19jb250YWluZXJfZ2V0X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJ
TkVSKHcpKTsKLQotICAgICAgICAgICAgaWYgKCFpbnRlcmlvcl9mb2N1cykgewotICAgICAgICAg
ICAgICAgICpsZWZ0ICs9IChmb2N1c193aWR0aCArIGZvY3VzX3BhZCk7Ci0gICAgICAgICAgICAg
ICAgKnJpZ2h0ICs9IChmb2N1c193aWR0aCArIGZvY3VzX3BhZCk7Ci0gICAgICAgICAgICAgICAg
KnRvcCArPSAoZm9jdXNfd2lkdGggKyBmb2N1c19wYWQpOwotICAgICAgICAgICAgICAgICpib3R0
b20gKz0gKGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLSAgICAgICAgfQotICAgIGNhc2UgTU9aX0dU
S19NRU5VUE9QVVA6Ci0gICAgICAgIGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpOwotICAgICAg
ICB3ID0gZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TU9aX0dUS19NRU5VSVRFTToKLSAgICAgICAgZW5zdXJlX21lbnVfaXRlbV93aWRnZXQoKTsKLSAg
ICAgICAgZW5zdXJlX21lbnVfYmFyX2l0ZW1fd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMt
Pm1lbnVJdGVtV2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfQ0hFQ0tN
RU5VSVRFTToKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9NRU5VSVRFTToKLSAgICAgICAgZW5zdXJl
X2NoZWNrX21lbnVfaXRlbV93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+Y2hlY2tNZW51
SXRlbVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RBQjoKLSAgICAg
ICAgZW5zdXJlX3RhYl93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+dGFiV2lkZ2V0Owot
ICAgICAgICBicmVhazsKICAgICAvKiBUaGVzZSB3aWRnZXRzIGhhdmUgbm8gYm9yZGVycywgc2lu
Y2UgdGhleSBhcmUgbm90IGNvbnRhaW5lcnMuICovCi0gICAgY2FzZSBNT1pfR1RLX1NQTElUVEVS
X0hPUklaT05UQUw6Ci0gICAgY2FzZSBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMOgogICAgIGNh
c2UgTU9aX0dUS19DSEVDS0JVVFRPTjoKICAgICBjYXNlIE1PWl9HVEtfUkFESU9CVVRUT046CiAg
ICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9CVVRUT046CkBAIC0yOTE3LDIzICsxMzY3LDcgQEAg
bW96X2d0a19nZXRfd2lkZ2V0X2JvcmRlcihHdGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBnaW50
KiBsZWZ0LCBnaW50KiB0b3AsCiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9USFVNQl9WRVJU
SUNBTDoKICAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTDoKICAgICBjYXNl
IE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUw6Ci0gICAgY2FzZSBNT1pfR1RLX0dSSVBQRVI6
CiAgICAgY2FzZSBNT1pfR1RLX1BST0dSRVNTX0NIVU5LOgotICAgIGNhc2UgTU9aX0dUS19FWFBB
TkRFUjoKLSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVdfRVhQQU5ERVI6Ci0gICAgY2FzZSBNT1pf
R1RLX1RPT0xCQVJfU0VQQVJBVE9SOgotICAgIGNhc2UgTU9aX0dUS19NRU5VU0VQQVJBVE9SOgot
ICAgIC8qIFRoZXNlIHdpZGdldHMgaGF2ZSBubyBib3JkZXJzLiovCi0gICAgY2FzZSBNT1pfR1RL
X1NQSU5CVVRUT046Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xUSVA6Ci0gICAgY2FzZSBNT1pfR1RL
X1dJTkRPVzoKLSAgICBjYXNlIE1PWl9HVEtfUkVTSVpFUjoKLSAgICBjYXNlIE1PWl9HVEtfTUVO
VUFSUk9XOgotICAgIGNhc2UgTU9aX0dUS19UT09MQkFSQlVUVE9OX0FSUk9XOgotICAgIGNhc2Ug
TU9aX0dUS19UT09MQkFSOgotICAgIGNhc2UgTU9aX0dUS19NRU5VQkFSOgotICAgIGNhc2UgTU9a
X0dUS19UQUJfU0NST0xMQVJST1c6Ci0gICAgY2FzZSBNT1pfR1RLX0VOVFJZX0NBUkVUOgogICAg
ICAgICAqbGVmdCA9ICp0b3AgPSAqcmlnaHQgPSAqYm90dG9tID0gMDsKICAgICAgICAgcmV0dXJu
IE1PWl9HVEtfU1VDQ0VTUzsKICAgICBkZWZhdWx0OgpAQCAtMjk0OSwxMzEgKzEzODMsNiBAQCBt
b3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIGdpbnQq
IGxlZnQsIGdpbnQqIHRvcCwKIH0KIAogZ2ludAotbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5
X2J1dHRvbl9zaXplKGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCi17Ci0gICAgLyoKLSAgICAg
KiBXZSBnZXQgdGhlIHJlcXVpc2l0aW9uIG9mIHRoZSBkcm9wIGRvd24gYnV0dG9uLCB3aGljaCBp
bmNsdWRlcwotICAgICAqIGFsbCBwYWRkaW5nLCBib3JkZXIgYW5kIGZvY3VzIGxpbmUgd2lkdGhz
IHRoZSBidXR0b24gdXNlcywKLSAgICAgKiBhcyB3ZWxsIGFzIHRoZSBtaW5pbXVtIGFycm93IHNp
emUgYW5kIGl0cyBwYWRkaW5nCi0gICAgICogKi8KLSAgICBHdGtSZXF1aXNpdGlvbiByZXF1aXNp
dGlvbjsKLSAgICBlbnN1cmVfY29tYm9fYm94X2VudHJ5X3dpZGdldHMoKTsKLQotI2lmZGVmIEdU
S19BUElfVkVSU0lPTl8yCi0gICAgZ3RrX3dpZGdldF9zaXplX3JlcXVlc3QoZ1BhcnRzLT5jb21i
b0JveEVudHJ5QnV0dG9uV2lkZ2V0LCAmcmVxdWlzaXRpb24pOwotI2Vsc2UKLSAgICBndGtfc2l6
ZV9yZXF1ZXN0X2dldF9zaXplKEdUS19TSVpFX1JFUVVFU1QoZ1BhcnRzLT5jb21ib0JveEVudHJ5
QnV0dG9uV2lkZ2V0KSwgJnJlcXVpc2l0aW9uLCBOVUxMKTsKLSNlbmRpZgotCi0gICAgKndpZHRo
ID0gcmVxdWlzaXRpb24ud2lkdGg7Ci0gICAgKmhlaWdodCA9IHJlcXVpc2l0aW9uLmhlaWdodDsK
LQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0X3Rh
Yl9zY3JvbGxfYXJyb3dfc2l6ZShnaW50KiB3aWR0aCwgZ2ludCogaGVpZ2h0KQotewotICAgIGdp
bnQgYXJyb3dfc2l6ZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdl
dF9zdHlsZV9nZXQoZ1BhcnRzLT50YWJXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
InNjcm9sbC1hcnJvdy1obGVuZ3RoIiwgJmFycm93X3NpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7Ci0KLSAgICAqaGVpZ2h0ID0gKndpZHRoID0gYXJyb3dfc2l6ZTsKLQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0X2Rvd25hcnJv
d19zaXplKGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCi17Ci0gICAgR3RrUmVxdWlzaXRpb24g
cmVxdWlzaXRpb247Ci0gICAgZW5zdXJlX2J1dHRvbl9hcnJvd193aWRnZXQoKTsKLQotI2lmZGVm
IEdUS19BUElfVkVSU0lPTl8yCi0gICAgZ3RrX3dpZGdldF9zaXplX3JlcXVlc3QoZ1BhcnRzLT5i
dXR0b25BcnJvd1dpZGdldCwgJnJlcXVpc2l0aW9uKTsKLSNlbHNlCi0gICAgZ3RrX3NpemVfcmVx
dWVzdF9nZXRfc2l6ZShHVEtfU0laRV9SRVFVRVNUKGdQYXJ0cy0+YnV0dG9uQXJyb3dXaWRnZXQp
LCAmcmVxdWlzaXRpb24sIE5VTEwpOwotI2VuZGlmCi0KLSAgICAqd2lkdGggPSByZXF1aXNpdGlv
bi53aWR0aDsKLSAgICAqaGVpZ2h0ID0gcmVxdWlzaXRpb24uaGVpZ2h0OwotCi0gICAgcmV0dXJu
IE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotZ2ludAotbW96X2d0a19nZXRfdG9vbGJhcl9zZXBhcmF0
b3Jfd2lkdGgoZ2ludCogc2l6ZSkKLXsKLSAgICBnYm9vbGVhbiB3aWRlX3NlcGFyYXRvcnM7Ci0g
ICAgZ2ludCBzZXBhcmF0b3Jfd2lkdGg7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotCi0gICAgZW5z
dXJlX3Rvb2xiYXJfd2lkZ2V0KCk7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxl
KGdQYXJ0cy0+dG9vbGJhcldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFy
dHMtPnRvb2xiYXJXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNwYWNlLXNpemUi
LCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWRlLXNlcGFyYXRvcnMiLCAgJndp
ZGVfc2VwYXJhdG9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAic2VwYXJhdG9yLXdpZHRo
IiwgJnNlcGFyYXRvcl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQot
ICAgIC8qIEp1c3QgaW4gY2FzZS4uLiAqLwotICAgICpzaXplID0gTUFYKCpzaXplLCAod2lkZV9z
ZXBhcmF0b3JzID8gc2VwYXJhdG9yX3dpZHRoIDogc3R5bGUtPnh0aGlja25lc3MpKTsKLQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0X2V4cGFuZGVy
X3NpemUoZ2ludCogc2l6ZSkKLXsKLSAgICBlbnN1cmVfZXhwYW5kZXJfd2lkZ2V0KCk7Ci0gICAg
Z3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT5leHBhbmRlcldpZGdldCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAiZXhwYW5kZXItc2l6ZSIsIHNpemUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgTlVMTCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1naW50Ci1t
b3pfZ3RrX2dldF90cmVldmlld19leHBhbmRlcl9zaXplKGdpbnQqIHNpemUpCi17Ci0gICAgZW5z
dXJlX3RyZWVfdmlld193aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMt
PnRyZWVWaWV3V2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICJleHBhbmRlci1zaXpl
Iiwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0X21lbnVfc2VwYXJhdG9yX2hl
aWdodChnaW50ICpzaXplKQotewotICAgIGdib29sZWFuIHdpZGVfc2VwYXJhdG9yczsKLSAgICBn
aW50ICAgICBzZXBhcmF0b3JfaGVpZ2h0OwotICAgIEd0a1N0eWxlICpzdHlsZTsKLQotICAgIGVu
c3VyZV9tZW51X3NlcGFyYXRvcl93aWRnZXQoKTsKLQotICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0
KGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IndpZGUtc2VwYXJhdG9ycyIsICAmd2lkZV9zZXBhcmF0b3JzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAic2VwYXJhdG9yLWhlaWdodCIsICZzZXBhcmF0b3JfaGVpZ2h0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5
bGUoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KTsKLQotICAgIGlmICh3aWRlX3NlcGFyYXRv
cnMpCi0gICAgICAgICpzaXplID0gc2VwYXJhdG9yX2hlaWdodCArIHN0eWxlLT55dGhpY2tuZXNz
OwotICAgIGVsc2UKLSAgICAgICAgKnNpemUgPSBzdHlsZS0+eXRoaWNrbmVzcyAqIDI7Ci0KLSAg
ICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1naW50CiBtb3pfZ3RrX2dldF9zY2FsZXRo
dW1iX21ldHJpY3MoR3RrT3JpZW50YXRpb24gb3JpZW50LCBnaW50KiB0aHVtYl9sZW5ndGgsIGdp
bnQqIHRodW1iX2hlaWdodCkKIHsKICAgR3RrV2lkZ2V0KiB3aWRnZXQ7CkBAIC0zMTA5LDE5ICsx
NDE4LDYgQEAgbW96X2d0a19nZXRfc2Nyb2xsYmFyX21ldHJpY3MoTW96R3RrU2Nyb2xsYmFyTWV0
cmljcyAqbWV0cmljcykKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQogCi1nYm9vbGVh
bgotbW96X2d0a19pbWFnZXNfaW5fbWVudXMoKQotewotICAgIGdib29sZWFuIHJlc3VsdDsKLSAg
ICBHdGtTZXR0aW5ncyogc2V0dGluZ3M7Ci0KLSAgICBlbnN1cmVfaW1hZ2VfbWVudV9pdGVtX3dp
ZGdldCgpOwotICAgIHNldHRpbmdzID0gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3MoZ1BhcnRzLT5p
bWFnZU1lbnVJdGVtV2lkZ2V0KTsKLQotICAgIGdfb2JqZWN0X2dldChzZXR0aW5ncywgImd0ay1t
ZW51LWltYWdlcyIsICZyZXN1bHQsIE5VTEwpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KIGdp
bnQKIG1vel9ndGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRnZXQsIEdka0Ry
YXdhYmxlKiBkcmF3YWJsZSwKICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogcmVj
dCwgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKQEAgLTMxNzcsOTYgKzE0NzMsMTUgQEAgbW96X2d0
a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgR2RrRHJhd2FibGUqIGRy
YXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19zY2FsZV90aHVtYl9wYWludChkcmF3YWJs
ZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoR3RrT3JpZW50YXRpb24pIGZsYWdzLCBkaXJlY3Rpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTjoKLSAgICAgICAgcmV0dXJuIG1vel9n
dGtfc3Bpbl9wYWludChkcmF3YWJsZSwgcmVjdCwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNT1pfR1RLX1NQSU5CVVRUT05fVVA6Ci0gICAgY2FzZSBNT1pfR1RLX1NQSU5C
VVRUT05fRE9XTjoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfc3Bpbl91cGRvd25fcGFpbnQoZHJh
d2FibGUsIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3
aWRnZXQgPT0gTU9aX0dUS19TUElOQlVUVE9OX0RPV04pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBNT1pfR1RLX1NQSU5CVVRUT05fRU5UUlk6Ci0gICAgICAgIGVuc3VyZV9zcGluX3dp
ZGdldCgpOwotICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWludChkcmF3YWJsZSwgcmVj
dCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn
UGFydHMtPnNwaW5XaWRnZXQsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TU9aX0dUS19HUklQUEVSOgotICAgICAgICByZXR1cm4gbW96X2d0a19ncmlwcGVyX3BhaW50KGRy
YXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RL
X1RSRUVWSUVXOgotICAgICAgICByZXR1cm4gbW96X2d0a190cmVldmlld19wYWludChkcmF3YWJs
ZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJF
RV9IRUFERVJfQ0VMTDoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfdHJlZV9oZWFkZXJfY2VsbF9w
YWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRV9IRUFERVJfU09SVEFSUk9XOgotICAgICAgICBy
ZXR1cm4gbW96X2d0a190cmVlX2hlYWRlcl9zb3J0X2Fycm93X3BhaW50KGRyYXdhYmxlLCByZWN0
LCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoR3RrQXJyb3dUeXBlKSBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVdfRVhQQU5ERVI6Ci0gICAgICAgIHJldHVybiBtb3pf
Z3RrX3RyZWV2aWV3X2V4cGFuZGVyX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHdGtF
eHBhbmRlclN0eWxlKSBmbGFncywgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX0VYUEFOREVSOgotICAgICAgICByZXR1cm4gbW96X2d0a19leHBhbmRlcl9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoR3RrRXhwYW5kZXJTdHlsZSkgZmxhZ3MsIGRpcmVjdGlvbik7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9aX0dUS19FTlRSWToKICAgICAgICAgZW5zdXJlX2Vu
dHJ5X3dpZGdldCgpOwogICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWludChkcmF3YWJs
ZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBnUGFydHMtPmVudHJ5V2lkZ2V0LCBkaXJlY3Rpb24pOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE1PWl9HVEtfRU5UUllfQ0FSRVQ6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX2NhcmV0
X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNT1pfR1RLX0RST1BET1dOOgogICAgICAgICByZXR1cm4gbW96X2d0a19j
b21ib19ib3hfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYm9vbGVhbikgZmxhZ3MsIGRpcmVjdGlv
bik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19EUk9QRE9XTl9BUlJPVzoKLSAg
ICAgICAgcmV0dXJuIG1vel9ndGtfY29tYm9fYm94X2VudHJ5X2J1dHRvbl9wYWludChkcmF3YWJs
ZSwgcmVjdCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGUsIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1PWl9HVEtfRFJPUERPV05fRU5UUlk6Ci0gICAgICAgIGVuc3VyZV9jb21ib19i
b3hfZW50cnlfd2lkZ2V0cygpOwotICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWludChk
cmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCwgZGlyZWN0aW9u
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX0NIRUNLQlVUVE9OX0NPTlRBSU5F
UjoKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9CVVRUT05fQ09OVEFJTkVSOgotICAgICAgICByZXR1
cm4gbW96X2d0a19jb250YWluZXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRnZXQgPT0gTU9a
X0dUS19SQURJT0JVVFRPTl9DT05UQUlORVIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RL
X0NIRUNLQlVUVE9OX0xBQkVMOgotICAgIGNhc2UgTU9aX0dUS19SQURJT0JVVFRPTl9MQUJFTDoK
LSAgICAgICAgcmV0dXJuIG1vel9ndGtfdG9nZ2xlX2xhYmVsX3BhaW50KGRyYXdhYmxlLCByZWN0
LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAod2lkZ2V0ID09IE1PWl9HVEtfUkFESU9CVVRUT05fTEFCRUwpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xCQVI6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Rvb2xi
YXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVE9PTEJBUl9TRVBBUkFUT1I6Ci0gICAgICAgIHJldHVy
biBtb3pfZ3RrX3Rvb2xiYXJfc2VwYXJhdG9yX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0
aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xUSVA6Ci0gICAgICAg
IHJldHVybiBtb3pfZ3RrX3Rvb2x0aXBfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBk
aXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRlJBTUU6Ci0gICAg
ICAgIHJldHVybiBtb3pfZ3RrX2ZyYW1lX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwg
ZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1JFU0laRVI6Ci0g
ICAgICAgIHJldHVybiBtb3pfZ3RrX3Jlc2l6ZXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXBy
ZWN0LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rp
b24pOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1PWl9HVEtfUFJPR1JFU1NCQVI6CiAgICAg
ICAgIHJldHVybiBtb3pfZ3RrX3Byb2dyZXNzYmFyX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlw
cmVjdCwgZGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjc0LDU0ICsxNDg5LDYgQEAg
bW96X2d0a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgR2RrRHJhd2Fi
bGUqIGRyYXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19wcm9ncmVzc19jaHVua19wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9a
X0dUS19UQUI6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3RhYl9wYWludChkcmF3YWJsZSwgcmVj
dCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3RrVGFiRmxh
Z3MpIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtf
VEFCUEFORUxTOgotICAgICAgICByZXR1cm4gbW96X2d0a190YWJwYW5lbHNfcGFpbnQoZHJhd2Fi
bGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1PWl9HVEtfVEFCX1NDUk9MTEFSUk9XOgotICAgICAgICByZXR1cm4gbW96X2d0a190YWJfc2Ny
b2xsX2Fycm93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0Fycm93VHlwZSkgZmxh
Z3MsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19NRU5VQkFS
OgotICAgICAgICByZXR1cm4gbW96X2d0a19tZW51X2Jhcl9wYWludChkcmF3YWJsZSwgcmVjdCwg
Y2xpcHJlY3QsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19N
RU5VUE9QVVA6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX21lbnVfcG9wdXBfcGFpbnQoZHJhd2Fi
bGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1PWl9HVEtfTUVOVVNFUEFSQVRPUjoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfbWVudV9zZXBh
cmF0b3JfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE1PWl9HVEtfTUVOVUlURU06Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX21lbnVfaXRl
bV9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBmbGFncywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgTU9aX0dUS19NRU5VQVJST1c6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX21l
bnVfYXJyb3dfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBicmVh
azsKLSAgICBjYXNlIE1PWl9HVEtfVE9PTEJBUkJVVFRPTl9BUlJPVzoKLSAgICAgICAgcmV0dXJu
IG1vel9ndGtfZG93bmFycm93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUp
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfQ0hFQ0tNRU5VSVRFTToKLSAgICBj
YXNlIE1PWl9HVEtfUkFESU9NRU5VSVRFTToKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfY2hlY2tf
bWVudV9pdGVtX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2Jvb2xlYW4pIGZsYWdzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpZGdldCA9PSBN
T1pfR1RLX1JBRElPTUVOVUlURU0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RL
X1NQTElUVEVSX0hPUklaT05UQUw6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3ZwYW5lZF9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMOgotICAgICAgICByZXR1cm4gbW96X2d0a19o
cGFuZWRfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgTU9aX0dUS19XSU5ET1c6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3dp
bmRvd19wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIGRpcmVjdGlvbik7Ci0gICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGdfd2FybmluZygiVW5rbm93biB3aWRnZXQg
dHlwZTogJWQiLCB3aWRnZXQpOwogICAgIH0KQEAgLTMzNTQsMTEgKzE1MjEsNiBAQCB2b2lkIG1v
el9ndGtfZGVzdHJveV90aGVtZV9wYXJ0c193aWRnZXRzKEd0a1RoZW1lUGFydHMqIHBhcnRzKQog
ICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYXJ0cy0+dG9vbHRp
cFdpZGdldCkgewotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocGFydHMtPnRvb2x0aXBXaWRn
ZXQpOwotICAgICAgICBwYXJ0cy0+dG9vbHRpcFdpZGdldCA9IE5VTEw7Ci0gICAgfQotCiAgICAg
aWYgKHBhcnRzLT5wcm90b1dpbmRvdykgewogICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocGFy
dHMtPnByb3RvV2luZG93KTsKICAgICAgICAgcGFydHMtPnByb3RvV2luZG93ID0gTlVMTDsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL2d0a2RyYXdpbmcuaAppbmRleCBjMDBkYTk3Li5mZDNlOGYzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvZ3RrZHJhd2luZy5oCkBAIC05MSw3ICs5MSw2IEBAIHR5cGVkZWYgc3RydWN0IF9HdGtU
aGVtZVBhcnRzIHsKICAgICBHdGtXaWRnZXQqIHJhZGlvYnV0dG9uV2lkZ2V0OwogICAgIEd0a1dp
ZGdldCogaG9yaXpTY3JvbGxiYXJXaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiB2ZXJ0U2Nyb2xsYmFy
V2lkZ2V0OwotICAgIEd0a1dpZGdldCogc3BpbldpZGdldDsKICAgICBHdGtXaWRnZXQqIGhTY2Fs
ZVdpZGdldDsKICAgICBHdGtXaWRnZXQqIHZTY2FsZVdpZGdldDsKICAgICBHdGtXaWRnZXQqIGVu
dHJ5V2lkZ2V0OwpAQCAtMTAzLDI4ICsxMDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfR3RrVGhlbWVQ
YXJ0cyB7CiAgICAgR3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQ7CiAgICAg
R3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0OwogICAgIEd0a1dpZGdldCogY29t
Ym9Cb3hFbnRyeUFycm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCogaGFuZGxlQm94V2lkZ2V0Owot
ICAgIEd0a1dpZGdldCogdG9vbGJhcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGZyYW1lV2lkZ2V0
OwotICAgIEd0a1dpZGdldCogc3RhdHVzYmFyV2lkZ2V0OwogICAgIEd0a1dpZGdldCogcHJvZ3Jl
c1dpZGdldDsKLSAgICBHdGtXaWRnZXQqIHRhYldpZGdldDsKLSAgICBHdGtXaWRnZXQqIHRvb2x0
aXBXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51QmFyV2lkZ2V0OwotICAgIEd0a1dpZGdldCog
bWVudUJhckl0ZW1XaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51UG9wdXBXaWRnZXQ7Ci0gICAg
R3RrV2lkZ2V0KiBtZW51SXRlbVdpZGdldDsKLSAgICBHdGtXaWRnZXQqIGltYWdlTWVudUl0ZW1X
aWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBjaGVja01lbnVJdGVtV2lkZ2V0OwotICAgIEd0a1dpZGdl
dCogdHJlZVZpZXdXaWRnZXQ7Ci0gICAgR3RrVHJlZVZpZXdDb2x1bW4qIG1pZGRsZVRyZWVWaWV3
Q29sdW1uOwotICAgIEd0a1dpZGdldCogdHJlZUhlYWRlckNlbGxXaWRnZXQ7Ci0gICAgR3RrV2lk
Z2V0KiB0cmVlSGVhZGVyU29ydEFycm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCogZXhwYW5kZXJX
aWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiB0b29sYmFyU2VwYXJhdG9yV2lkZ2V0OwotICAgIEd0a1dp
ZGdldCogbWVudVNlcGFyYXRvcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGhwYW5lZFdpZGdldDsK
LSAgICBHdGtXaWRnZXQqIHZwYW5lZFdpZGdldDsKICAgICBHdGtXaWRnZXQqIHNjcm9sbGVkV2lu
ZG93V2lkZ2V0OwogfSBHdGtUaGVtZVBhcnRzOwogCkBAIC0xMzQsMjQgKzExMiw2IEBAIHR5cGVk
ZWYgZW51bSB7CiAgIE1PWl9HVEtfU1RFUFBFUl9WRVJUSUNBTCAgICA9IDEgPDwgMgogfSBHdGtT
Y3JvbGxiYXJCdXR0b25GbGFnczsKIAotLyoqIGZsYWdzIGZvciB0YWIgc3RhdGUgKiovCi10eXBl
ZGVmIGVudW0gewotICAvKiBmaXJzdCBlaWdodCBiaXRzIGFyZSB1c2VkIHRvIHBhc3MgYSBtYXJn
aW4gKi8KLSAgTU9aX0dUS19UQUJfTUFSR0lOX01BU0sgICAgID0gMHhGRiwKLSAgLyogYm90dG9t
IHRhYnMgKi8KLSAgTU9aX0dUS19UQUJfQk9UVE9NICAgICAgICAgID0gMSA8PCA4LAotICAvKiB0
aGUgZmlyc3QgdGFiIGluIHRoZSBncm91cCAqLwotICBNT1pfR1RLX1RBQl9GSVJTVCAgICAgICAg
ICAgPSAxIDw8IDksCi0gIC8qIHRoZSBzZWxlY3RlZCB0YWIgKi8KLSAgTU9aX0dUS19UQUJfU0VM
RUNURUQgICAgICAgID0gMSA8PCAxMAotfSBHdGtUYWJGbGFnczsKLQotLyoqIGZsYWdzIGZvciBt
ZW51aXRlbXMgKiovCi10eXBlZGVmIGVudW0gewotICAvKiBtZW51aXRlbSBpcyBwYXJ0IG9mIHRo
ZSBtZW51YmFyICovCi0gIE1PWl9UT1BMRVZFTF9NRU5VX0lURU0gICAgICA9IDEgPDwgMAotfSBH
dGtNZW51SXRlbUZsYWdzOwotCiAvKiBmdW5jdGlvbiB0eXBlIGZvciBtb3pfZ3RrX2VuYWJsZV9z
dHlsZV9wcm9wcyAqLwogdHlwZWRlZiBnaW50ICgqc3R5bGVfcHJvcF90KShHdGtTdHlsZSosIGNv
bnN0IGdjaGFyKiwgZ2ludCk7CiAKQEAgLTE5MSw4MCArMTUxLDEzIEBAIHR5cGVkZWYgZW51bSB7
CiAgIC8qIFBhaW50cyBhIEd0a1NjYWxlIHRodW1iLiAqLwogICBNT1pfR1RLX1NDQUxFX1RIVU1C
X0hPUklaT05UQUwsCiAgIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUwsCi0gIC8qIFBhaW50
cyBhIEd0a1NwaW5CdXR0b24gKi8KLSAgTU9aX0dUS19TUElOQlVUVE9OLAotICBNT1pfR1RLX1NQ
SU5CVVRUT05fVVAsCi0gIE1PWl9HVEtfU1BJTkJVVFRPTl9ET1dOLAotICBNT1pfR1RLX1NQSU5C
VVRUT05fRU5UUlksCi0gIC8qIFBhaW50cyB0aGUgZ3JpcHBlciBvZiBhIEd0a0hhbmRsZUJveC4g
Ki8KLSAgTU9aX0dUS19HUklQUEVSLAotICAvKiBQYWludHMgYSBHdGtFbnRyeS4gKi8KICAgTU9a
X0dUS19FTlRSWSwKLSAgLyogUGFpbnRzIHRoZSBuYXRpdmUgY2FyZXQgKG9yIGluIEdUSy1zcGVh
azogaW5zZXJ0aW9uIGN1cnNvcikgKi8KLSAgTU9aX0dUS19FTlRSWV9DQVJFVCwKICAgLyogUGFp
bnRzIGEgR3RrT3B0aW9uTWVudS4gKi8KICAgTU9aX0dUS19EUk9QRE9XTiwKLSAgLyogUGFpbnRz
IGEgZHJvcGRvd24gYXJyb3cgKGEgR3RrQnV0dG9uIGNvbnRhaW5pbmcgYSBkb3duIEd0a0Fycm93
KS4gKi8KLSAgTU9aX0dUS19EUk9QRE9XTl9BUlJPVywKLSAgLyogUGFpbnRzIGFuIGVudHJ5IGlu
IGFuIGVkaXRhYmxlIG9wdGlvbiBtZW51ICovCi0gIE1PWl9HVEtfRFJPUERPV05fRU5UUlksCi0g
IC8qIFBhaW50cyB0aGUgY29udGFpbmVyIHBhcnQgb2YgYSBHdGtDaGVja0J1dHRvbi4gKi8KLSAg
TU9aX0dUS19DSEVDS0JVVFRPTl9DT05UQUlORVIsCi0gIC8qIFBhaW50cyB0aGUgY29udGFpbmVy
IHBhcnQgb2YgYSBHdGtSYWRpb0J1dHRvbi4gKi8KLSAgTU9aX0dUS19SQURJT0JVVFRPTl9DT05U
QUlORVIsCi0gIC8qIFBhaW50cyB0aGUgbGFiZWwgb2YgYSBHdGtDaGVja0J1dHRvbiAoZm9jdXMg
b3V0bGluZSkgKi8KLSAgTU9aX0dUS19DSEVDS0JVVFRPTl9MQUJFTCwKLSAgLyogUGFpbnRzIHRo
ZSBsYWJlbCBvZiBhIEd0a1JhZGlvQnV0dG9uIChmb2N1cyBvdXRsaW5lKSAqLwotICBNT1pfR1RL
X1JBRElPQlVUVE9OX0xBQkVMLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQgb2YgYSBHdGtI
YW5kbGVCb3guICovCi0gIE1PWl9HVEtfVE9PTEJBUiwKLSAgLyogUGFpbnRzIGEgdG9vbGJhciBz
ZXBhcmF0b3IgKi8KLSAgTU9aX0dUS19UT09MQkFSX1NFUEFSQVRPUiwKLSAgLyogUGFpbnRzIGEg
R3RrVG9vbFRpcCAqLwotICBNT1pfR1RLX1RPT0xUSVAsCi0gIC8qIFBhaW50cyBhIEd0a0ZyYW1l
IChlLmcuIGEgc3RhdHVzIGJhciBwYW5lbCkuICovCi0gIE1PWl9HVEtfRlJBTUUsCi0gIC8qIFBh
aW50cyBhIHJlc2l6ZSBncmlwIGZvciBhIEd0a1dpbmRvdyAqLwotICBNT1pfR1RLX1JFU0laRVIs
CiAgIC8qIFBhaW50cyBhIEd0a1Byb2dyZXNzQmFyLiAqLwogICBNT1pfR1RLX1BST0dSRVNTQkFS
LAogICAvKiBQYWludHMgYSBwcm9ncmVzcyBjaHVuayBvZiBhIEd0a1Byb2dyZXNzQmFyLiAqLwot
ICBNT1pfR1RLX1BST0dSRVNTX0NIVU5LLAotICAvKiBQYWludHMgYSB0YWIgb2YgYSBHdGtOb3Rl
Ym9vay4gZmxhZ3MgaXMgYSBHdGtUYWJGbGFncywgZGVmaW5lZCBhYm92ZS4gKi8KLSAgTU9aX0dU
S19UQUIsCi0gIC8qIFBhaW50cyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9mIGEgR3RrTm90
ZWJvb2suICovCi0gIE1PWl9HVEtfVEFCUEFORUxTLAotICAvKiBQYWludHMgYSBHdGtBcnJvdyBm
b3IgYSBHdGtOb3RlYm9vay4gZmxhZ3MgaXMgYSBHdGtBcnJvd1R5cGUuICovCi0gIE1PWl9HVEtf
VEFCX1NDUk9MTEFSUk9XLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQgYW5kIGJvcmRlciBv
ZiBhIEd0a1RyZWVWaWV3ICovCi0gIE1PWl9HVEtfVFJFRVZJRVcsCi0gIC8qIFBhaW50cyB0cmVl
aGVhZGVyIGNlbGxzICovCi0gIE1PWl9HVEtfVFJFRV9IRUFERVJfQ0VMTCwKLSAgLyogUGFpbnRz
IHNvcnQgYXJyb3dzIGluIHRyZWVoZWFkZXIgY2VsbHMgKi8KLSAgTU9aX0dUS19UUkVFX0hFQURF
Ul9TT1JUQVJST1csCi0gIC8qIFBhaW50cyBhbiBleHBhbmRlciBmb3IgYSBHdGtUcmVlVmlldyAq
LwotICBNT1pfR1RLX1RSRUVWSUVXX0VYUEFOREVSLAotICAvKiBQYWludHMgYSBHdGtFeHBhbmRl
ciAqLwotICBNT1pfR1RLX0VYUEFOREVSLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQgb2Yg
dGhlIG1lbnUgYmFyLiAqLwotICBNT1pfR1RLX01FTlVCQVIsCi0gIC8qIFBhaW50cyB0aGUgYmFj
a2dyb3VuZCBvZiBtZW51cywgY29udGV4dCBtZW51cy4gKi8KLSAgTU9aX0dUS19NRU5VUE9QVVAs
Ci0gIC8qIFBhaW50cyB0aGUgYXJyb3cgb2YgbWVudWl0ZW1zIHRoYXQgY29udGFpbiBzdWJtZW51
cyAqLwotICBNT1pfR1RLX01FTlVBUlJPVywKLSAgLyogUGFpbnRzIGFuIGFycm93IHRoYXQgcG9p
bnRzIGRvd24gKi8KLSAgTU9aX0dUS19UT09MQkFSQlVUVE9OX0FSUk9XLAotICAvKiBQYWludHMg
aXRlbXMgb2YgbWVudWJhciBhbmQgcG9wdXBzLiAqLwotICBNT1pfR1RLX01FTlVJVEVNLAotICBN
T1pfR1RLX0NIRUNLTUVOVUlURU0sCi0gIE1PWl9HVEtfUkFESU9NRU5VSVRFTSwKLSAgTU9aX0dU
S19NRU5VU0VQQVJBVE9SLAotICAvKiBQYWludHMgYSBHdGtWUGFuZWQgc2VwYXJhdG9yICovCi0g
IE1PWl9HVEtfU1BMSVRURVJfSE9SSVpPTlRBTCwKLSAgLyogUGFpbnRzIGEgR3RrSFBhbmVkIHNl
cGFyYXRvciAqLwotICBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMLAotICAvKiBQYWludHMgdGhl
IGJhY2tncm91bmQgb2YgYSB3aW5kb3csIGRpYWxvZyBvciBwYWdlLiAqLwotICBNT1pfR1RLX1dJ
TkRPVworICBNT1pfR1RLX1BST0dSRVNTX0NIVU5LCiB9IEd0a1RoZW1lV2lkZ2V0VHlwZTsKIAog
LyoqKiBHZW5lcmFsIGxpYnJhcnkgZnVuY3Rpb25zICoqKi8KQEAgLTM2MiwxNiArMjU1LDYgQEAg
bW96X2d0a19jaGVja2JveF9nZXRfbWV0cmljcyhnaW50KiBpbmRpY2F0b3Jfc2l6ZSwgZ2ludCog
aW5kaWNhdG9yX3NwYWNpbmcpOwogZ2ludAogbW96X2d0a19yYWRpb19nZXRfbWV0cmljcyhnaW50
KiBpbmRpY2F0b3Jfc2l6ZSwgZ2ludCogaW5kaWNhdG9yX3NwYWNpbmcpOwogCi0vKioKLSAqIEdl
dCB0aGUgaW5uZXItYm9yZGVyIHZhbHVlIGZvciBhIEd0a0J1dHRvbiB3aWRnZXQgKGJ1dHRvbiBv
ciB0cmVlIGhlYWRlcikKLSAqIHdpZGdldDogICAgICAgICAgICAgW0lOXSAgdGhlIHdpZGdldCB0
byBnZXQgdGhlIGJvcmRlciB2YWx1ZSBmb3IgCi0gKiBpbm5lcl9ib3JkZXI6ICAgICAgIFtPVVRd
IHRoZSBpbm5lciBib3JkZXIKLSAqCi0gKiByZXR1cm5zOiAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0
aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQKLW1v
el9ndGtfYnV0dG9uX2dldF9pbm5lcl9ib3JkZXIoR3RrV2lkZ2V0KiB3aWRnZXQsIEd0a0JvcmRl
ciogaW5uZXJfYm9yZGVyKTsKLQogLyoqIEdldCB0aGUgZm9jdXMgbWV0cmljcyBmb3IgYSB0cmVl
aGVhZGVyY2VsbCwgYnV0dG9uLCBjaGVja2JveCwgb3IgcmFkaW8gYnV0dG9uLgogICogd2lkZ2V0
OiAgICAgICAgICAgICBbSU5dICB0aGUgd2lkZ2V0IHRvIGdldCB0aGUgZm9jdXMgbWV0cmljcyBm
b3IgICAgCiAgKiBpbnRlcmlvcl9mb2N1czogICAgIFtPVVRdIHdoZXRoZXIgdGhlIGZvY3VzIGlz
IGRyYXduIGFyb3VuZCB0aGUKQEAgLTQwNiw5MSArMjg5LDEyIEBAIGdpbnQKIG1vel9ndGtfZ2V0
X3Njcm9sbGJhcl9tZXRyaWNzKE1vekd0a1Njcm9sbGJhck1ldHJpY3MqIG1ldHJpY3MpOwogCiAv
KioKLSAqIEdldCB0aGUgZGVzaXJlZCBzaXplIG9mIGEgZHJvcGRvd24gYXJyb3cgYnV0dG9uCi0g
KiB3aWR0aDogICBbT1VUXSB0aGUgZGVzaXJlZCB3aWR0aAotICogaGVpZ2h0OiAgW09VVF0gdGhl
IGRlc2lyZWQgaGVpZ2h0Ci0gKgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUNDRVNTIGlmIHRo
ZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pf
Z3RrX2dldF9jb21ib19ib3hfZW50cnlfYnV0dG9uX3NpemUoZ2ludCogd2lkdGgsIGdpbnQqIGhl
aWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSBzY3JvbGwgYXJyb3cg
d2lkZ2V0Ci0gKiB3aWR0aDogICBbT1VUXSB0aGUgZGVzaXJlZCB3aWR0aAotICogaGVpZ2h0OiAg
W09VVF0gdGhlIGRlc2lyZWQgaGVpZ2h0Ci0gKgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUND
RVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwot
Z2ludCBtb3pfZ3RrX2dldF90YWJfc2Nyb2xsX2Fycm93X3NpemUoZ2ludCogd2lkdGgsIGdpbnQq
IGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSB0b29sYmFyIGJ1
dHRvbiBkcm9wZG93biBhcnJvdwotICogd2lkdGg6ICAgW09VVF0gdGhlIGRlc2lyZWQgd2lkdGgK
LSAqIGhlaWdodDogIFtPVVRdIHRoZSBkZXNpcmVkIGhlaWdodAotICoKLSAqIHJldHVybnM6ICAg
IE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9yIGNvZGUgb3Ro
ZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfZG93bmFycm93X3NpemUoZ2ludCogd2lkdGgs
IGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSB0b29s
YmFyIHNlcGFyYXRvcgotICogc2l6ZTogICAgW09VVF0gdGhlIGRlc2lyZWQgd2lkdGgKLSAqCi0g
KiByZXR1cm5zOiBNT1pfR1RLX1NVQ0NFU1MgaWYgdGhlcmUgd2FzIG5vIGVycm9yLCBhbiBlcnJv
ciBjb2RlIG90aGVyd2lzZQotICovCi1naW50IG1vel9ndGtfZ2V0X3Rvb2xiYXJfc2VwYXJhdG9y
X3dpZHRoKGdpbnQqIHNpemUpOwotCi0vKioKLSAqIEdldCB0aGUgc2l6ZSBvZiBhIHJlZ3VsYXIg
R1RLIGV4cGFuZGVyIHRoYXQgc2hvd3MvaGlkZXMgY29udGVudAotICogc2l6ZTogICAgW09VVF0g
dGhlIHNpemUgb2YgdGhlIEdUSyBleHBhbmRlciwgc2l6ZSA9IHdpZHRoID0gaGVpZ2h0LgotICoK
LSAqIHJldHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFu
IGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfZXhwYW5kZXJfc2l6
ZShnaW50KiBzaXplKTsKLQotLyoqCi0gKiBHZXQgdGhlIHNpemUgb2YgYSB0cmVldmlldydzIGV4
cGFuZGVyICh3ZSBjYWxsIHRoZW0gdHdpc3RpZXMpCi0gKiBzaXplOiAgICBbT1VUXSB0aGUgc2l6
ZSBvZiB0aGUgR1RLIGV4cGFuZGVyLCBzaXplID0gd2lkdGggPSBoZWlnaHQuCi0gKgotICogcmV0
dXJuczogICAgTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3Ig
Y29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF90cmVldmlld19leHBhbmRlcl9z
aXplKGdpbnQqIHNpemUpOwotCi0vKioKLSAqIEdldCB0aGUgZGVzaXJlZCBoZWlnaHQgb2YgYSBt
ZW51IHNlcGFyYXRvcgotICogc2l6ZTogICAgW09VVF0gdGhlIGRlc2lyZWQgaGVpZ2h0Ci0gKgot
ICogcmV0dXJuczogTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJy
b3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF9tZW51X3NlcGFyYXRvcl9o
ZWlnaHQoZ2ludCogc2l6ZSk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSBz
cGxpdHRlcgotICogb3JpZW50YXRpb246ICAgW0lOXSAgR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwgb3IgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMCi0gKiBzaXplOiAgICAgICAgICBbT1VUXSB3
aWR0aCBvciBoZWlnaHQgb2YgdGhlIHNwbGl0dGVyIGhhbmRsZQotICoKLSAqIHJldHVybnM6ICAg
IE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9yIGNvZGUgb3Ro
ZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19zcGxpdHRlcl9nZXRfbWV0cmljcyhnaW50IG9yaWVu
dGF0aW9uLCBnaW50KiBzaXplKTsKLQotLyoqCiAgKiBSZXRyaWV2ZSBhbiBhY3R1YWwgR1RLIHNj
cm9sbGJhciB3aWRnZXQgZm9yIHN0eWxlIGFuYWx5c2lzLiBJdCB3aWxsIG5vdAogICogYmUgbW9k
aWZpZWQuCiAgKi8KIEd0a1dpZGdldCogbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dpZGdldCh2b2lk
KTsKIAogLyoqCi0gKiBHZXQgdGhlIFlUSElDS05FU1Mgb2YgYSB0YWIgKG5vdGVib29rIGV4dGVu
c2lvbikuCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfdGFiX3RoaWNrbmVzcyh2b2lkKTsKLQotLyoq
Ci0gKiBHZXQgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0byB1c2Ug
aW1hZ2VzIGluIG1lbnVzLgotICogSWYgVFJVRSwgdXNlIGltYWdlcyBpbiBtZW51cy4KLSAqLwot
Z2Jvb2xlYW4gbW96X2d0a19pbWFnZXNfaW5fbWVudXModm9pZCk7Ci0KLS8qKgogICogUmV0cmll
dmUgYW4gYWN0dWFsIEdUSyBwcm9ncmVzcyBiYXIgd2lkZ2V0IGZvciBzdHlsZSBhbmFseXNpcy4g
SXQgd2lsbCBub3QKICAqIGJlIG1vZGlmaWVkLgogICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69896</attachid>
            <date>2010-10-06 00:27:46 -0700</date>
            <delta_ts>2010-10-06 09:15:28 -0700</delta_ts>
            <desc>Updated patch to remove unused code</desc>
            <filename>remove-unused-code.diff</filename>
            <type>text/plain</type>
            <size>85714</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzI2MWI0MS4uYzRjNDBkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxMC0xMC0wNiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHVudXNlZCBjb2RlCisKKyAgICAgICAgZ3Rr
MmRyYXdpbmcuYyB3YXMgY29waWVkIGZyb20gbW96aWxsYSBhbmQgY29udGFpbnMgYSBsb3Qgb2Yg
Y29kZSB0aGF0IGlzIG5vdAorICAgICAgICB1c2VkIGJ5IFdlYktpdC4gTW9zdCBvZiB0aGF0IHVu
dXNlZCBjb2RlIGlzIHVuY29tcGF0aWJsZSB3aXRoIGd0azMsIHNvCisgICAgICAgIHJlbW92aW5n
IGl0IHdpbGwgbWFrZSBlYXNpZXIgcG9ydGluZyB0byBndGszLgorCisgICAgICAgIFJlbW92ZSB1
bnVzZWQgY29kZSBmcm9tIGd0azJkcmF3aW5nLmMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3MDg2CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09Q
UyEpCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYzoKKyAgICAgICAgKG1v
el9ndGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRnZXRfcGFpbnQp
OgorICAgICAgICAobW96X2d0a19kZXN0cm95X3RoZW1lX3BhcnRzX3dpZGdldHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6CisKIDIwMTAtMTAtMDEgIFZpbmNlbnQgU2No
ZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBS
b2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCmluZGV4IGZkNzcwZDIuLmM1NWNk
N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwpAQCAtMTIyLDI2ICsxMjIsNiBAQCBl
bnN1cmVfYnV0dG9uX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVfaHBhbmVkX3dp
ZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPmhwYW5lZFdpZGdldCkgewotICAgICAgICBnUGFy
dHMtPmhwYW5lZFdpZGdldCA9IGd0a19ocGFuZWRfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdl
dF9wcm90b3R5cGUoZ1BhcnRzLT5ocGFuZWRXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3ZwYW5lZF93aWRnZXQoKQot
ewotICAgIGlmICghZ1BhcnRzLT52cGFuZWRXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT52cGFu
ZWRXaWRnZXQgPSBndGtfdnBhbmVkX25ldygpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90
eXBlKGdQYXJ0cy0+dnBhbmVkV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VD
Q0VTUzsKLX0KLQotc3RhdGljIGdpbnQKIGVuc3VyZV90b2dnbGVfYnV0dG9uX3dpZGdldCgpCiB7
CiAgICAgaWYgKCFnUGFydHMtPnRvZ2dsZUJ1dHRvbldpZGdldCkgewpAQCAtMjAxLDE2ICsxODEs
NiBAQCBlbnN1cmVfc2Nyb2xsYmFyX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVf
c3Bpbl93aWRnZXQoKQotewotICBpZiAoIWdQYXJ0cy0+c3BpbldpZGdldCkgewotICAgIGdQYXJ0
cy0+c3BpbldpZGdldCA9IGd0a19zcGluX2J1dHRvbl9uZXcoTlVMTCwgMSwgMCk7Ci0gICAgc2V0
dXBfd2lkZ2V0X3Byb3RvdHlwZShnUGFydHMtPnNwaW5XaWRnZXQpOwotICB9Ci0gIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50CiBlbnN1cmVfc2NhbGVfd2lkZ2V0KCkK
IHsKICAgaWYgKCFnUGFydHMtPmhTY2FsZVdpZGdldCkgewpAQCAtMzM3LDE3MSArMzA3LDYgQEAg
ZW5zdXJlX2NvbWJvX2JveF93aWRnZXRzKCkKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwog
fQogCi0vKiBXZSBuZWVkIHRvIGhhdmUgcG9pbnRlcnMgdG8gdGhlIGlubmVyIHdpZGdldHMgKGVu
dHJ5LCBidXR0b24sIGFycm93KSBvZgotICogdGhlIENvbWJvQm94RW50cnkgdG8gZ2V0IHRoZSBj
b3JyZWN0IHJlbmRlcmluZyBmcm9tIHRoZW1lIGVuZ2luZXMgd2hpY2gKLSAqIHNwZWNpYWwgY2Fz
ZXMgdGhlaXIgbG9vay4gU2luY2UgdGhlIGlubmVyIGxheW91dCBjYW4gY2hhbmdlLCB3ZSBhc2sg
R1RLCi0gKiB0byBOVUxMIG91ciBwb2ludGVycyB3aGVuIHRoZXkgYXJlIGFib3V0IHRvIGJlY29t
ZSBpbnZhbGlkIGJlY2F1c2UgdGhlCi0gKiBjb3JyZXNwb25kaW5nIHdpZGdldHMgZG9uJ3QgZXhp
c3QgYW55bW9yZS4gSXQncyB0aGUgcm9sZSBvZgotICogZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRl
cigpLgotICogTm90ZSB0aGF0IGlmIHdlIGRvbid0IGZpbmQgdGhlIGlubmVyIHdpZGdldHMgKHdo
aWNoIHNob3VsZG4ndCBoYXBwZW4pLCB3ZQotICogZmFsbGJhY2sgdG8gdXNlIGdlbmVyaWMgIm5v
bi1pbm5lciIgd2lkZ2V0cywgYW5kIHRoZXkgZG9uJ3QgbmVlZCB0aGF0IGtpbmQKLSAqIG9mIHdl
YWsgcG9pbnRlciBzaW5jZSB0aGV5IGFyZSBleHBsaWNpdCBjaGlsZHJlbiBvZiBnUGFydHMtPnBy
b3RvV2luZG93IGFuZCBhcwotICogc3VjaCBHVEsgaG9sZHMgYSBzdHJvbmcgcmVmZXJlbmNlIHRv
IHRoZW0uICovCi1zdGF0aWMgdm9pZAotbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5X2lubmVy
X3dpZGdldHMoR3RrV2lkZ2V0ICp3aWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciBjbGllbnRfZGF0YSkKLXsKLSAgICBpZiAoR1RLX0lTX1RP
R0dMRV9CVVRUT04od2lkZ2V0KSkgewotICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0
b25XaWRnZXQgPSB3aWRnZXQ7Ci0gICAgICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19P
QkpFQ1Qod2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3BvaW50
ZXIpICZnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQpOwotICAgIH0gZWxzZSBpZiAo
R1RLX0lTX0VOVFJZKHdpZGdldCkpIHsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4
dGFyZWFXaWRnZXQgPSB3aWRnZXQ7Ci0gICAgICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIo
R19PQkpFQ1Qod2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3Bv
aW50ZXIpICZnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHJldHVybjsKLSAgICBndGtfd2lkZ2V0X3JlYWxpemUod2lkZ2V0KTsKLSAgICBn
X29iamVjdF9zZXRfZGF0YShHX09CSkVDVCh3aWRnZXQpLCAidHJhbnNwYXJlbnQtYmctaGludCIs
IEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1tb3pfZ3RrX2dldF9j
b21ib19ib3hfZW50cnlfYXJyb3coR3RrV2lkZ2V0ICp3aWRnZXQsIGdwb2ludGVyIGNsaWVudF9k
YXRhKQotewotICAgIGlmIChHVEtfSVNfQVJST1cod2lkZ2V0KSkgewotICAgICAgICBnUGFydHMt
PmNvbWJvQm94RW50cnlBcnJvd1dpZGdldCA9IHdpZGdldDsKLSAgICAgICAgZ19vYmplY3RfYWRk
X3dlYWtfcG9pbnRlcihHX09CSkVDVCh3aWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChncG9pbnRlcikgJmdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0KTsK
LSAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKHdpZGdldCk7Ci0gICAgICAgIGdfb2JqZWN0X3Nl
dF9kYXRhKEdfT0JKRUNUKHdpZGdldCksICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19Q
T0lOVEVSKFRSVUUpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfY29tYm9fYm94
X2VudHJ5X3dpZGdldHMoKQotewotICAgIEd0a1dpZGdldCogYnV0dG9uQ2hpbGQ7Ci0KLSAgICBp
ZiAoZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQgJiYKLSAgICAgICAgICAgIGdQ
YXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdldCAmJgotICAgICAgICAgICAgZ1BhcnRzLT5j
b21ib0JveEVudHJ5QXJyb3dXaWRnZXQpCi0gICAgICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7
Ci0KLSAgICAvKiBDcmVhdGUgYSBDb21ib0JveEVudHJ5IGlmIG5lZWRlZCAqLwotICAgIGlmICgh
Z1BhcnRzLT5jb21ib0JveEVudHJ5V2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hF
bnRyeVdpZGdldCA9IGd0a19jb21ib19ib3hfZW50cnlfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dp
ZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5jb21ib0JveEVudHJ5V2lkZ2V0KTsKLSAgICB9Ci0KLSAg
ICAvKiBHZXQgaXRzIGlubmVyIEVudHJ5IGFuZCBCdXR0b24gKi8KLSAgICBndGtfY29udGFpbmVy
X2ZvcmFsbChHVEtfQ09OVEFJTkVSKGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeVdpZGdldCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5X2lubmVyX3dp
ZGdldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICBpZiAoIWdQYXJ0
cy0+Y29tYm9Cb3hFbnRyeVRleHRhcmVhV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3VyZV9lbnRyeV93
aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQgPSBn
UGFydHMtPmVudHJ5V2lkZ2V0OwotICAgIH0KLQotICAgIGlmIChnUGFydHMtPmNvbWJvQm94RW50
cnlCdXR0b25XaWRnZXQpIHsKLSAgICAgICAgLyogR2V0IHRoZSBBcnJvdyBpbnNpZGUgdGhlIEJ1
dHRvbiAqLwotICAgICAgICBidXR0b25DaGlsZCA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4o
Z1BhcnRzLT5jb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0KSk7Ci0gICAgICAgIGlmIChHVEtfSVNf
SEJPWChidXR0b25DaGlsZCkpIHsKLSAgICAgICAgICAgIC8qIGFwcGVhcnMtYXMtbGlzdCA9IEZB
TFNFLCBjZWxsLXZpZXcgPSBUUlVFOyB0aGUgYnV0dG9uCi0gICAgICAgICAgICAgKiBjb250YWlu
cyBhbiBoYm94LiBUaGlzIGhib3ggaXMgdGhlcmUgYmVjYXVzZSBDb21ib0JveEVudHJ5Ci0gICAg
ICAgICAgICAgKiBpbmhlcml0cyBmcm9tIENvbWJvQm94IHdoaWNoIG5lZWRzIHRvIHBsYWNlIGEg
Y2VsbCByZW5kZXJlciwKLSAgICAgICAgICAgICAqIGEgc2VwYXJhdG9yLCBhbmQgYW4gYXJyb3cg
aW4gdGhlIGJ1dHRvbiB3aGVuIGFwcGVhcnMtYXMtbGlzdAotICAgICAgICAgICAgICogaXMgRkFM
U0UuIEhlcmUgdGhlIGhib3ggc2hvdWxkIG9ubHkgY29udGFpbiBhbiBhcnJvdywgc2luY2UKLSAg
ICAgICAgICAgICAqIGEgQ29tYm9Cb3hFbnRyeSBkb2Vzbid0IG5lZWQgYWxsIHRob3NlIHdpZGdl
dHMgaW4gdGhlCi0gICAgICAgICAgICAgKiBidXR0b24uICovCi0gICAgICAgICAgICBndGtfY29u
dGFpbmVyX2ZvcmFsbChHVEtfQ09OVEFJTkVSKGJ1dHRvbkNoaWxkKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vel9ndGtfZ2V0X2NvbWJvX2JveF9lbnRyeV9hcnJvdywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICB9IGVsc2UgaWYo
R1RLX0lTX0FSUk9XKGJ1dHRvbkNoaWxkKSkgewotICAgICAgICAgICAgLyogYXBwZWFycy1hcy1s
aXN0ID0gVFJVRSwgb3IgY2VsbC12aWV3ID0gRkFMU0U7Ci0gICAgICAgICAgICAgKiB0aGUgYnV0
dG9uIG9ubHkgY29udGFpbnMgYW4gYXJyb3cgKi8KLSAgICAgICAgICAgIGdQYXJ0cy0+Y29tYm9C
b3hFbnRyeUFycm93V2lkZ2V0ID0gYnV0dG9uQ2hpbGQ7Ci0gICAgICAgICAgICBnX29iamVjdF9h
ZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKGJ1dHRvbkNoaWxkKSwgKGdwb2ludGVyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ1BhcnRzLT5jb21ib0JveEVudHJ5QXJy
b3dXaWRnZXQpOwotICAgICAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKGdQYXJ0cy0+Y29tYm9C
b3hFbnRyeUFycm93V2lkZ2V0KTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JK
RUNUKGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVSKFRSVUUp
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFNob3VsZG4ndCBiZSByZWFj
aGVkIHdpdGggY3VycmVudCBpbnRlcm5hbCBndGsgaW1wbGVtZW50YXRpb247Ci0gICAgICAgICAq
IHdlIHVzZSBhIGdlbmVyaWMgdG9nZ2xlIGJ1dHRvbiBhcyBsYXN0IHJlc29ydCBmYWxsYmFjayB0
byBhdm9pZAotICAgICAgICAgKiBjcmFzaGluZy4gKi8KLSAgICAgICAgZW5zdXJlX3RvZ2dsZV9i
dXR0b25fd2lkZ2V0KCk7Ci0gICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdl
dCA9IGdQYXJ0cy0+dG9nZ2xlQnV0dG9uV2lkZ2V0OwotICAgIH0KLQotICAgIGlmICghZ1BhcnRz
LT5jb21ib0JveEVudHJ5QXJyb3dXaWRnZXQpIHsKLSAgICAgICAgLyogU2hvdWxkbid0IGJlIHJl
YWNoZWQgd2l0aCBjdXJyZW50IGludGVybmFsIGd0ayBpbXBsZW1lbnRhdGlvbjsKLSAgICAgICAg
ICogd2UgZ1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCBhcyBsYXN0IHJlc29ydCBmYWxsYmFjayB0
byBhdm9pZAotICAgICAgICAgKiBjcmFzaGluZy4gKi8KLSAgICAgICAgZW5zdXJlX2J1dHRvbl9h
cnJvd193aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5QXJyb3dXaWRnZXQg
PSBnUGFydHMtPmJ1dHRvbkFycm93V2lkZ2V0OwotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RL
X1NVQ0NFU1M7Ci19Ci0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9oYW5kbGVib3hfd2lkZ2V0KCkK
LXsKLSAgICBpZiAoIWdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+
aGFuZGxlQm94V2lkZ2V0ID0gZ3RrX2hhbmRsZV9ib3hfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dp
ZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5oYW5kbGVCb3hXaWRnZXQpOwotICAgIH0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3Rvb2xiYXJfd2lk
Z2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+dG9vbGJhcldpZGdldCkgewotICAgICAgICBlbnN1
cmVfaGFuZGxlYm94X3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPnRvb2xiYXJXaWRnZXQgPSBn
dGtfdG9vbGJhcl9uZXcoKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihnUGFydHMtPmhhbmRsZUJveFdpZGdldCksIGdQYXJ0cy0+dG9vbGJhcldpZGdldCk7Ci0gICAg
ICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPnRvb2xiYXJXaWRnZXQpOwotICAgICAgICBn
X29iamVjdF9zZXRfZGF0YShHX09CSkVDVChnUGFydHMtPnRvb2xiYXJXaWRnZXQpLCAidHJhbnNw
YXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgfQotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfdG9vbGJhcl9zZXBh
cmF0b3Jfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+dG9vbGJhclNlcGFyYXRvcldpZGdl
dCkgewotICAgICAgICBlbnN1cmVfdG9vbGJhcl93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT50
b29sYmFyU2VwYXJhdG9yV2lkZ2V0ID0gR1RLX1dJREdFVChndGtfc2VwYXJhdG9yX3Rvb2xfaXRl
bV9uZXcoKSk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT50b29sYmFy
U2VwYXJhdG9yV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLWVuc3VyZV90b29sdGlwX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFy
dHMtPnRvb2x0aXBXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT50b29sdGlwV2lkZ2V0ID0gZ3Rr
X3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7Ci0gICAgICAgIGd0a193aWRnZXRfcmVhbGl6
ZShnUGFydHMtPnRvb2x0aXBXaWRnZXQpOwotICAgICAgICBtb3pfZ3RrX3NldF93aWRnZXRfbmFt
ZShnUGFydHMtPnRvb2x0aXBXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3RhYl93aWRnZXQoKQotewotICAgIGlmICgh
Z1BhcnRzLT50YWJXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT50YWJXaWRnZXQgPSBndGtfbm90
ZWJvb2tfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT50YWJX
aWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCiBzdGF0aWMg
Z2ludAogZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpCiB7CkBAIC01MTMsMjAwICszMTgsNiBAQCBl
bnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCkKIH0KIAogc3RhdGljIGdpbnQKLWVuc3VyZV9zdGF0dXNi
YXJfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+c3RhdHVzYmFyV2lkZ2V0KSB7Ci0gICAg
ICBnUGFydHMtPnN0YXR1c2JhcldpZGdldCA9IGd0a19zdGF0dXNiYXJfbmV3KCk7Ci0gICAgICBz
ZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+c3RhdHVzYmFyV2lkZ2V0KTsKLSAgICB9Ci0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9mcmFt
ZV93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT5mcmFtZVdpZGdldCkgewotICAgICAgICBl
bnN1cmVfc3RhdHVzYmFyX3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPmZyYW1lV2lkZ2V0ID0g
Z3RrX2ZyYW1lX25ldyhOVUxMKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRB
SU5FUihnUGFydHMtPnN0YXR1c2JhcldpZGdldCksIGdQYXJ0cy0+ZnJhbWVXaWRnZXQpOwotICAg
ICAgICBndGtfd2lkZ2V0X3JlYWxpemUoZ1BhcnRzLT5mcmFtZVdpZGdldCk7Ci0gICAgfQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9i
YXJfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+bWVudUJhcldpZGdldCkgewotICAgICAg
ICBnUGFydHMtPm1lbnVCYXJXaWRnZXQgPSBndGtfbWVudV9iYXJfbmV3KCk7Ci0gICAgICAgIHNl
dHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5tZW51QmFyV2lkZ2V0KTsKLSAgICB9Ci0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9tZW51X2Jh
cl9pdGVtX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1lbnVCYXJJdGVtV2lkZ2V0KSB7
Ci0gICAgICAgIGVuc3VyZV9tZW51X2Jhcl93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51
QmFySXRlbVdpZGdldCA9IGd0a19tZW51X2l0ZW1fbmV3KCk7Ci0gICAgICAgIGd0a19tZW51X3No
ZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChnUGFydHMtPm1lbnVCYXJXaWRnZXQpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT5tZW51QmFySXRlbVdpZGdldCk7Ci0gICAg
ICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPm1lbnVCYXJJdGVtV2lkZ2V0KTsKLSAgICAg
ICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51QmFySXRlbVdpZGdldCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9U
T19QT0lOVEVSKFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLWVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpCi17Ci0gICAgaWYgKCFn
UGFydHMtPm1lbnVQb3B1cFdpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9iYXJfaXRlbV93
aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQgPSBndGtfbWVudV9uZXco
KTsKLSAgICAgICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShHVEtfTUVOVV9JVEVNKGdQYXJ0
cy0+bWVudUJhckl0ZW1XaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdQYXJ0cy0+bWVudVBvcHVwV2lkZ2V0KTsKLSAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKGdQ
YXJ0cy0+bWVudVBvcHVwV2lkZ2V0KTsKLSAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpF
Q1QoZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
dHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgfQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9p
dGVtX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1lbnVJdGVtV2lkZ2V0KSB7Ci0gICAg
ICAgIGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPm1lbnVJdGVt
V2lkZ2V0ID0gZ3RrX21lbnVfaXRlbV9uZXdfd2l0aF9sYWJlbCgiTSIpOwotICAgICAgICBndGtf
bWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwoZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT5tZW51SXRlbVdpZGdldCk7
Ci0gICAgICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPm1lbnVJdGVtV2lkZ2V0KTsKLSAg
ICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51SXRlbVdpZGdldCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9U
T19QT0lOVEVSKFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLWVuc3VyZV9pbWFnZV9tZW51X2l0ZW1fd2lkZ2V0KCkKLXsKLSAgICBp
ZiAoIWdQYXJ0cy0+aW1hZ2VNZW51SXRlbVdpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9w
b3B1cF93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5pbWFnZU1lbnVJdGVtV2lkZ2V0ID0gZ3Rr
X2ltYWdlX21lbnVfaXRlbV9uZXcoKTsKLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kKEdU
S19NRU5VX1NIRUxMKGdQYXJ0cy0+bWVudVBvcHVwV2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdQYXJ0cy0+aW1hZ2VNZW51SXRlbVdpZGdldCk7Ci0gICAgICAgIGd0a193
aWRnZXRfcmVhbGl6ZShnUGFydHMtPmltYWdlTWVudUl0ZW1XaWRnZXQpOwotICAgICAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChnUGFydHMtPmltYWdlTWVudUl0ZW1XaWRnZXQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9J
TlRFUihUUlVFKSk7Ci0gICAgfQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0
YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9zZXBhcmF0b3Jfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQ
YXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9wb3B1cF93
aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0ID0gZ3RrX3NlcGFy
YXRvcl9tZW51X2l0ZW1fbmV3KCk7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtf
TUVOVV9TSEVMTChnUGFydHMtPm1lbnVQb3B1cFdpZGdldCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQpOwotICAgICAgICBndGtfd2lk
Z2V0X3JlYWxpemUoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KTsKLSAgICAgICAgZ19vYmpl
Y3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRyYW5zcGFyZW50LWJnLWhpbnQiLCBHSU5UX1RPX1BPSU5U
RVIoVFJVRSkpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0
aWMgZ2ludAotZW5zdXJlX2NoZWNrX21lbnVfaXRlbV93aWRnZXQoKQotewotICAgIGlmICghZ1Bh
cnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3VyZV9tZW51X3BvcHVwX3dp
ZGdldCgpOwotICAgICAgICBnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQgPSBndGtfY2hlY2tf
bWVudV9pdGVtX25ld193aXRoX2xhYmVsKCJNIik7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2Fw
cGVuZChHVEtfTUVOVV9TSEVMTChnUGFydHMtPm1lbnVQb3B1cFdpZGdldCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQpOwotICAgICAg
ICBndGtfd2lkZ2V0X3JlYWxpemUoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KTsKLSAgICAg
ICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zcGFyZW50LWJnLWhpbnQiLCBHSU5U
X1RPX1BPSU5URVIoVFJVRSkpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwot
fQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3RyZWVfdmlld193aWRnZXQoKQotewotICAgIGlmICgh
Z1BhcnRzLT50cmVlVmlld1dpZGdldCkgewotICAgICAgICBnUGFydHMtPnRyZWVWaWV3V2lkZ2V0
ID0gZ3RrX3RyZWVfdmlld19uZXcoKTsKLSAgICAgICAgc2V0dXBfd2lkZ2V0X3Byb3RvdHlwZShn
UGFydHMtPnRyZWVWaWV3V2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VT
UzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV90cmVlX2hlYWRlcl9jZWxsX3dpZGdldCgpCi17
Ci0gICAgaWYoIWdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQpIHsKLSAgICAgICAgLyoKLSAg
ICAgICAgICogU29tZSBHVEsgZW5naW5lcyBwYWludCB0aGUgZmlyc3QgYW5kIGxhc3QgY2VsbAot
ICAgICAgICAgKiBvZiBhIFRyZWVWaWV3IGhlYWRlciB3aXRoIGEgaGlnaGxpZ2h0LgotICAgICAg
ICAgKiBTaW5jZSB3ZSBkbyBub3Qga25vdyB3aGVyZSBvdXIgd2lkZ2V0IHdpbGwgYmUgcmVsYXRp
dmUKLSAgICAgICAgICogdG8gdGhlIG90aGVyIGJ1dHRvbnMgaW4gdGhlIFRyZWVWaWV3IGhlYWRl
ciwgd2UgbXVzdAotICAgICAgICAgKiBwYWludCBpdCBhcyBhIGJ1dHRvbiB0aGF0IGlzIGJldHdl
ZW4gdHdvIG90aGVycywKLSAgICAgICAgICogdGh1cyBlbnN1cmluZyBpdCBpcyBuZWl0aGVyIHRo
ZSBmaXJzdCBvciBsYXN0IGJ1dHRvbgotICAgICAgICAgKiBpbiB0aGUgaGVhZGVyLgotICAgICAg
ICAgKiBHVEsgZG9lc24ndCBnaXZlIHVzIGEgd2F5IHRvIGRvIHRoaXMgZXhwbGljaXRseSwKLSAg
ICAgICAgICogc28gd2UgbXVzdCBwYWludCB3aXRoIGEgYnV0dG9uIHRoYXQgaXMgYmV0d2VlbiB0
d28KLSAgICAgICAgICogb3RoZXJzLgotICAgICAgICAgKi8KLQotICAgICAgICBHdGtUcmVlVmll
d0NvbHVtbiogZmlyc3RUcmVlVmlld0NvbHVtbjsKLSAgICAgICAgR3RrVHJlZVZpZXdDb2x1bW4q
IGxhc3RUcmVlVmlld0NvbHVtbjsKLQotICAgICAgICBlbnN1cmVfdHJlZV92aWV3X3dpZGdldCgp
OwotCi0gICAgICAgIC8qIENyZWF0ZSBhbmQgYXBwZW5kIG91ciB0aHJlZSBjb2x1bW5zICovCi0g
ICAgICAgIGZpcnN0VHJlZVZpZXdDb2x1bW4gPSBndGtfdHJlZV92aWV3X2NvbHVtbl9uZXcoKTsK
LSAgICAgICAgZ3RrX3RyZWVfdmlld19jb2x1bW5fc2V0X3RpdGxlKGZpcnN0VHJlZVZpZXdDb2x1
bW4sICJNIik7Ci0gICAgICAgIGd0a190cmVlX3ZpZXdfYXBwZW5kX2NvbHVtbihHVEtfVFJFRV9W
SUVXKGdQYXJ0cy0+dHJlZVZpZXdXaWRnZXQpLCBmaXJzdFRyZWVWaWV3Q29sdW1uKTsKLQotICAg
ICAgICBnUGFydHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uID0gZ3RrX3RyZWVfdmlld19jb2x1bW5f
bmV3KCk7Ci0gICAgICAgIGd0a190cmVlX3ZpZXdfY29sdW1uX3NldF90aXRsZShnUGFydHMtPm1p
ZGRsZVRyZWVWaWV3Q29sdW1uLCAiTSIpOwotICAgICAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9j
b2x1bW4oR1RLX1RSRUVfVklFVyhnUGFydHMtPnRyZWVWaWV3V2lkZ2V0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+bWlkZGxlVHJlZVZpZXdDb2x1bW4pOwot
Ci0gICAgICAgIGxhc3RUcmVlVmlld0NvbHVtbiA9IGd0a190cmVlX3ZpZXdfY29sdW1uX25ldygp
OwotICAgICAgICBndGtfdHJlZV92aWV3X2NvbHVtbl9zZXRfdGl0bGUobGFzdFRyZWVWaWV3Q29s
dW1uLCAiTSIpOwotICAgICAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9jb2x1bW4oR1RLX1RSRUVf
VklFVyhnUGFydHMtPnRyZWVWaWV3V2lkZ2V0KSwgbGFzdFRyZWVWaWV3Q29sdW1uKTsKLQotI2lm
ZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgICAgIC8qIFVzZSB0aGUgbWlkZGxlIGNvbHVtbidz
IGhlYWRlciBmb3Igb3VyIGJ1dHRvbiAqLwotICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJDZWxs
V2lkZ2V0ID0gZ1BhcnRzLT5taWRkbGVUcmVlVmlld0NvbHVtbi0+YnV0dG9uOwotICAgICAgICBn
UGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQgPSBnUGFydHMtPm1pZGRsZVRyZWVWaWV3
Q29sdW1uLT5hcnJvdzsKLSNlbHNlCi0gICAgICAgIGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRn
ZXQgPSBndGtfYnV0dG9uX25ldygpOwotICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJy
b3dXaWRnZXQgPSBndGtfYXJyb3dfbmV3KEdUS19BUlJPV19ET1dOLCBHVEtfU0hBRE9XX05PTkUp
OwotI2VuZGlmCi0gICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGdQYXJ0cy0+dHJl
ZUhlYWRlckNlbGxXaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwYXJl
bnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgICAgIGdfb2JqZWN0X3Nl
dF9kYXRhKEdfT0JKRUNUKGdQYXJ0cy0+dHJlZUhlYWRlclNvcnRBcnJvd1dpZGdldCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lO
VEVSKFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3Rh
dGljIGdpbnQKLWVuc3VyZV9leHBhbmRlcl93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT5l
eHBhbmRlcldpZGdldCkgewotICAgICAgICBnUGFydHMtPmV4cGFuZGVyV2lkZ2V0ID0gZ3RrX2V4
cGFuZGVyX25ldygiTSIpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+
ZXhwYW5kZXJXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQot
Ci1zdGF0aWMgZ2ludAogZW5zdXJlX3Njcm9sbGVkX3dpbmRvd193aWRnZXQoKQogewogICAgIGlm
ICghZ1BhcnRzLT5zY3JvbGxlZFdpbmRvd1dpZGdldCkgewpAQCAtOTEyLDE5ICs1MjMsNiBAQCBt
b3pfZ3RrX3dpZGdldF9nZXRfZm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuKiBpbnRl
cmlvcl9mb2N1cywKIH0KIAogZ2ludAotbW96X2d0a19zcGxpdHRlcl9nZXRfbWV0cmljcyhnaW50
IG9yaWVudGF0aW9uLCBnaW50KiBzaXplKQotewotICAgIGlmIChvcmllbnRhdGlvbiA9PSBHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCkgewotICAgICAgICBlbnN1cmVfaHBhbmVkX3dpZGdldCgp
OwotICAgICAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMtPmhwYW5lZFdpZGdldCwgImhh
bmRsZV9zaXplIiwgc2l6ZSwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZW5zdXJlX3Zw
YW5lZF93aWRnZXQoKTsKLSAgICAgICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT52cGFu
ZWRXaWRnZXQsICJoYW5kbGVfc2l6ZSIsIHNpemUsIE5VTEwpOwotICAgIH0KLSAgICByZXR1cm4g
TU9aX0dUS19TVUNDRVNTOwotfQotCi1naW50CiBtb3pfZ3RrX2J1dHRvbl9nZXRfaW5uZXJfYm9y
ZGVyKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtCb3JkZXIqIGlubmVyX2JvcmRlcikKIHsKICAgICBz
dGF0aWMgY29uc3QgR3RrQm9yZGVyIGRlZmF1bHRfaW5uZXJfYm9yZGVyID0geyAxLCAxLCAxLCAx
IH07CkBAIC0xMzQxLDU5ICs5MzksNiBAQCBtb3pfZ3RrX3Njcm9sbGJhcl90aHVtYl9wYWludChH
dGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LAogfQogCiBzdGF0aWMgZ2ludAotbW96X2d0a19zcGlu
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxl
KiBzdHlsZTsKLQotICAgIGVuc3VyZV9zcGluX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0
X2RpcmVjdGlvbihnUGFydHMtPnNwaW5XaWRnZXQsIGRpcmVjdGlvbik7Ci0gICAgc3R5bGUgPSBn
dGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnNwaW5XaWRnZXQpOwotCi0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHls
ZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfSU4sIE5VTEwsCi0gICAg
ICAgICAgICAgICAgICBnUGFydHMtPnNwaW5XaWRnZXQsICJzcGluYnV0dG9uIiwKLSAgICAgICAg
ICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwot
ICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3Nw
aW5fdXBkb3duX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc0Rvd24sIEd0a1dpZGdldFN0
YXRlKiBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24pCi17Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7Ci0gICAgR3RrU3RhdGVU
eXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5
cGUgc2hhZG93X3R5cGUgPSBzdGF0ZV90eXBlID09IEdUS19TVEFURV9BQ1RJVkUgPwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TSEFET1dfSU4gOiBHVEtfU0hBRE9XX09V
VDsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfc3Bpbl93aWRnZXQoKTsKLSAg
ICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+c3BpbldpZGdldCk7Ci0gICAg
Z3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+c3BpbldpZGdldCwgZGlyZWN0aW9uKTsK
LQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0
a19wYWludF9ib3goc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgTlVM
TCwgZ1BhcnRzLT5zcGluV2lkZ2V0LAotICAgICAgICAgICAgICAgICAgaXNEb3duID8gInNwaW5i
dXR0b25fZG93biIgOiAic3BpbmJ1dHRvbl91cCIsCi0gICAgICAgICAgICAgICAgICByZWN0LT54
LCByZWN0LT55LCByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIC8qIGhhcmQgY29k
ZSB0aGVzZSB2YWx1ZXMgKi8KLSAgICBhcnJvd19yZWN0LndpZHRoID0gNjsKLSAgICBhcnJvd19y
ZWN0LmhlaWdodCA9IDY7Ci0gICAgYXJyb3dfcmVjdC54ID0gcmVjdC0+eCArIChyZWN0LT53aWR0
aCAtIGFycm93X3JlY3Qud2lkdGgpIC8gMjsKLSAgICBhcnJvd19yZWN0LnkgPSByZWN0LT55ICsg
KHJlY3QtPmhlaWdodCAtIGFycm93X3JlY3QuaGVpZ2h0KSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55
ICs9IGlzRG93biA/IC0xIDogMTsKLQotICAgIGd0a19wYWludF9hcnJvdyhzdHlsZSwgZHJhd2Fi
bGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICBn
UGFydHMtPnNwaW5XaWRnZXQsICJzcGluYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgaXNE
b3duID8gR1RLX0FSUk9XX0RPV04gOiBHVEtfQVJST1dfVVAsIFRSVUUsCi0gICAgICAgICAgICAg
ICAgICAgIGFycm93X3JlY3QueCwgYXJyb3dfcmVjdC55LAotICAgICAgICAgICAgICAgICAgICBh
cnJvd19yZWN0LndpZHRoLCBhcnJvd19yZWN0LmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dU
S19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAogbW96X2d0a19zY2FsZV9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKICAgICAgICAgICAgICAgICAgICAg
R2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICBHdGtPcmllbnRhdGlvbiBmbGFncywgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24pCkBAIC0xNDcxLDc2ICsxMDE2LDYgQEAgbW96X2d0a19zY2FsZV90aHVtYl9wYWludChHZGtE
cmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKIH0KIAogc3RhdGljIGdpbnQK
LW1vel9ndGtfZ3JpcHBlcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rhbmds
ZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBH
dGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0
R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93X3R5cGU7Ci0gICAgR3Rr
U3R5bGUqIHN0eWxlOwotCi0gICAgZW5zdXJlX2hhbmRsZWJveF93aWRnZXQoKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT5oYW5kbGVCb3hXaWRnZXQsIGRpcmVjdGlvbik7
Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+aGFuZGxlQm94V2lk
Z2V0KTsKLSAgICBzaGFkb3dfdHlwZSA9IGd0a19oYW5kbGVfYm94X2dldF9zaGFkb3dfdHlwZShH
VEtfSEFORExFX0JPWChnUGFydHMtPmhhbmRsZUJveFdpZGdldCkpOwotCi0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHls
ZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAgICAg
ICAgICAgICAgIGdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0LCAiaGFuZGxlYm94X2JpbiIsIHJlY3Qt
PngsIHJlY3QtPnksCi0gICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0
KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pf
Z3RrX2hwYW5lZF9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdl
dFN0YXRlKiBzdGF0ZSkKLXsKLSAgICBHdGtTdGF0ZVR5cGUgaHBhbmVkX3N0YXRlID0gQ29udmVy
dEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3VyZV9ocGFuZWRfd2lkZ2V0KCk7Ci0gICAgZ3Rr
X3BhaW50X2hhbmRsZShndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPmhwYW5lZFdpZGdldCks
IGRyYXdhYmxlLCBocGFuZWRfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICBHVEtfU0hBRE9X
X05PTkUsIGNsaXByZWN0LCBnUGFydHMtPmhwYW5lZFdpZGdldCwgInBhbmVkIiwKLSAgICAgICAg
ICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwotCi0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdnBhbmVk
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0
YXRlKQotewotICAgIEd0a1N0YXRlVHlwZSB2cGFuZWRfc3RhdGUgPSBDb252ZXJ0R3RrU3RhdGUo
c3RhdGUpOwotCi0gICAgZW5zdXJlX3ZwYW5lZF93aWRnZXQoKTsKLSAgICBndGtfcGFpbnRfaGFu
ZGxlKGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dnBhbmVkV2lkZ2V0KSwgZHJhd2FibGUs
IHZwYW5lZF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgIEdUS19TSEFET1dfTk9ORSwgY2xp
cHJlY3QsIGdQYXJ0cy0+dnBhbmVkV2lkZ2V0LCAicGFuZWQiLAotICAgICAgICAgICAgICAgICAg
ICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKLQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NhcmV0X3BhaW50KEdk
a0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAg
ICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikK
LXsKLSAgICBHZGtSZWN0YW5nbGUgbG9jYXRpb24gPSAqcmVjdDsKLSAgICBpZiAoZGlyZWN0aW9u
ID09IEdUS19URVhUX0RJUl9SVEwpIHsKLSAgICAgICAgLyogZ3RrX2RyYXdfaW5zZXJ0aW9uX2N1
cnNvciBpZ25vcmVzIGxvY2F0aW9uLndpZHRoICovCi0gICAgICAgIGxvY2F0aW9uLnggPSByZWN0
LT54ICsgcmVjdC0+d2lkdGg7Ci0gICAgfQotCi0gICAgZW5zdXJlX2VudHJ5X3dpZGdldCgpOwot
ICAgIGd0a19kcmF3X2luc2VydGlvbl9jdXJzb3IoZ1BhcnRzLT5lbnRyeVdpZGdldCwgZHJhd2Fi
bGUsIGNsaXByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2F0aW9uLCBU
UlVFLCBkaXJlY3Rpb24sIEZBTFNFKTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19
Ci0KLXN0YXRpYyBnaW50CiBtb3pfZ3RrX2VudHJ5X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJs
ZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAogICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUq
IGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIEd0
a1dpZGdldCogd2lkZ2V0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE2NTQsMTQ0
ICsxMTI5LDYgQEAgbW96X2d0a19lbnRyeV9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdk
a1JlY3RhbmdsZSogcmVjdCwKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQogCi1zdGF0
aWMgZ2ludCAKLW1vel9ndGtfdHJlZXZpZXdfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBH
ZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSog
Y2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
R3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgZ2ludCB4dGhpY2tuZXNzLCB5dGhp
Y2tuZXNzOwotCi0gICAgR3RrU3R5bGUgKnN0eWxlLCAqdHJlZXZpZXdfc3R5bGU7Ci0gICAgR3Rr
U3RhdGVUeXBlIHN0YXRlX3R5cGU7Ci0KLSAgICBlbnN1cmVfdHJlZV92aWV3X3dpZGdldCgpOwot
ICAgIGVuc3VyZV9zY3JvbGxlZF93aW5kb3dfd2lkZ2V0KCk7Ci0KLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT50cmVlVmlld1dpZGdldCwgZGlyZWN0aW9uKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT5zY3JvbGxlZFdpbmRvd1dpZGdldCwgZGlyZWN0
aW9uKTsKLQotICAgIC8qIG9ubHkgaGFuZGxlIGRpc2FibGVkIGFuZCBub3JtYWwgc3RhdGVzLCBv
dGhlcndpc2UgdGhlIHdob2xlIGJhY2tncm91bmQKLSAgICAgKiBhcmVhIHdpbGwgYmUgcGFpbnRl
ZCBkaWZmZXJlbnRseSB3aXRoIG90aGVyIHN0YXRlcyAqLwotICAgIHN0YXRlX3R5cGUgPSBzdGF0
ZS0+ZGlzYWJsZWQgPyBHVEtfU1RBVEVfSU5TRU5TSVRJVkUgOiBHVEtfU1RBVEVfTk9STUFMOwot
Ci0gICAgLyogSW4gR1RLIHRoZSB0cmVldmlldyBzZXRzIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSB3
aW5kb3cKLSAgICAgKiB3aGljaCBjb250YWlucyB0aGUgY2VsbHMgdG8gdGhlIHRyZWV2aWV3IGJh
c2UgY29sb3IuCi0gICAgICogSWYgd2UgZG9uJ3Qgc2V0IGl0IGhlcmUgdGhlIGJhY2tncm91bmQg
Y29sb3Igd2lsbCBub3QgYmUgY29ycmVjdC4qLwotICAgIGd0a193aWRnZXRfbW9kaWZ5X2JnKGdQ
YXJ0cy0+dHJlZVZpZXdXaWRnZXQsIHN0YXRlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJmd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dHJlZVZpZXdXaWRnZXQpLT5iYXNlW3N0
YXRlX3R5cGVdKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5z
Y3JvbGxlZFdpbmRvd1dpZGdldCk7Ci0gICAgeHRoaWNrbmVzcyA9IFhUSElDS05FU1Moc3R5bGUp
OwotICAgIHl0aGlja25lc3MgPSBZVEhJQ0tORVNTKHN0eWxlKTsKLQotICAgIHRyZWV2aWV3X3N0
eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT50cmVlVmlld1dpZGdldCk7Ci0gICAg
VFNPZmZzZXRTdHlsZUdDcyh0cmVldmlld19zdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBndGtfcGFp
bnRfZmxhdF9ib3godHJlZXZpZXdfc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfU0hBRE9XX05PTkUsIGNsaXByZWN0LCBnUGFydHMtPnRyZWVW
aWV3V2lkZ2V0LCAidHJlZXZpZXciLAotICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54ICsg
eHRoaWNrbmVzcywgcmVjdC0+eSArIHl0aGlja25lc3MsCi0gICAgICAgICAgICAgICAgICAgICAg
IHJlY3QtPndpZHRoIC0gMiAqIHh0aGlja25lc3MsCi0gICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QtPmhlaWdodCAtIDIgKiB5dGhpY2tuZXNzKTsKLQotICAgIGd0a19wYWludF9zaGFkb3coc3R5
bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLAotICAgICAgICAg
ICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+c2Nyb2xsZWRXaW5kb3dXaWRnZXQsICJzY3Jv
bGxlZF93aW5kb3ciLAotICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVj
dC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7IAotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsK
LX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdHJlZV9oZWFkZXJfY2VsbF9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaXNTb3J0ZWQsIEd0a1Rl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIGd0a190cmVlX3ZpZXdfY29sdW1uX3NldF9z
b3J0X2luZGljYXRvcihnUGFydHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NvcnRlZCk7Ci0KLSAgICBtb3pfZ3Rr
X2J1dHRvbl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBHVEtfUkVMSUVG
X05PUk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJDZWxs
V2lkZ2V0LCBkaXJlY3Rpb24pOwotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0
YXRpYyBnaW50Ci1tb3pfZ3RrX3RyZWVfaGVhZGVyX3NvcnRfYXJyb3dfcGFpbnQoR2RrRHJhd2Fi
bGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsIEd0a0Fycm93VHlwZSBm
bGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHZGtSZWN0YW5nbGUgYXJyb3dfcmVjdDsKLSAgICBHdGtT
dGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gICAgR3RrU2hh
ZG93VHlwZSBzaGFkb3dfdHlwZSA9IEdUS19TSEFET1dfSU47Ci0gICAgR3RrQXJyb3dUeXBlIGFy
cm93X3R5cGUgPSBmbGFnczsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfdHJl
ZV9oZWFkZXJfY2VsbF93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1Bh
cnRzLT50cmVlSGVhZGVyU29ydEFycm93V2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgLyogaGFy
ZCBjb2RlIHRoZXNlIHZhbHVlcyAqLwotICAgIGFycm93X3JlY3Qud2lkdGggPSAxMTsKLSAgICBh
cnJvd19yZWN0LmhlaWdodCA9IDExOwotICAgIGFycm93X3JlY3QueCA9IHJlY3QtPnggKyAocmVj
dC0+d2lkdGggLSBhcnJvd19yZWN0LndpZHRoKSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55ID0gcmVj
dC0+eSArIChyZWN0LT5oZWlnaHQgLSBhcnJvd19yZWN0LmhlaWdodCkgLyAyOwotCi0gICAgc3R5
bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRn
ZXQpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIGFycm93X3JlY3QueCwgYXJyb3dfcmVj
dC55KTsKLQotICAgIGd0a19wYWludF9hcnJvdyhzdHlsZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUs
IHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT50cmVl
SGVhZGVyU29ydEFycm93V2lkZ2V0LCAiYXJyb3ciLCAgYXJyb3dfdHlwZSwgVFJVRSwKLSAgICAg
ICAgICAgICAgICAgICAgYXJyb3dfcmVjdC54LCBhcnJvd19yZWN0LnksCi0gICAgICAgICAgICAg
ICAgICAgIGFycm93X3JlY3Qud2lkdGgsIGFycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RyZWV2aWV3X2V4
cGFuZGVyX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBH
dGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0
a0V4cGFuZGVyU3R5bGUgZXhwYW5kZXJfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlICpzdHls
ZTsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZTsKLQotICAgIGVuc3VyZV90cmVlX3ZpZXdf
d2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+dHJlZVZpZXdX
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQ
YXJ0cy0+dHJlZVZpZXdXaWRnZXQpOwotCi0gICAgLyogQmVjYXVzZSB0aGUgZnJhbWUgd2UgZ2V0
IGlzIG9mIHRoZSBlbnRpcmUgdHJlZXZpZXcsIHdlIGNhbid0IGdldCB0aGUgcHJlY2lzZQotICAg
ICAqIGV2ZW50IHN0YXRlIG9mIG9uZSBleHBhbmRlciwgdGh1cyByZW5kZXJpbmcgaG92ZXIgYW5k
IGFjdGl2ZSBmZWVkYmFjayB1c2VsZXNzLiAqLwotICAgIHN0YXRlX3R5cGUgPSBzdGF0ZS0+ZGlz
YWJsZWQgPyBHVEtfU1RBVEVfSU5TRU5TSVRJVkUgOiBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50
X2V4cGFuZGVyKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgY2xpcHJlY3QsIGdQYXJ0cy0+
dHJlZVZpZXdXaWRnZXQsICJ0cmVldmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlY3Qt
PnggKyByZWN0LT53aWR0aCAvIDIsIHJlY3QtPnkgKyByZWN0LT5oZWlnaHQgLyAyLCBleHBhbmRl
cl9zdGF0ZSk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2lu
dAotbW96X2d0a19leHBhbmRlcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rh
bmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVj
dCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBHdGtFeHBh
bmRlclN0eWxlIGV4cGFuZGVyX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBHdGtUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdHlsZSAqc3R5bGU7Ci0gICAgR3RrU3Rh
dGVUeXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotCi0gICAgZW5zdXJl
X2V4cGFuZGVyX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMt
PmV4cGFuZGVyV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dl
dF9zdHlsZShnUGFydHMtPmV4cGFuZGVyV2lkZ2V0KTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Mo
c3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0a19wYWludF9leHBhbmRlcihzdHlsZSwg
ZHJhd2FibGUsIHN0YXRlX3R5cGUsIGNsaXByZWN0LCBnUGFydHMtPmV4cGFuZGVyV2lkZ2V0LCAi
ZXhwYW5kZXIiLAotICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54ICsgcmVjdC0+d2lkdGgg
LyAyLCByZWN0LT55ICsgcmVjdC0+aGVpZ2h0IC8gMiwgZXhwYW5kZXJfc3RhdGUpOwotCi0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQogc3RhdGljIGdpbnQKIG1vel9ndGtfY29tYm9f
Ym94X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3Rh
dGUqIHN0YXRlLApAQCAtMTg3OCwzMjMgKzEyMTUsNiBAQCBtb3pfZ3RrX2NvbWJvX2JveF9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKIH0KIAogc3RhdGlj
IGdpbnQKLW1vel9ndGtfZG93bmFycm93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2Rr
UmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBj
bGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsK
LSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0g
ICAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZSA9IHN0YXRlLT5hY3RpdmUgPyBHVEtfU0hBRE9X
X0lOIDogR1RLX1NIQURPV19PVVQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7Ci0KLSAg
ICBlbnN1cmVfYnV0dG9uX2Fycm93X3dpZGdldCgpOwotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9n
ZXRfc3R5bGUoZ1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCk7Ci0KLSAgICBjYWxjdWxhdGVfYXJy
b3dfcmVjdChnUGFydHMtPmJ1dHRvbkFycm93V2lkZ2V0LCByZWN0LCAmYXJyb3dfcmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfVEVYVF9ESVJfTFRSKTsKLQotICAgIFRTT2Zmc2V0
U3R5bGVHQ3Moc3R5bGUsIGFycm93X3JlY3QueCwgYXJyb3dfcmVjdC55KTsKLSAgICBndGtfcGFp
bnRfYXJyb3coc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+YnV0dG9uQXJyb3dXaWRnZXQsICJhcnJv
dyIsICBHVEtfQVJST1dfRE9XTiwgVFJVRSwKLSAgICAgICAgICAgICAgICAgICAgYXJyb3dfcmVj
dC54LCBhcnJvd19yZWN0LnksIGFycm93X3JlY3Qud2lkdGgsIGFycm93X3JlY3QuaGVpZ2h0KTsK
LQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3Rr
X2NvbWJvX2JveF9lbnRyeV9idXR0b25fcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtS
ZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Rr
UmVjdGFuZ2xlKiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2Jvb2xlYW4gaW5wdXRfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgZ2ludCB4X2Rpc3Bs
YWNlbWVudCwgeV9kaXNwbGFjZW1lbnQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3QsIHJl
YWxfYXJyb3dfcmVjdDsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtT
dGF0ZShzdGF0ZSk7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZSA9IHN0YXRlLT5hY3Rp
dmUgPyBHVEtfU0hBRE9XX0lOIDogR1RLX1NIQURPV19PVVQ7Ci0gICAgR3RrU3R5bGUqIHN0eWxl
OwotCi0gICAgZW5zdXJlX2NvbWJvX2JveF9lbnRyeV93aWRnZXRzKCk7Ci0KLSAgICBpZiAoaW5w
dXRfZm9jdXMpIHsKLSAgICAgICAgLyogU29tZSB0aGVtZXMgZHJhdyBhIGNvbXBsZW1lbnRhcnkg
Zm9jdXMgcmluZyBmb3IgdGhlIGRyb3Bkb3duIGJ1dHRvbgotICAgICAgICAgKiB3aGVuIHRoZSBk
cm9wZG93biBlbnRyeSBoYXMgZm9jdXMgKi8KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAg
ICAgICBHVEtfV0lER0VUX1NFVF9GTEFHUyhnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdp
ZGdldCwgR1RLX0hBU19GT0NVUyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBtb3pfZ3RrX2J1dHRv
bl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBHVEtfUkVMSUVGX05PUk1B
TCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25X
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGlmIChp
bnB1dF9mb2N1cykKLSAgICAgICAgR1RLX1dJREdFVF9VTlNFVF9GTEFHUyhnUGFydHMtPmNvbWJv
Qm94RW50cnlUZXh0YXJlYVdpZGdldCwgR1RLX0hBU19GT0NVUyk7Ci0jZW5kaWYKLQotICAgIGNh
bGN1bGF0ZV9idXR0b25faW5uZXJfcmVjdChnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QsICZhcnJvd19yZWN0LCBk
aXJlY3Rpb24sIEZBTFNFKTsKLSAgICBpZiAoc3RhdGVfdHlwZSA9PSBHVEtfU1RBVEVfQUNUSVZF
KSB7Ci0gICAgICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1
dHRvbldpZGdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkLWRpc3BsYWNl
bWVudC14IiwgJnhfZGlzcGxhY2VtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Y2hpbGQtZGlzcGxhY2VtZW50LXkiLCAmeV9kaXNwbGFjZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICBhcnJvd19yZWN0LnggKz0geF9kaXNwbGFjZW1l
bnQ7Ci0gICAgICAgIGFycm93X3JlY3QueSArPSB5X2Rpc3BsYWNlbWVudDsKLSAgICB9Ci0KLSAg
ICBjYWxjdWxhdGVfYXJyb3dfcmVjdChnUGFydHMtPmNvbWJvQm94RW50cnlBcnJvd1dpZGdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAmYXJyb3dfcmVjdCwgJnJlYWxfYXJyb3dfcmVjdCwg
ZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5j
b21ib0JveEVudHJ5QXJyb3dXaWRnZXQpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJl
YWxfYXJyb3dfcmVjdC54LCByZWFsX2Fycm93X3JlY3QueSk7Ci0KLSAgICBndGtfcGFpbnRfYXJy
b3coc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0LCAiYXJy
b3ciLCAgR1RLX0FSUk9XX0RPV04sIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgIHJlYWxfYXJy
b3dfcmVjdC54LCByZWFsX2Fycm93X3JlY3QueSwKLSAgICAgICAgICAgICAgICAgICAgcmVhbF9h
cnJvd19yZWN0LndpZHRoLCByZWFsX2Fycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NvbnRhaW5lcl9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc3JhZGlvLCBHdGtUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZl
cnRHdGtTdGF0ZShzdGF0ZSk7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1dpZGdldCAq
d2lkZ2V0OwotICAgIGdib29sZWFuIGludGVyaW9yX2ZvY3VzOwotICAgIGdpbnQgZm9jdXNfd2lk
dGgsIGZvY3VzX3BhZDsKLQotICAgIGlmIChpc3JhZGlvKSB7Ci0gICAgICAgIGVuc3VyZV9yYWRp
b2J1dHRvbl93aWRnZXQoKTsKLSAgICAgICAgd2lkZ2V0ID0gZ1BhcnRzLT5yYWRpb2J1dHRvbldp
ZGdldDsKLSAgICB9IGVsc2UgewotICAgICAgICBlbnN1cmVfY2hlY2tib3hfd2lkZ2V0KCk7Ci0g
ICAgICAgIHdpZGdldCA9IGdQYXJ0cy0+Y2hlY2tib3hXaWRnZXQ7Ci0gICAgfQotICAgIGd0a193
aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0
a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0gICAgbW96X2d0a193aWRnZXRfZ2V0X2ZvY3Vz
KHdpZGdldCwgJmludGVyaW9yX2ZvY3VzLCAmZm9jdXNfd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZmb2N1c19wYWQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwg
cmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICAvKiBUaGUgZGV0YWlsIGFyZ3VtZW50IGZvciB0aGUg
Z3RrX3BhaW50XyogY2FsbHMgYmVsb3cgYXJlICJjaGVja2J1dHRvbiIKLSAgICAgICBldmVuIGZv
ciByYWRpbyBidXR0b25zLCB0byBtYXRjaCB3aGF0IGd0ayBkb2VzLiAqLwotCi0gICAgLyogdGhp
cyBpcyBmb3IgZHJhd2luZyBhIHByZWxpZ2h0IGJveCAqLwotICAgIGlmIChzdGF0ZV90eXBlID09
IEdUS19TVEFURV9QUkVMSUdIVCB8fCBzdGF0ZV90eXBlID09IEdUS19TVEFURV9BQ1RJVkUpIHsK
LSAgICAgICAgZ3RrX3BhaW50X2ZsYXRfYm94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX1BS
RUxJR0hULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NIQURPV19FVENIRURfT1VU
LCBjbGlwcmVjdCwgd2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrYnV0
dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3Qt
PndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZV90eXBlICE9IEdU
S19TVEFURV9OT1JNQUwgJiYgc3RhdGVfdHlwZSAhPSBHVEtfU1RBVEVfUFJFTElHSFQpCi0gICAg
ICAgIHN0YXRlX3R5cGUgPSBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAgaWYgKHN0YXRlLT5mb2N1
c2VkICYmICFpbnRlcmlvcl9mb2N1cykgewotICAgICAgICBndGtfcGFpbnRfZm9jdXMoc3R5bGUs
IGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBjbGlwcmVjdCwgd2lkZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgImNoZWNrYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngs
IHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIH0KLQotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RvZ2dsZV9sYWJl
bF9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0
YXRlKiBzdGF0ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc3JhZGlv
LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVf
dHlwZTsKLSAgICBHdGtTdHlsZSAqc3R5bGU7Ci0gICAgR3RrV2lkZ2V0ICp3aWRnZXQ7Ci0gICAg
Z2Jvb2xlYW4gaW50ZXJpb3JfZm9jdXM7Ci0KLSAgICBpZiAoIXN0YXRlLT5mb2N1c2VkKQotICAg
ICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotCi0gICAgaWYgKGlzcmFkaW8pIHsKLSAgICAg
ICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICB3aWRnZXQgPSBnUGFydHMt
PnJhZGlvYnV0dG9uV2lkZ2V0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVuc3VyZV9jaGVja2Jv
eF93aWRnZXQoKTsKLSAgICAgICAgd2lkZ2V0ID0gZ1BhcnRzLT5jaGVja2JveFdpZGdldDsKLSAg
ICB9Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZGlyZWN0aW9uKTsKLQot
ICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KHdpZGdldCwgImludGVyaW9yLWZvY3VzIiwgJmludGVy
aW9yX2ZvY3VzLCBOVUxMKTsKLSAgICBpZiAoIWludGVyaW9yX2ZvY3VzKQotICAgICAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotCi0gICAgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShz
dGF0ZSk7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICAvKiBBbHdh
eXMgImNoZWNrYnV0dG9uIiB0byBtYXRjaCBndGtjaGVja2J1dHRvbi5jICovCi0gICAgZ3RrX3Bh
aW50X2ZvY3VzKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgY2xpcHJlY3QsIHdpZGdldCwK
LSAgICAgICAgICAgICAgICAgICAgImNoZWNrYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAg
cmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a190b29sYmFyX3Bh
aW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGly
ZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRv
d190eXBlOwotCi0gICAgZW5zdXJlX3Rvb2xiYXJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9z
ZXRfZGlyZWN0aW9uKGdQYXJ0cy0+dG9vbGJhcldpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0
eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT50b29sYmFyV2lkZ2V0KTsKLQotICAg
IFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotCi0gICAgZ3RrX3N0
eWxlX2FwcGx5X2RlZmF1bHRfYmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfTk9STUFMLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIHJlY3QtPngsIHJl
Y3QtPnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0
aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KGdQYXJ0cy0+dG9v
bGJhcldpZGdldCwgInNoYWRvdy10eXBlIiwgJnNoYWRvd190eXBlLCBOVUxMKTsKLQotICAgIGd0
a19wYWludF9ib3ggKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgc2hhZG93X3R5
cGUsCi0gICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+dG9vbGJhcldpZGdldCwg
InRvb2xiYXIiLAotICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndp
ZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQot
c3RhdGljIGdpbnQKLW1vel9ndGtfdG9vbGJhcl9zZXBhcmF0b3JfcGFpbnQoR2RrRHJhd2FibGUq
IGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHls
ZTsKLSAgICBnaW50ICAgICBzZXBhcmF0b3Jfd2lkdGg7Ci0gICAgZ2ludCAgICAgcGFpbnRfd2lk
dGg7Ci0gICAgZ2Jvb2xlYW4gd2lkZV9zZXBhcmF0b3JzOwotICAgIAotICAgIC8qIERlZmluZWQg
YXMgY29uc3RhbnRzIGluIEdUSysgMi4xMC4xNCAqLwotICAgIGNvbnN0IGRvdWJsZSBzdGFydF9m
cmFjdGlvbiA9IDAuMjsKLSAgICBjb25zdCBkb3VibGUgZW5kX2ZyYWN0aW9uID0gMC44OwotCi0g
ICAgZW5zdXJlX3Rvb2xiYXJfc2VwYXJhdG9yX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0
X2RpcmVjdGlvbihnUGFydHMtPnRvb2xiYXJTZXBhcmF0b3JXaWRnZXQsIGRpcmVjdGlvbik7Ci0K
LSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dG9vbGJhclNlcGFyYXRv
cldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMtPnRvb2xiYXJXaWRn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICZ3aWRlX3Nl
cGFyYXRvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNlcGFyYXRvci13aWR0aCIsICZz
ZXBhcmF0b3Jfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICBU
U09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLQotICAgIGlmICh3aWRl
X3NlcGFyYXRvcnMpIHsKLSAgICAgICAgaWYgKHNlcGFyYXRvcl93aWR0aCA+IHJlY3QtPndpZHRo
KQotICAgICAgICAgICAgc2VwYXJhdG9yX3dpZHRoID0gcmVjdC0+d2lkdGg7Ci0KLSAgICAgICAg
Z3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgR1RL
X1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19FVENIRURfT1VULAotICAgICAgICAgICAgICAgICAg
ICAgIGNsaXByZWN0LCBnUGFydHMtPnRvb2xiYXJXaWRnZXQsICJ2c2VwYXJhdG9yIiwKLSAgICAg
ICAgICAgICAgICAgICAgICByZWN0LT54ICsgKHJlY3QtPndpZHRoIC0gc2VwYXJhdG9yX3dpZHRo
KSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eSArIHJlY3QtPmhlaWdodCAqIHN0
YXJ0X2ZyYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcl93aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICByZWN0LT5oZWlnaHQgKiAoZW5kX2ZyYWN0aW9uIC0gc3RhcnRf
ZnJhY3Rpb24pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcGFpbnRfd2lkdGggPSBzdHlsZS0+eHRoaWNrbmVzczsKLSAgICAgICAgCi0gICAgICAgIGlm
IChwYWludF93aWR0aCA+IHJlY3QtPndpZHRoKQotICAgICAgICAgICAgcGFpbnRfd2lkdGggPSBy
ZWN0LT53aWR0aDsKLSAgICAKLSAgICAgICAgZ3RrX3BhaW50X3ZsaW5lKHN0eWxlLCBkcmF3YWJs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LCBn
UGFydHMtPnRvb2xiYXJTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAi
dG9vbGJhciIsCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVjdC0+aGVpZ2h0
ICogc3RhcnRfZnJhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVj
dC0+aGVpZ2h0ICogZW5kX2ZyYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+
eCArIChyZWN0LT53aWR0aCAtIHBhaW50X3dpZHRoKSAvIDIpOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a190b29sdGlw
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLQotICAgIGVuc3VyZV90b29sdGlw
X3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPnRvb2x0aXBX
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a19yY19nZXRfc3R5bGVfYnlfcGF0
aHMoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJndGstdG9vbHRpcHMiLCAiR3RrV2luZG93IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1RZUEVfV0lORE9XKTsKLQotICAgIHN0eWxlID0g
Z3RrX3N0eWxlX2F0dGFjaChzdHlsZSwgZ3RrX3dpZGdldF9nZXRfd2luZG93KGdQYXJ0cy0+dG9v
bHRpcFdpZGdldCkpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3Qt
PnkpOwotICAgIGd0a19wYWludF9mbGF0X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9O
T1JNQUwsIEdUS19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwg
Z1BhcnRzLT50b29sdGlwV2lkZ2V0LCAidG9vbHRpcCIsCi0gICAgICAgICAgICAgICAgICAgICAg
IHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gICAgcmV0
dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfcmVzaXplcl9w
YWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17
Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1N0YXRlVHlwZSBzdGF0ZV90eXBlID0gQ29u
dmVydEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3VyZV93aW5kb3dfd2lkZ2V0KCk7Ci0gICAg
Z3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+cHJvdG9XaW5kb3csIGRpcmVjdGlvbik7
Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+cHJvdG9XaW5kb3cp
OwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAg
ICBndGtfcGFpbnRfcmVzaXplX2dyaXAoc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBjbGlw
cmVjdCwgZ1BhcnRzLT5wcm90b1dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwgKGRpcmVjdGlvbiA9PSBHVEtfVEVYVF9ESVJfTFRSKSA/Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgIEdES19XSU5ET1dfRURHRV9TT1VUSF9FQVNUIDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0RLX1dJTkRPV19FREdFX1NPVVRIX1dFU1QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIHJl
dHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2ZyYW1lX3Bh
aW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3df
dHlwZTsKLQotICAgIGVuc3VyZV9mcmFtZV93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9k
aXJlY3Rpb24oZ1BhcnRzLT5mcmFtZVdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0g
Z3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5mcmFtZVdpZGdldCk7Ci0KLSAgICBndGtfd2lk
Z2V0X3N0eWxlX2dldChnUGFydHMtPnN0YXR1c2JhcldpZGdldCwgInNoYWRvdy10eXBlIiwgJnNo
YWRvd190eXBlLCBOVUxMKTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngs
IHJlY3QtPnkpOwotICAgIGd0a19wYWludF9zaGFkb3coc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RB
VEVfTk9STUFMLCBzaGFkb3dfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBn
UGFydHMtPmZyYW1lV2lkZ2V0LCAiZnJhbWUiLCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAg
ICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAogbW96X2d0a19wcm9ncmVzc2Jhcl9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7CkBAIC0yMjMzLDQzOCArMTI1Myw2IEBAIG1vel9ndGtfcHJvZ3Jlc3NfY2h1
bmtfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCiB9CiAK
IGdpbnQKLW1vel9ndGtfZ2V0X3RhYl90aGlja25lc3Modm9pZCkKLXsKLSAgICBHdGtTdHlsZSog
c3R5bGU7Ci0KLSAgICBlbnN1cmVfdGFiX3dpZGdldCgpOwotICAgIHN0eWxlID0gZ3RrX3dpZGdl
dF9nZXRfc3R5bGUoZ1BhcnRzLT50YWJXaWRnZXQpOwotICAgIGlmIChZVEhJQ0tORVNTKHN0eWxl
KSA8IDIpCi0gICAgICAgIHJldHVybiAyOyAvKiBzb21lIHRoZW1lcyBkb24ndCBzZXQgeXRoaWNr
bmVzcyBjb3JyZWN0bHkgKi8KLQotICAgIHJldHVybiBZVEhJQ0tORVNTKHN0eWxlKTsKLX0KLQot
c3RhdGljIGdpbnQKLW1vel9ndGtfdGFiX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2Rr
UmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVj
dCwgR3RrVGFiRmxhZ3MgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbikKLXsKLSAgICAvKiBXaGVuIHRoZSB0YWIgaXNuJ3Qgc2VsZWN0ZWQsIHdlIGp1
c3QgZHJhdyBhIG5vdGVib29rIGV4dGVuc2lvbi4KLSAgICAgKiBXaGVuIGl0IGlzIHNlbGVjdGVk
LCB3ZSBvdmVyd3JpdGUgdGhlIGFkamFjZW50IGJvcmRlciBvZiB0aGUgdGFicGFuZWwKLSAgICAg
KiB0b3VjaGluZyB0aGUgdGFiIHdpdGggYSBwaWVyY2VkIGJvcmRlciAoY2FsbGVkICJ0aGUgZ2Fw
IikgdG8gbWFrZSB0aGUKLSAgICAgKiB0YWIgYXBwZWFyIHBoeXNpY2FsbHkgYXR0YWNoZWQgdG8g
dGhlIHRhYnBhbmVsOyBzZWUgZGV0YWlscyBiZWxvdy4gKi8KLQotICAgIEd0a1N0eWxlKiBzdHls
ZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0
aW9uKGdQYXJ0cy0+dGFiV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lk
Z2V0X2dldF9zdHlsZShnUGFydHMtPnRhYldpZGdldCk7Ci0gICAgVFNPZmZzZXRTdHlsZUdDcyhz
dHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBpZiAoKGZsYWdzICYgTU9aX0dUS19UQUJf
U0VMRUNURUQpID09IDApIHsKLSAgICAgICAgLyogT25seSBkcmF3IHRoZSB0YWIgKi8KLSAgICAg
ICAgZ3RrX3BhaW50X2V4dGVuc2lvbihzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9BQ1RJVkUs
IEdUS19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBn
UGFydHMtPnRhYldpZGdldCwgInRhYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZmxhZ3MgJiBNT1pfR1RLX1RBQl9CT1RUT00pID8KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1RLX1BPU19UT1AgOiBHVEtfUE9TX0JPVFRPTSApOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8qIERyYXcgdGhlIHRhYiBhbmQgdGhlIGdhcAotICAgICAgICAg
KiBXZSB3YW50IHRoZSBnYXAgdG8gYmUgcG9zaXRpb25uZWQgZXhhY3RseSBvbiB0aGUgdGFicGFu
ZWwgdG9wCi0gICAgICAgICAqIGJvcmRlcjsgc2luY2UgdGFiYm94LmNzcyBtYXkgc2V0IGEgbmVn
YXRpdmUgbWFyZ2luIHNvIHRoYXQgdGhlIHRhYgotICAgICAgICAgKiBmcmFtZSByZWN0IGFscmVh
ZHkgb3ZlcmxhcHMgdGhlIHRhYnBhbmVsIGZyYW1lIHJlY3QsIHdlIG5lZWQgdG8gdGFrZQotICAg
ICAgICAgKiB0aGF0IGludG8gYWNjb3VudCB3aGVuIGRyYXdpbmcuIFRvIHRoYXQgZWZmZWN0LCBu
c05hdGl2ZVRoZW1lR1RLCi0gICAgICAgICAqIHBhc3NlcyB1cyB0aGlzIG5lZ2F0aXZlIG1hcmdp
biAoYm1hcmdpbiBpbiB0aGUgZ3JhcGhpYyBiZWxvdykgaW4gdGhlCi0gICAgICAgICAqIGxvd2Vz
dCBiaXRzIG9mIHxmbGFnc3wuICBXZSB1c2UgaXQgdG8gc2V0IGdhcF92b2Zmc2V0LCB0aGUgZGlz
dGFuY2UKLSAgICAgICAgICogYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBnYXAgYW5kIHRoZSBib3R0
b20gb2YgdGhlIHRhYiAocmVzcC4gdGhlCi0gICAgICAgICAqIGJvdHRvbSBvZiB0aGUgZ2FwIGFu
ZCB0aGUgdG9wIG9mIHRoZSB0YWIgd2hlbiB3ZSBkcmF3IGEgYm90dG9tIHRhYiksCi0gICAgICAg
ICAqIHdoaWxlIGVuc3VyaW5nIHRoYXQgdGhlIGdhcCBhbHdheXMgdG91Y2hlcyB0aGUgYm9yZGVy
IG9mIHRoZSB0YWIsCi0gICAgICAgICAqIGkuZS4gMCA8PSBnYXBfdm9mZnNldCA8PSBnYXBfaGVp
Z2h0LCB0byBhdm9pZCBzdXJwcmluc2luZyByZXN1bHRzCi0gICAgICAgICAqIHdpdGggYmlnIG5l
Z2F0aXZlIG9yIHBvc2l0aXZlIG1hcmdpbnMuCi0gICAgICAgICAqIEhlcmUgaXMgYSBncmFwaGlj
YWwgZXhwbGFuYXRpb24gaW4gdGhlIGNhc2Ugb2YgdG9wIHRhYnM6Ci0gICAgICAgICAqICAgICAg
ICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fXwotICAgICAgICAgKiAgICAgICAgICAg
IC8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAgICAgICAgICB8ICAg
ICAgICAgICAgVCBBIEIgICAgICAgICAgICB8Ci0gICAgICAgICAqIC0tLS0tLS0tLS18LiAuIC4g
LiAuIC4gLiAuIC4gLiAuIC4gLiAuIC58LS0tLS0gdG9wIG9mIHRhYnBhbmVsCi0gICAgICAgICAq
ICAgICAgICAgICA6ICAgIF4gICAgICAgYm1hcmdpbiAgICAgICAgICA6ICBeCi0gICAgICAgICAq
ICAgICAgICAgICA6ICAgIHwgKC1uZWdhdGl2ZSBtYXJnaW4sICAgICA6ICB8Ci0gICAgICAgICAq
ICBib3R0b20gICA6ICAgIHYgIHBhc3NlZCBpbiBmbGFncykgICAgICA6ICB8ICAgICAgIGdhcF9o
ZWlnaHQKLSAgICAgICAgICogICAgb2YgIC0+IDouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LjogIHwgICAgKHRoZSBzaXplIG9mIHRoZQotICAgICAgICAgKiB0aGUgdGFiICAgLiAgICAgICBw
YXJ0IG9mIHRoZSBnYXAgICAgICAgLiAgfCAgdGFicGFuZWwgdG9wIGJvcmRlcikKLSAgICAgICAg
ICogICAgICAgICAgIC4gICAgICBvdXRzaWRlIG9mIHRoZSB0YWIgICAgIC4gIHYKLSAgICAgICAg
ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAg
ICAgKgotICAgICAgICAgKiBUbyBkcmF3IHRoZSBnYXAsIHdlIHVzZSBndGtfcGFpbnRfYm94X2dh
cCgpLCBzZWUgY29tbWVudCBpbgotICAgICAgICAgKiBtb3pfZ3RrX3RhYnBhbmVsc19wYWludCgp
LiBUaGlzIGJveF9nYXAgaXMgbWFkZSAzICogZ2FwX2hlaWdodCB0YWxsLAotICAgICAgICAgKiB3
aGljaCBzaG91bGQgc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgb25seSB2aXNpYmxlIGJvcmRl
ciBpcyB0aGUKLSAgICAgICAgICogcGllcmNlZCBvbmUuICBJZiB0aGUgdGFiIGlzIGluIHRoZSBt
aWRkbGUsIHdlIG1ha2UgdGhlIGJveF9nYXAgYmVnaW4KLSAgICAgICAgICogYSBiaXQgdG8gdGhl
IGxlZnQgb2YgdGhlIHRhYiBhbmQgZW5kIGEgYml0IHRvIHRoZSByaWdodCwgYWRqdXN0aW5nCi0g
ICAgICAgICAqIHRoZSBnYXAgcG9zaXRpb24gc28gaXQgc3RpbGwgaXMgdW5kZXIgdGhlIHRhYiwg
YmVjYXVzZSB3ZSB3YW50IHRoZQotICAgICAgICAgKiByZW5kZXJpbmcgb2YgYSBnYXAgaW4gdGhl
IG1pZGRsZSBvZiBhIHRhYnBhbmVsLiAgVGhpcyBpcyB0aGUgcm9sZSBvZgotICAgICAgICAgKiB0
aGUgZ2ludHMgZ2FwX3tsLHJ9X29mZnNldC4gT24gdGhlIGNvbnRyYXJ5LCBpZiB0aGUgdGFiIGlz
IHRoZQotICAgICAgICAgKiBmaXJzdCwgd2UgYWxpZ24gdGhlIHN0YXJ0IGJvcmRlciBvZiB0aGUg
Ym94X2dhcCB3aXRoIHRoZSBzdGFydAotICAgICAgICAgKiBib3JkZXIgb2YgdGhlIHRhYiAobGVm
dCBpZiBMVFIsIHJpZ2h0IGlmIFJUTCksIGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAqIGFwcHJv
cHJpYXRlIG9mZnNldCB0byAwLiovCi0gICAgICAgIGdpbnQgZ2FwX2xvZmZzZXQsIGdhcF9yb2Zm
c2V0LCBnYXBfdm9mZnNldCwgZ2FwX2hlaWdodDsKLQotICAgICAgICAvKiBHZXQgaGVpZ2h0IG5l
ZWRlZCBieSB0aGUgZ2FwICovCi0gICAgICAgIGdhcF9oZWlnaHQgPSBtb3pfZ3RrX2dldF90YWJf
dGhpY2tuZXNzKCk7Ci0KLSAgICAgICAgLyogRXh0cmFjdCBnYXBfdm9mZnNldCBmcm9tIHRoZSBm
aXJzdCBiaXRzIG9mIGZsYWdzICovCi0gICAgICAgIGdhcF92b2Zmc2V0ID0gZmxhZ3MgJiBNT1pf
R1RLX1RBQl9NQVJHSU5fTUFTSzsKLSAgICAgICAgaWYgKGdhcF92b2Zmc2V0ID4gZ2FwX2hlaWdo
dCkKLSAgICAgICAgICAgIGdhcF92b2Zmc2V0ID0gZ2FwX2hlaWdodDsKLQotICAgICAgICAvKiBT
ZXQgZ2FwX3tsLHJ9X29mZnNldCB0byBhcHByb3ByaWF0ZSB2YWx1ZXMgKi8KLSAgICAgICAgZ2Fw
X2xvZmZzZXQgPSBnYXBfcm9mZnNldCA9IDIwOyAvKiBzaG91bGQgYmUgZW5vdWdoICovCi0gICAg
ICAgIGlmIChmbGFncyAmIE1PWl9HVEtfVEFCX0ZJUlNUKSB7Ci0gICAgICAgICAgICBpZiAoZGly
ZWN0aW9uID09IEdUS19URVhUX0RJUl9SVEwpCi0gICAgICAgICAgICAgICAgZ2FwX3JvZmZzZXQg
PSAwOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0ID0gMDsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChmbGFncyAmIE1PWl9HVEtfVEFCX0JPVFRPTSkgewot
ICAgICAgICAgICAgLyogRW5sYXJnZSB0aGUgY2xpcHJlY3QgdG8gaGF2ZSByb29tIGZvciB0aGUg
ZnVsbCBnYXAgaGVpZ2h0ICovCi0gICAgICAgICAgICBjbGlwcmVjdC0+aGVpZ2h0ICs9IGdhcF9o
ZWlnaHQgLSBnYXBfdm9mZnNldDsKLSAgICAgICAgICAgIGNsaXByZWN0LT55IC09IGdhcF9oZWln
aHQgLSBnYXBfdm9mZnNldDsKLQotICAgICAgICAgICAgLyogRHJhdyB0aGUgdGFiICovCi0gICAg
ICAgICAgICBndGtfcGFpbnRfZXh0ZW5zaW9uKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05P
Uk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NIQURPV19PVVQsIGNs
aXByZWN0LCBnUGFydHMtPnRhYldpZGdldCwgInRhYiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnkgKyBnYXBfdm9mZnNldCwgcmVjdC0+d2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdodCAtIGdhcF92b2Zmc2V0
LCBHVEtfUE9TX1RPUCk7Ci0KLSAgICAgICAgICAgIC8qIERyYXcgdGhlIGdhcDsgZXJhc2Ugd2l0
aCBiYWNrZ3JvdW5kIGNvbG9yIGJlZm9yZSBwYWludGluZyBpbgotICAgICAgICAgICAgICogY2Fz
ZSB0aGVtZSBkb2VzIG5vdCAqLwotICAgICAgICAgICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRf
YmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgZ2Fw
X3ZvZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtIGdhcF9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlY3QtPndpZHRoLCBnYXBfaGVpZ2h0KTsKLSAgICAgICAgICAgIGd0a19w
YWludF9ib3hfZ2FwKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURP
V19PVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgZ1BhcnRzLT50
YWJXaWRnZXQsICJub3RlYm9vayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LT54IC0gZ2FwX2xvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55
ICsgZ2FwX3ZvZmZzZXQgLSAzICogZ2FwX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPndpZHRoICsgZ2FwX2xvZmZzZXQgKyBnYXBfcm9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMgKiBnYXBfaGVpZ2h0LCBHVEtfUE9TX0JPVFRPTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0LCByZWN0LT53aWR0aCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBFbmxhcmdlIHRoZSBjbGlwcmVjdCB0byBo
YXZlIHJvb20gZm9yIHRoZSBmdWxsIGdhcCBoZWlnaHQgKi8KLSAgICAgICAgICAgIGNsaXByZWN0
LT5oZWlnaHQgKz0gZ2FwX2hlaWdodCAtIGdhcF92b2Zmc2V0OwotCi0gICAgICAgICAgICAvKiBE
cmF3IHRoZSB0YWIgKi8KLSAgICAgICAgICAgIGd0a19wYWludF9leHRlbnNpb24oc3R5bGUsIGRy
YXdhYmxlLCBHVEtfU1RBVEVfTk9STUFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEtfU0hBRE9XX09VVCwgY2xpcHJlY3QsIGdQYXJ0cy0+dGFiV2lkZ2V0LCAidGFiIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdodCAtIGdhcF92
b2Zmc2V0LCBHVEtfUE9TX0JPVFRPTSk7Ci0KLSAgICAgICAgICAgIC8qIERyYXcgdGhlIGdhcDsg
ZXJhc2Ugd2l0aCBiYWNrZ3JvdW5kIGNvbG9yIGJlZm9yZSBwYWludGluZyBpbgotICAgICAgICAg
ICAgICogY2FzZSB0aGVtZSBkb2VzIG5vdCAqLwotICAgICAgICAgICAgZ3RrX3N0eWxlX2FwcGx5
X2RlZmF1bHRfYmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXBy
ZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LT54LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LT55ICsgcmVjdC0+aGVpZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBnYXBfdm9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIGdhcF9oZWlnaHQpOwotICAgICAg
ICAgICAgZ3RrX3BhaW50X2JveF9nYXAoc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFM
LCBHVEtfU0hBRE9XX09VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0
LCBnUGFydHMtPnRhYldpZGdldCwgIm5vdGVib29rIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPnggLSBnYXBfbG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY3QtPnkgKyByZWN0LT5oZWlnaHQgLSBnYXBfdm9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoICsgZ2FwX2xvZmZzZXQgKyBnYXBfcm9mZnNldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgKiBnYXBfaGVpZ2h0LCBHVEtfUE9TX1RP
UCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0LCByZWN0LT53aWR0
aCk7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19
Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RhYnBhbmVsc19wYWludChHZGtEcmF3YWJsZSogZHJh
d2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdka1Jl
Y3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIC8q
IFdlIHVzZSBndGtfcGFpbnRfYm94X2dhcCgpIHRvIGRyYXcgdGhlIHRhYnBhbmVscyB3aWRnZXQu
IGd0a19wYWludF9ib3goKQotICAgICAqIGRyYXdzIGFuIGFsbC1wdXJwb3NlIGJveCwgd2hpY2gg
YSBsb3Qgb2YgdGhlbWVzIHJlbmRlciBkaWZmZXJlbnRseS4KLSAgICAgKiBBIHplcm8td2lkdGgg
Z2FwIGlzIHN0aWxsIHZpc2libGUgaW4gbW9zdCB0aGVtZXMsIHNvIHdlIGhpZGUgaXQgdG8gdGhl
Ci0gICAgICogbGVmdCAoMTBweCBzaG91bGQgYmUgZW5vdWdoKSAqLwotICAgIEd0a1N0eWxlKiBz
dHlsZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGly
ZWN0aW9uKGdQYXJ0cy0+dGFiV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtf
d2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRhYldpZGdldCk7Ci0KLSAgICBUU09mZnNldFN0eWxl
R0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfcGFpbnRfYm94X2dhcChzdHls
ZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfT1VULAotICAgICAgICAg
ICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPnRhYldpZGdldCwgIm5vdGVib29rIiwgcmVj
dC0+eCwgcmVjdC0+eSwKLSAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgIEdUS19QT1NfVE9QLCAtMTAsIDApOwotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdGFi
X3Njcm9sbF9hcnJvd19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSog
cmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXBy
ZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR3RrQXJyb3dUeXBlIGFycm93X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRl
X3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93
X3R5cGUgPSBzdGF0ZS0+YWN0aXZlID8gR1RLX1NIQURPV19JTiA6IEdUS19TSEFET1dfT1VUOwot
ICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBnaW50IGFycm93X3NpemUgPSBNSU4ocmVjdC0+d2lk
dGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgZ2ludCB4ID0gcmVjdC0+eCArIChyZWN0LT53aWR0aCAt
IGFycm93X3NpemUpIC8gMjsKLSAgICBnaW50IHkgPSByZWN0LT55ICsgKHJlY3QtPmhlaWdodCAt
IGFycm93X3NpemUpIC8gMjsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0KLSAgICBzdHls
ZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dGFiV2lkZ2V0KTsKLSAgICBUU09mZnNl
dFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLQotICAgIGlmIChkaXJlY3Rpb24g
PT0gR1RLX1RFWFRfRElSX1JUTCkgewotICAgICAgICBhcnJvd190eXBlID0gKGFycm93X3R5cGUg
PT0gR1RLX0FSUk9XX0xFRlQpID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQVJST1df
UklHSFQgOiBHVEtfQVJST1dfTEVGVDsKLSAgICB9Ci0KLSAgICBndGtfcGFpbnRfYXJyb3coc3R5
bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgTlVMTCwKLSAgICAgICAgICAg
ICAgICAgICAgZ1BhcnRzLT50YWJXaWRnZXQsICJub3RlYm9vayIsIGFycm93X3R5cGUsIFRSVUUs
Ci0gICAgICAgICAgICAgICAgICAgIHgsIHksIGFycm93X3NpemUsIGFycm93X3NpemUpOwotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVu
dV9iYXJfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJl
Y3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtTaGFkb3dU
eXBlIHNoYWRvd190eXBlOwotICAgIGVuc3VyZV9tZW51X2Jhcl93aWRnZXQoKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT5tZW51QmFyV2lkZ2V0LCBkaXJlY3Rpb24pOwot
Ci0gICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT5tZW51QmFyV2lkZ2V0LCAic2hhZG93
LXR5cGUiLCAmc2hhZG93X3R5cGUsIE5VTEwpOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dl
dF9zdHlsZShnUGFydHMtPm1lbnVCYXJXaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhz
dHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRfYmFj
a2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVjdC0+
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoLCBy
ZWN0LT5oZWlnaHQpOwotCi0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19T
VEFURV9OT1JNQUwsIHNoYWRvd190eXBlLAotICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQ
YXJ0cy0+bWVudUJhcldpZGdldCwgIm1lbnViYXIiLCByZWN0LT54LCByZWN0LT55LAotICAgICAg
ICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgcmV0dXJuIE1PWl9H
VEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVudV9wb3B1cF9wYWludChH
ZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgZW5zdXJlX21lbnVfcG9wdXBfd2lk
Z2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+bWVudVBvcHVwV2lk
Z2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFy
dHMtPm1lbnVQb3B1cFdpZGdldCk7Ci0KLSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0
LT54LCByZWN0LT55KTsKLSAgICBndGtfc3R5bGVfYXBwbHlfZGVmYXVsdF9iYWNrZ3JvdW5kKHN0
eWxlLCBkcmF3YWJsZSwgVFJVRSwgR1RLX1NUQVRFX05PUk1BTCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCByZWN0LT54LCByZWN0LT55LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdo
dCk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUws
IEdUS19TSEFET1dfT1VULCAKLSAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPm1l
bnVQb3B1cFdpZGdldCwgIm1lbnUiLAotICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+
eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19tZW51X3NlcGFyYXRvcl9wYWludChHZGtE
cmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIGdib29sZWFuIHdpZGVfc2VwYXJh
dG9yczsKLSAgICBnaW50IHNlcGFyYXRvcl9oZWlnaHQ7Ci0gICAgZ3VpbnQgaG9yaXpvbnRhbF9w
YWRkaW5nOwotICAgIGdpbnQgcGFpbnRfaGVpZ2h0OwotCi0gICAgZW5zdXJlX21lbnVfc2VwYXJh
dG9yX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPm1lbnVT
ZXBhcmF0b3JXaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0
X3N0eWxlKGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0
eWxlX2dldChnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICAgICZ3aWRlX3NlcGFyYXRvcnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgInNlcGFyYXRvci1oZWlnaHQiLCAgICZzZXBhcmF0b3JfaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICJob3Jpem9udGFsLXBhZGRpbmciLCAmaG9yaXpvbnRh
bF9wYWRkaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgVFNPZmZz
ZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBpZiAod2lkZV9zZXBh
cmF0b3JzKSB7Ci0gICAgICAgIGlmIChzZXBhcmF0b3JfaGVpZ2h0ID4gcmVjdC0+aGVpZ2h0KQot
ICAgICAgICAgICAgc2VwYXJhdG9yX2hlaWdodCA9IHJlY3QtPmhlaWdodDsKLQotICAgICAgICBn
dGtfcGFpbnRfYm94KHN0eWxlLCBkcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICBHVEtf
U1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0VUQ0hFRF9PVVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgY2xpcHJlY3QsIGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCwgImhzZXBhcmF0b3IiLAot
ICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPnggKyBob3Jpem9udGFsX3BhZGRpbmcgKyBzdHls
ZS0+eHRoaWNrbmVzcywKLSAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgKHJlY3QtPmhl
aWdodCAtIHNlcGFyYXRvcl9oZWlnaHQgLSBzdHlsZS0+eXRoaWNrbmVzcykgLyAyLAotICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoIC0gMiAqIChob3Jpem9udGFsX3BhZGRpbmcgKyBz
dHlsZS0+eHRoaWNrbmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yX2hlaWdo
dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGFpbnRfaGVpZ2h0ID0gc3R5bGUtPnl0aGlja25l
c3M7Ci0gICAgICAgIGlmIChwYWludF9oZWlnaHQgPiByZWN0LT5oZWlnaHQpCi0gICAgICAgICAg
ICBwYWludF9oZWlnaHQgPSByZWN0LT5oZWlnaHQ7Ci0KLSAgICAgICAgZ3RrX3BhaW50X2hsaW5l
KHN0eWxlLCBkcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JN
QUwsIGNsaXByZWN0LCBnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAibWVudWl0ZW0iLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCAr
IGhvcml6b250YWxfcGFkZGluZyArIHN0eWxlLT54dGhpY2tuZXNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjdC0+eCArIHJlY3QtPndpZHRoIC0gaG9yaXpvbnRhbF9wYWRkaW5nIC0gc3R5
bGUtPnh0aGlja25lc3MgLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eSArIChy
ZWN0LT5oZWlnaHQgLSBzdHlsZS0+eXRoaWNrbmVzcykgLyAyKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19tZW51X2l0ZW1f
cGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSog
c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBnaW50IGZsYWdzLCBHdGtUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2hhZG93VHlw
ZSBzaGFkb3dfdHlwZTsKLSAgICBHdGtXaWRnZXQqIGl0ZW1fd2lkZ2V0OwotCi0gICAgaWYgKHN0
YXRlLT5pbkhvdmVyICYmICFzdGF0ZS0+ZGlzYWJsZWQpIHsKLSAgICAgICAgaWYgKGZsYWdzICYg
TU9aX1RPUExFVkVMX01FTlVfSVRFTSkgewotICAgICAgICAgICAgZW5zdXJlX21lbnVfYmFyX2l0
ZW1fd2lkZ2V0KCk7Ci0gICAgICAgICAgICBpdGVtX3dpZGdldCA9IGdQYXJ0cy0+bWVudUJhckl0
ZW1XaWRnZXQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbnN1cmVfbWVudV9pdGVt
X3dpZGdldCgpOwotICAgICAgICAgICAgaXRlbV93aWRnZXQgPSBnUGFydHMtPm1lbnVJdGVtV2lk
Z2V0OwotICAgICAgICB9Ci0gICAgICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihpdGVtX3dp
ZGdldCwgZGlyZWN0aW9uKTsKLSAgICAgICAgCi0gICAgICAgIHN0eWxlID0gZ3RrX3dpZGdldF9n
ZXRfc3R5bGUoaXRlbV93aWRnZXQpOwotICAgICAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCBy
ZWN0LT54LCByZWN0LT55KTsKLQotICAgICAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChpdGVtX3dp
ZGdldCwgInNlbGVjdGVkLXNoYWRvdy10eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNoYWRvd190eXBlLCBOVUxMKTsKLQotICAgICAgICBndGtfcGFpbnRfYm94KHN0eWxlLCBk
cmF3YWJsZSwgR1RLX1NUQVRFX1BSRUxJR0hULCBzaGFkb3dfdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBjbGlwcmVjdCwgaXRlbV93aWRnZXQsICJtZW51aXRlbSIsIHJlY3QtPngsIHJlY3Qt
PnksCi0gICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1v
el9ndGtfbWVudV9hcnJvd19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rhbmds
ZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0
LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1N0
YXRlVHlwZSBzdGF0ZV90eXBlID0gQ29udmVydEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3Vy
ZV9tZW51X2l0ZW1fd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0
cy0+bWVudUl0ZW1XaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRf
Z2V0X3N0eWxlKGdQYXJ0cy0+bWVudUl0ZW1XaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdD
cyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2Fycm93KHN0eWxlLCBk
cmF3YWJsZSwgc3RhdGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgKHN0YXRlX3R5cGUgPT0g
R1RLX1NUQVRFX1BSRUxJR0hUKSA/IEdUS19TSEFET1dfSU4gOiBHVEtfU0hBRE9XX09VVCwKLSAg
ICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+bWVudUl0ZW1XaWRnZXQsICJtZW51
aXRlbSIsCi0gICAgICAgICAgICAgICAgICAgIChkaXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX0xU
UikgPyBHVEtfQVJST1dfUklHSFQgOiBHVEtfQVJST1dfTEVGVCwKLSAgICAgICAgICAgICAgICAg
ICAgVFJVRSwgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0K
LSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19j
aGVja19tZW51X2l0ZW1fcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUq
IHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXBy
ZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnYm9vbGVhbiBjaGVja2VkLCBnYm9vbGVhbiBpc3JhZGlvLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVU
eXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1N0eWxlKiBz
dHlsZTsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlID0gKGNoZWNrZWQpP0dUS19TSEFE
T1dfSU46R1RLX1NIQURPV19PVVQ7Ci0gICAgZ2ludCBvZmZzZXQ7Ci0gICAgZ2ludCBpbmRpY2F0
b3Jfc2l6ZTsKLSAgICBnaW50IHgsIHk7Ci0KLSAgICBtb3pfZ3RrX21lbnVfaXRlbV9wYWludChk
cmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBGQUxTRSwgZGlyZWN0aW9uKTsKLQotICAg
IGVuc3VyZV9jaGVja19tZW51X2l0ZW1fd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGly
ZWN0aW9uKGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIGd0
a193aWRnZXRfc3R5bGVfZ2V0IChnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbmRpY2F0b3Itc2l6ZSIsICZpbmRpY2F0b3Jfc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05f
MgotICAgIGlmIChjaGVja2VkIHx8IEdUS19DSEVDS19NRU5VX0lURU0oZ1BhcnRzLT5jaGVja01l
bnVJdGVtV2lkZ2V0KS0+YWx3YXlzX3Nob3dfdG9nZ2xlKSB7Ci0jZWxzZQotICAgIGlmIChjaGVj
a2VkIHx8IEZBTFNFKSB7Ci0jZW5kaWYKLSAgICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5
bGUoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KTsKLQotICAgICAgb2Zmc2V0ID0gZ3RrX2Nv
bnRhaW5lcl9nZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZ1BhcnRzLT5jaGVja01lbnVJ
dGVtV2lkZ2V0KSkgKyBzdHlsZS0+eHRoaWNrbmVzcyArIDI7Ci0KLSAgICAgIC8qIHdoaWxlIG5v
cm1hbGx5IHRoaXMgIjMiIHdvdWxkIGJlIHRoZSBob3Jpem9udGFsLXBhZGRpbmcgc3R5bGUgdmFs
dWUsIHBhc3NpbmcgaXQgdG8gR2Vja28KLSAgICAgICAgIGFzIHRoZSB2YWx1ZSBvZiBtZW51aXRl
bSBwYWRkaW5nIGNhdXNlcyBwcm9ibGVtcyB3aXRoIGRyb3Bkb3ducyAoYnVnIDQwNjEyOSksIHNv
IGluIHRoZSBtZW51LmNzcwotICAgICAgICAgZmlsZSB0aGlzIGlzIGhhcmRjb2RlZCBhcyAzcHgu
IFllcyBpdCBzdWNrcywgYnV0IHdlIGRvbid0IHJlYWxseSBoYXZlIGEgY2hvaWNlLiAqLwotICAg
ICAgeCA9IChkaXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX1JUTCkgPwotICAgICAgICAgICAgcmVj
dC0+d2lkdGggLSBpbmRpY2F0b3Jfc2l6ZSAtIG9mZnNldCAtIDM6IHJlY3QtPnggKyBvZmZzZXQg
KyAzOwotICAgICAgeSA9IHJlY3QtPnkgKyAocmVjdC0+aGVpZ2h0IC0gaW5kaWNhdG9yX3NpemUp
IC8gMjsKLQotICAgICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgeCwgeSk7Ci0gICAgICBndGtf
Y2hlY2tfbWVudV9pdGVtX3NldF9hY3RpdmUoR1RLX0NIRUNLX01FTlVfSVRFTShnUGFydHMtPmNo
ZWNrTWVudUl0ZW1XaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoZWNrZWQpOwotCi0gICAgICBpZiAoaXNyYWRpbykgewotICAgICAgICBndGtfcGFpbnRfb3B0
aW9uKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgc2hhZG93X3R5cGUsIGNsaXByZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgIm9w
dGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgaW5kaWNhdG9yX3NpemUsIGlu
ZGljYXRvcl9zaXplKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGd0a19wYWludF9jaGVjayhz
dHlsZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgImNoZWNrIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHgsIHksIGluZGljYXRvcl9zaXplLCBpbmRpY2F0b3Jf
c2l6ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLW1vel9ndGtfd2luZG93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJs
ZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xl
KiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUq
IHN0eWxlOwotCi0gICAgZW5zdXJlX3dpbmRvd193aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT5wcm90b1dpbmRvdywgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxl
ID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5wcm90b1dpbmRvdyk7Ci0KLSAgICBUU09m
ZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfc3R5bGVfYXBw
bHlfZGVmYXVsdF9iYWNrZ3JvdW5kKHN0eWxlLCBkcmF3YWJsZSwgVFJVRSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVjdC0+eSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoLCByZWN0
LT5oZWlnaHQpOwotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKIG1vel9n
dGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVm
dCwgZ2ludCogdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50KiByaWdodCwgZ2lu
dCogYm90dG9tLCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gaW5odG1sKQpAQCAtMjcwNSw1MiArMTI5Myw2IEBAIG1vel9ndGtf
Z2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVmdCwg
Z2ludCogdG9wLAogICAgICAgICBlbnN1cmVfZW50cnlfd2lkZ2V0KCk7CiAgICAgICAgIHcgPSBn
UGFydHMtPmVudHJ5V2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJF
RVZJRVc6Ci0gICAgICAgIGVuc3VyZV90cmVlX3ZpZXdfd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBn
UGFydHMtPnRyZWVWaWV3V2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtf
VFJFRV9IRUFERVJfQ0VMTDoKLSAgICAgICAgewotICAgICAgICAgICAgLyogQSBUcmVlIEhlYWRl
ciBpbiBHVEsgaXMganVzdCBhIGRpZmZlcmVudCBzdHlsZWQgYnV0dG9uIAotICAgICAgICAgICAg
ICogSXQgbXVzdCBiZSBwbGFjZWQgaW4gYSBUcmVlVmlldyBmb3IgZ2V0dGluZyB0aGUgY29ycmVj
dCBzdHlsZQotICAgICAgICAgICAgICogYXNzaWduZWQuCi0gICAgICAgICAgICAgKiBUaGF0IGlz
IHdoeSB0aGUgZm9sbG93aW5nIGNvZGUgaXMgdGhlIHNhbWUgYXMgZm9yIE1PWl9HVEtfQlVUVE9O
LiAgCi0gICAgICAgICAgICAgKiAqLwotCi0gICAgICAgICAgICBHdGtCb3JkZXIgaW5uZXJfYm9y
ZGVyOwotICAgICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJpb3JfZm9jdXM7Ci0gICAgICAgICAgICBn
aW50IGZvY3VzX3dpZHRoLCBmb2N1c19wYWQ7Ci0gICAgICAgICAgICBHdGtTdHlsZSogc3R5bGU7
Ci0KLSAgICAgICAgICAgIGVuc3VyZV90cmVlX2hlYWRlcl9jZWxsX3dpZGdldCgpOwotICAgICAg
ICAgICAgKmxlZnQgPSAqdG9wID0gKnJpZ2h0ID0gKmJvdHRvbSA9IGd0a19jb250YWluZXJfZ2V0
X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQp
KTsKLQotICAgICAgICAgICAgbW96X2d0a193aWRnZXRfZ2V0X2ZvY3VzKGdQYXJ0cy0+dHJlZUhl
YWRlckNlbGxXaWRnZXQsICZpbnRlcmlvcl9mb2N1cywgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFk
KTsKLSAgICAgICAgICAgIG1vel9ndGtfYnV0dG9uX2dldF9pbm5lcl9ib3JkZXIoZ1BhcnRzLT50
cmVlSGVhZGVyQ2VsbFdpZGdldCwgJmlubmVyX2JvcmRlcik7Ci0gICAgICAgICAgICAqbGVmdCAr
PSBmb2N1c193aWR0aCArIGZvY3VzX3BhZCArIGlubmVyX2JvcmRlci5sZWZ0OwotICAgICAgICAg
ICAgKnJpZ2h0ICs9IGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkICsgaW5uZXJfYm9yZGVyLnJpZ2h0
OwotICAgICAgICAgICAgKnRvcCArPSBmb2N1c193aWR0aCArIGZvY3VzX3BhZCArIGlubmVyX2Jv
cmRlci50b3A7Ci0gICAgICAgICAgICAqYm90dG9tICs9IGZvY3VzX3dpZHRoICsgZm9jdXNfcGFk
ICsgaW5uZXJfYm9yZGVyLmJvdHRvbTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3R5bGUg
PSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRyZWVIZWFkZXJDZWxsV2lkZ2V0KTsKLSAg
ICAgICAgICAgICpsZWZ0ICs9IHN0eWxlLT54dGhpY2tuZXNzOwotICAgICAgICAgICAgKnJpZ2h0
ICs9IHN0eWxlLT54dGhpY2tuZXNzOwotICAgICAgICAgICAgKnRvcCArPSBzdHlsZS0+eXRoaWNr
bmVzczsKLSAgICAgICAgICAgICpib3R0b20gKz0gc3R5bGUtPnl0aGlja25lc3M7Ci0gICAgICAg
ICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotICAgICAgICB9Ci0gICAgY2FzZSBNT1pfR1RL
X1RSRUVfSEVBREVSX1NPUlRBUlJPVzoKLSAgICAgICAgZW5zdXJlX3RyZWVfaGVhZGVyX2NlbGxf
d2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19EUk9QRE9XTl9FTlRSWToKLSAgICAg
ICAgZW5zdXJlX2NvbWJvX2JveF9lbnRyeV93aWRnZXRzKCk7Ci0gICAgICAgIHcgPSBnUGFydHMt
PmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
T1pfR1RLX0RST1BET1dOX0FSUk9XOgotICAgICAgICBlbnN1cmVfY29tYm9fYm94X2VudHJ5X3dp
ZGdldHMoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdldDsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNT1pfR1RLX0RST1BET1dOOgogICAgICAgICB7CiAg
ICAgICAgICAgICAvKiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBhcnJvdyBvbiB0aGUgZHJv
cGRvd24sIHNvIHRleHQKQEAgLTI4MDMsMjAgKzEzNDUsMTAgQEAgbW96X2d0a19nZXRfd2lkZ2V0
X2JvcmRlcihHdGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBnaW50KiBsZWZ0LCBnaW50KiB0b3As
CiAKICAgICAgICAgICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7CiAgICAgICAgIH0KLSAgICBj
YXNlIE1PWl9HVEtfVEFCUEFORUxTOgotICAgICAgICBlbnN1cmVfdGFiX3dpZGdldCgpOwotICAg
ICAgICB3ID0gZ1BhcnRzLT50YWJXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9a
X0dUS19QUk9HUkVTU0JBUjoKICAgICAgICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwogICAg
ICAgICB3ID0gZ1BhcnRzLT5wcm9ncmVzV2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1PWl9HVEtfU1BJTkJVVFRPTl9FTlRSWToKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTl9V
UDoKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTl9ET1dOOgotICAgICAgICBlbnN1cmVfc3Bp
bl93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+c3BpbldpZGdldDsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNT1pfR1RLX1NDQUxFX0hPUklaT05UQUw6CiAgICAgICAgIGVuc3VyZV9z
Y2FsZV93aWRnZXQoKTsKICAgICAgICAgdyA9IGdQYXJ0cy0+aFNjYWxlV2lkZ2V0OwpAQCAtMjgy
NSw4OSArMTM1Nyw3IEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRU
eXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCogdG9wLAogICAgICAgICBlbnN1cmVfc2NhbGVf
d2lkZ2V0KCk7CiAgICAgICAgIHcgPSBnUGFydHMtPnZTY2FsZVdpZGdldDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNT1pfR1RLX0ZSQU1FOgotICAgICAgICBlbnN1cmVfZnJhbWVfd2lkZ2V0
KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPmZyYW1lV2lkZ2V0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE1PWl9HVEtfQ0hFQ0tCVVRUT05fTEFCRUw6Ci0gICAgY2FzZSBNT1pfR1RLX1JBRElP
QlVUVE9OX0xBQkVMOgotICAgICAgICB7Ci0gICAgICAgICAgICBnYm9vbGVhbiBpbnRlcmlvcl9m
b2N1czsKLSAgICAgICAgICAgIGdpbnQgZm9jdXNfd2lkdGgsIGZvY3VzX3BhZDsKLQotICAgICAg
ICAgICAgLyogSWYgdGhlIGZvY3VzIGlzIGludGVyaW9yLCB0aGVuIHRoZSBsYWJlbCBoYXMgYSBi
b3JkZXIgb2YKLSAgICAgICAgICAgICAgIChmb2N1c193aWR0aCArIGZvY3VzX3BhZCkuICovCi0g
ICAgICAgICAgICBpZiAod2lkZ2V0ID09IE1PWl9HVEtfQ0hFQ0tCVVRUT05fTEFCRUwpIHsKLSAg
ICAgICAgICAgICAgICBlbnN1cmVfY2hlY2tib3hfd2lkZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
bW96X2d0a193aWRnZXRfZ2V0X2ZvY3VzKGdQYXJ0cy0+Y2hlY2tib3hXaWRnZXQsICZpbnRlcmlv
cl9mb2N1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9j
dXNfd2lkdGgsICZmb2N1c19wYWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICAg
ICAgICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPnJhZGlvYnV0dG9uV2lkZ2V0
LCAmaW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKGludGVyaW9yX2ZvY3VzKQotICAgICAgICAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpy
aWdodCA9ICpib3R0b20gPSAoZm9jdXNfd2lkdGggKyBmb2N1c19wYWQpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20gPSAw
OwotCi0gICAgICAgICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotICAgICAgICB9Ci0KLSAg
ICBjYXNlIE1PWl9HVEtfQ0hFQ0tCVVRUT05fQ09OVEFJTkVSOgotICAgIGNhc2UgTU9aX0dUS19S
QURJT0JVVFRPTl9DT05UQUlORVI6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdib29sZWFuIGlu
dGVyaW9yX2ZvY3VzOwotICAgICAgICAgICAgZ2ludCBmb2N1c193aWR0aCwgZm9jdXNfcGFkOwot
Ci0gICAgICAgICAgICAvKiBJZiB0aGUgZm9jdXMgaXMgX25vdF8gaW50ZXJpb3IsIHRoZW4gdGhl
IGNvbnRhaW5lciBoYXMgYSBib3JkZXIKLSAgICAgICAgICAgICAgIG9mIChmb2N1c193aWR0aCAr
IGZvY3VzX3BhZCkuICovCi0gICAgICAgICAgICBpZiAod2lkZ2V0ID09IE1PWl9HVEtfQ0hFQ0tC
VVRUT05fQ09OVEFJTkVSKSB7Ci0gICAgICAgICAgICAgICAgZW5zdXJlX2NoZWNrYm94X3dpZGdl
dCgpOwotICAgICAgICAgICAgICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPmNo
ZWNrYm94V2lkZ2V0LCAmaW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAg
ICAgICB3ID0gZ1BhcnRzLT5jaGVja2JveFdpZGdldDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICAgICAg
ICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPnJhZGlvYnV0dG9uV2lkZ2V0LCAm
aW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgICAgICB3ID0gZ1BhcnRzLT5y
YWRpb2J1dHRvbldpZGdldDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKmxlZnQgPSAq
dG9wID0gKnJpZ2h0ID0gKmJvdHRvbSA9IGd0a19jb250YWluZXJfZ2V0X2JvcmRlcl93aWR0aChH
VEtfQ09OVEFJTkVSKHcpKTsKLQotICAgICAgICAgICAgaWYgKCFpbnRlcmlvcl9mb2N1cykgewot
ICAgICAgICAgICAgICAgICpsZWZ0ICs9IChmb2N1c193aWR0aCArIGZvY3VzX3BhZCk7Ci0gICAg
ICAgICAgICAgICAgKnJpZ2h0ICs9IChmb2N1c193aWR0aCArIGZvY3VzX3BhZCk7Ci0gICAgICAg
ICAgICAgICAgKnRvcCArPSAoZm9jdXNfd2lkdGggKyBmb2N1c19wYWQpOwotICAgICAgICAgICAg
ICAgICpib3R0b20gKz0gKGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLSAgICAgICAgfQotICAgIGNh
c2UgTU9aX0dUS19NRU5VUE9QVVA6Ci0gICAgICAgIGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgp
OwotICAgICAgICB3ID0gZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTU9aX0dUS19NRU5VSVRFTToKLSAgICAgICAgZW5zdXJlX21lbnVfaXRlbV93aWRn
ZXQoKTsKLSAgICAgICAgZW5zdXJlX21lbnVfYmFyX2l0ZW1fd2lkZ2V0KCk7Ci0gICAgICAgIHcg
PSBnUGFydHMtPm1lbnVJdGVtV2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9H
VEtfQ0hFQ0tNRU5VSVRFTToKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9NRU5VSVRFTToKLSAgICAg
ICAgZW5zdXJlX2NoZWNrX21lbnVfaXRlbV93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+
Y2hlY2tNZW51SXRlbVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RB
QjoKLSAgICAgICAgZW5zdXJlX3RhYl93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+dGFi
V2lkZ2V0OwotICAgICAgICBicmVhazsKICAgICAvKiBUaGVzZSB3aWRnZXRzIGhhdmUgbm8gYm9y
ZGVycywgc2luY2UgdGhleSBhcmUgbm90IGNvbnRhaW5lcnMuICovCi0gICAgY2FzZSBNT1pfR1RL
X1NQTElUVEVSX0hPUklaT05UQUw6Ci0gICAgY2FzZSBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FM
OgogICAgIGNhc2UgTU9aX0dUS19DSEVDS0JVVFRPTjoKICAgICBjYXNlIE1PWl9HVEtfUkFESU9C
VVRUT046CiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9CVVRUT046CkBAIC0yOTE3LDIzICsx
MzY3LDcgQEAgbW96X2d0a19nZXRfd2lkZ2V0X2JvcmRlcihHdGtUaGVtZVdpZGdldFR5cGUgd2lk
Z2V0LCBnaW50KiBsZWZ0LCBnaW50KiB0b3AsCiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9U
SFVNQl9WRVJUSUNBTDoKICAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTDoK
ICAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUw6Ci0gICAgY2FzZSBNT1pfR1RL
X0dSSVBQRVI6CiAgICAgY2FzZSBNT1pfR1RLX1BST0dSRVNTX0NIVU5LOgotICAgIGNhc2UgTU9a
X0dUS19FWFBBTkRFUjoKLSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVdfRVhQQU5ERVI6Ci0gICAg
Y2FzZSBNT1pfR1RLX1RPT0xCQVJfU0VQQVJBVE9SOgotICAgIGNhc2UgTU9aX0dUS19NRU5VU0VQ
QVJBVE9SOgotICAgIC8qIFRoZXNlIHdpZGdldHMgaGF2ZSBubyBib3JkZXJzLiovCi0gICAgY2Fz
ZSBNT1pfR1RLX1NQSU5CVVRUT046Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xUSVA6Ci0gICAgY2Fz
ZSBNT1pfR1RLX1dJTkRPVzoKLSAgICBjYXNlIE1PWl9HVEtfUkVTSVpFUjoKLSAgICBjYXNlIE1P
Wl9HVEtfTUVOVUFSUk9XOgotICAgIGNhc2UgTU9aX0dUS19UT09MQkFSQlVUVE9OX0FSUk9XOgot
ICAgIGNhc2UgTU9aX0dUS19UT09MQkFSOgotICAgIGNhc2UgTU9aX0dUS19NRU5VQkFSOgotICAg
IGNhc2UgTU9aX0dUS19UQUJfU0NST0xMQVJST1c6Ci0gICAgY2FzZSBNT1pfR1RLX0VOVFJZX0NB
UkVUOgogICAgICAgICAqbGVmdCA9ICp0b3AgPSAqcmlnaHQgPSAqYm90dG9tID0gMDsKICAgICAg
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKICAgICBkZWZhdWx0OgpAQCAtMjk0OSwxMzEgKzEz
ODMsNiBAQCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRn
ZXQsIGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKIH0KIAogZ2ludAotbW96X2d0a19nZXRfY29tYm9f
Ym94X2VudHJ5X2J1dHRvbl9zaXplKGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCi17Ci0gICAg
LyoKLSAgICAgKiBXZSBnZXQgdGhlIHJlcXVpc2l0aW9uIG9mIHRoZSBkcm9wIGRvd24gYnV0dG9u
LCB3aGljaCBpbmNsdWRlcwotICAgICAqIGFsbCBwYWRkaW5nLCBib3JkZXIgYW5kIGZvY3VzIGxp
bmUgd2lkdGhzIHRoZSBidXR0b24gdXNlcywKLSAgICAgKiBhcyB3ZWxsIGFzIHRoZSBtaW5pbXVt
IGFycm93IHNpemUgYW5kIGl0cyBwYWRkaW5nCi0gICAgICogKi8KLSAgICBHdGtSZXF1aXNpdGlv
biByZXF1aXNpdGlvbjsKLSAgICBlbnN1cmVfY29tYm9fYm94X2VudHJ5X3dpZGdldHMoKTsKLQot
I2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgZ3RrX3dpZGdldF9zaXplX3JlcXVlc3QoZ1Bh
cnRzLT5jb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0LCAmcmVxdWlzaXRpb24pOwotI2Vsc2UKLSAg
ICBndGtfc2l6ZV9yZXF1ZXN0X2dldF9zaXplKEdUS19TSVpFX1JFUVVFU1QoZ1BhcnRzLT5jb21i
b0JveEVudHJ5QnV0dG9uV2lkZ2V0KSwgJnJlcXVpc2l0aW9uLCBOVUxMKTsKLSNlbmRpZgotCi0g
ICAgKndpZHRoID0gcmVxdWlzaXRpb24ud2lkdGg7Ci0gICAgKmhlaWdodCA9IHJlcXVpc2l0aW9u
LmhlaWdodDsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9n
dGtfZ2V0X3RhYl9zY3JvbGxfYXJyb3dfc2l6ZShnaW50KiB3aWR0aCwgZ2ludCogaGVpZ2h0KQot
ewotICAgIGdpbnQgYXJyb3dfc2l6ZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAg
Z3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT50YWJXaWRnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgInNjcm9sbC1hcnJvdy1obGVuZ3RoIiwgJmFycm93X3NpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICAqaGVpZ2h0ID0gKndpZHRoID0gYXJyb3dfc2l6
ZTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0
X2Rvd25hcnJvd19zaXplKGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCi17Ci0gICAgR3RrUmVx
dWlzaXRpb24gcmVxdWlzaXRpb247Ci0gICAgZW5zdXJlX2J1dHRvbl9hcnJvd193aWRnZXQoKTsK
LQotI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgZ3RrX3dpZGdldF9zaXplX3JlcXVlc3Qo
Z1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCwgJnJlcXVpc2l0aW9uKTsKLSNlbHNlCi0gICAgZ3Rr
X3NpemVfcmVxdWVzdF9nZXRfc2l6ZShHVEtfU0laRV9SRVFVRVNUKGdQYXJ0cy0+YnV0dG9uQXJy
b3dXaWRnZXQpLCAmcmVxdWlzaXRpb24sIE5VTEwpOwotI2VuZGlmCi0KLSAgICAqd2lkdGggPSBy
ZXF1aXNpdGlvbi53aWR0aDsKLSAgICAqaGVpZ2h0ID0gcmVxdWlzaXRpb24uaGVpZ2h0OwotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotZ2ludAotbW96X2d0a19nZXRfdG9vbGJh
cl9zZXBhcmF0b3Jfd2lkdGgoZ2ludCogc2l6ZSkKLXsKLSAgICBnYm9vbGVhbiB3aWRlX3NlcGFy
YXRvcnM7Ci0gICAgZ2ludCBzZXBhcmF0b3Jfd2lkdGg7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwot
Ci0gICAgZW5zdXJlX3Rvb2xiYXJfd2lkZ2V0KCk7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRf
Z2V0X3N0eWxlKGdQYXJ0cy0+dG9vbGJhcldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxl
X2dldChnUGFydHMtPnRvb2xiYXJXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNw
YWNlLXNpemUiLCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWRlLXNlcGFyYXRv
cnMiLCAgJndpZGVfc2VwYXJhdG9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAic2VwYXJh
dG9yLXdpZHRoIiwgJnNlcGFyYXRvcl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMKTsKLQotICAgIC8qIEp1c3QgaW4gY2FzZS4uLiAqLwotICAgICpzaXplID0gTUFYKCpzaXpl
LCAod2lkZV9zZXBhcmF0b3JzID8gc2VwYXJhdG9yX3dpZHRoIDogc3R5bGUtPnh0aGlja25lc3Mp
KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0
X2V4cGFuZGVyX3NpemUoZ2ludCogc2l6ZSkKLXsKLSAgICBlbnN1cmVfZXhwYW5kZXJfd2lkZ2V0
KCk7Ci0gICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT5leHBhbmRlcldpZGdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiZXhwYW5kZXItc2l6ZSIsIHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQot
Ci1naW50Ci1tb3pfZ3RrX2dldF90cmVldmlld19leHBhbmRlcl9zaXplKGdpbnQqIHNpemUpCi17
Ci0gICAgZW5zdXJlX3RyZWVfdmlld193aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dl
dChnUGFydHMtPnRyZWVWaWV3V2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICJleHBh
bmRlci1zaXplIiwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0X21lbnVfc2Vw
YXJhdG9yX2hlaWdodChnaW50ICpzaXplKQotewotICAgIGdib29sZWFuIHdpZGVfc2VwYXJhdG9y
czsKLSAgICBnaW50ICAgICBzZXBhcmF0b3JfaGVpZ2h0OwotICAgIEd0a1N0eWxlICpzdHlsZTsK
LQotICAgIGVuc3VyZV9tZW51X3NlcGFyYXRvcl93aWRnZXQoKTsKLQotICAgIGd0a193aWRnZXRf
c3R5bGVfZ2V0KGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICAmd2lkZV9zZXBhcmF0b3JzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAic2VwYXJhdG9yLWhlaWdodCIsICZzZXBhcmF0b3JfaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdl
dF9nZXRfc3R5bGUoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KTsKLQotICAgIGlmICh3aWRl
X3NlcGFyYXRvcnMpCi0gICAgICAgICpzaXplID0gc2VwYXJhdG9yX2hlaWdodCArIHN0eWxlLT55
dGhpY2tuZXNzOwotICAgIGVsc2UKLSAgICAgICAgKnNpemUgPSBzdHlsZS0+eXRoaWNrbmVzcyAq
IDI7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1naW50CiBtb3pfZ3RrX2dl
dF9zY2FsZXRodW1iX21ldHJpY3MoR3RrT3JpZW50YXRpb24gb3JpZW50LCBnaW50KiB0aHVtYl9s
ZW5ndGgsIGdpbnQqIHRodW1iX2hlaWdodCkKIHsKICAgR3RrV2lkZ2V0KiB3aWRnZXQ7CkBAIC0z
MTA5LDE5ICsxNDE4LDYgQEAgbW96X2d0a19nZXRfc2Nyb2xsYmFyX21ldHJpY3MoTW96R3RrU2Ny
b2xsYmFyTWV0cmljcyAqbWV0cmljcykKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQog
Ci1nYm9vbGVhbgotbW96X2d0a19pbWFnZXNfaW5fbWVudXMoKQotewotICAgIGdib29sZWFuIHJl
c3VsdDsKLSAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3M7Ci0KLSAgICBlbnN1cmVfaW1hZ2VfbWVu
dV9pdGVtX3dpZGdldCgpOwotICAgIHNldHRpbmdzID0gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3Mo
Z1BhcnRzLT5pbWFnZU1lbnVJdGVtV2lkZ2V0KTsKLQotICAgIGdfb2JqZWN0X2dldChzZXR0aW5n
cywgImd0ay1tZW51LWltYWdlcyIsICZyZXN1bHQsIE5VTEwpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIGdpbnQKIG1vel9ndGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRn
ZXQsIEdka0RyYXdhYmxlKiBkcmF3YWJsZSwKICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3Rh
bmdsZSogcmVjdCwgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKQEAgLTMxNzcsOTYgKzE0NzMsMTUg
QEAgbW96X2d0a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgR2RrRHJh
d2FibGUqIGRyYXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19zY2FsZV90aHVtYl9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoR3RrT3JpZW50YXRpb24pIGZsYWdzLCBkaXJlY3Rpb24pOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTjoKLSAgICAgICAgcmV0
dXJuIG1vel9ndGtfc3Bpbl9wYWludChkcmF3YWJsZSwgcmVjdCwgZGlyZWN0aW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NQSU5CVVRUT05fVVA6Ci0gICAgY2FzZSBNT1pf
R1RLX1NQSU5CVVRUT05fRE9XTjoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfc3Bpbl91cGRvd25f
cGFpbnQoZHJhd2FibGUsIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh3aWRnZXQgPT0gTU9aX0dUS19TUElOQlVUVE9OX0RPV04pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgZGlyZWN0aW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NQSU5CVVRUT05fRU5UUlk6Ci0gICAgICAgIGVuc3Vy
ZV9zcGluX3dpZGdldCgpOwotICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWludChkcmF3
YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnUGFydHMtPnNwaW5XaWRnZXQsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTU9aX0dUS19HUklQUEVSOgotICAgICAgICByZXR1cm4gbW96X2d0a19ncmlwcGVy
X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX1RSRUVWSUVXOgotICAgICAgICByZXR1cm4gbW96X2d0a190cmVldmlld19wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1P
Wl9HVEtfVFJFRV9IRUFERVJfQ0VMTDoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfdHJlZV9oZWFk
ZXJfY2VsbF9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBkaXJlY3Rpb24pOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRV9IRUFERVJfU09SVEFSUk9XOgot
ICAgICAgICByZXR1cm4gbW96X2d0a190cmVlX2hlYWRlcl9zb3J0X2Fycm93X3BhaW50KGRyYXdh
YmxlLCByZWN0LCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoR3RrQXJyb3dUeXBlKSBmbGFncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVdfRVhQQU5ERVI6Ci0gICAgICAgIHJl
dHVybiBtb3pfZ3RrX3RyZWV2aWV3X2V4cGFuZGVyX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlw
cmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChHdGtFeHBhbmRlclN0eWxlKSBmbGFncywgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNT1pfR1RLX0VYUEFOREVSOgotICAgICAgICByZXR1cm4gbW96X2d0a19leHBh
bmRlcl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoR3RrRXhwYW5kZXJTdHlsZSkgZmxhZ3MsIGRpcmVj
dGlvbik7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9aX0dUS19FTlRSWToKICAgICAgICAg
ZW5zdXJlX2VudHJ5X3dpZGdldCgpOwogICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnUGFydHMtPmVudHJ5V2lkZ2V0LCBkaXJlY3Rpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRU5UUllfQ0FSRVQ6Ci0gICAgICAgIHJldHVybiBtb3pf
Z3RrX2NhcmV0X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgZGlyZWN0aW9uKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNT1pfR1RLX0RST1BET1dOOgogICAgICAgICByZXR1cm4g
bW96X2d0a19jb21ib19ib3hfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYm9vbGVhbikgZmxhZ3Ms
IGRpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19EUk9QRE9XTl9B
UlJPVzoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfY29tYm9fYm94X2VudHJ5X2J1dHRvbl9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUsIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRFJPUERPV05fRU5UUlk6Ci0gICAgICAgIGVuc3Vy
ZV9jb21ib19ib3hfZW50cnlfd2lkZ2V0cygpOwotICAgICAgICByZXR1cm4gbW96X2d0a19lbnRy
eV9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCwg
ZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX0NIRUNLQlVUVE9O
X0NPTlRBSU5FUjoKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9CVVRUT05fQ09OVEFJTkVSOgotICAg
ICAgICByZXR1cm4gbW96X2d0a19jb250YWluZXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXBy
ZWN0LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRn
ZXQgPT0gTU9aX0dUS19SQURJT0JVVFRPTl9DT05UQUlORVIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX0NIRUNLQlVUVE9OX0xBQkVMOgotICAgIGNhc2UgTU9aX0dUS19SQURJT0JVVFRP
Tl9MQUJFTDoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfdG9nZ2xlX2xhYmVsX3BhaW50KGRyYXdh
YmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAod2lkZ2V0ID09IE1PWl9HVEtfUkFESU9CVVRUT05fTEFCRUwpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xCQVI6Ci0gICAgICAgIHJldHVybiBtb3pf
Z3RrX3Rvb2xiYXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVE9PTEJBUl9TRVBBUkFUT1I6Ci0gICAg
ICAgIHJldHVybiBtb3pfZ3RrX3Rvb2xiYXJfc2VwYXJhdG9yX3BhaW50KGRyYXdhYmxlLCByZWN0
LCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xUSVA6
Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Rvb2x0aXBfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNs
aXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRlJB
TUU6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX2ZyYW1lX3BhaW50KGRyYXdhYmxlLCByZWN0LCBj
bGlwcmVjdCwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1JF
U0laRVI6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Jlc2l6ZXJfcGFpbnQoZHJhd2FibGUsIHJl
Y3QsIGNsaXByZWN0LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1PWl9HVEtfUFJPR1JFU1NC
QVI6CiAgICAgICAgIHJldHVybiBtb3pfZ3RrX3Byb2dyZXNzYmFyX3BhaW50KGRyYXdhYmxlLCBy
ZWN0LCBjbGlwcmVjdCwgZGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjc0LDU0ICsx
NDg5LDYgQEAgbW96X2d0a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwg
R2RrRHJhd2FibGUqIGRyYXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19wcm9ncmVzc19j
aHVua19wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTU9aX0dUS19UQUI6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3RhYl9wYWludChkcmF3
YWJsZSwgcmVjdCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
R3RrVGFiRmxhZ3MpIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1PWl9HVEtfVEFCUEFORUxTOgotICAgICAgICByZXR1cm4gbW96X2d0a190YWJwYW5lbHNfcGFp
bnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1PWl9HVEtfVEFCX1NDUk9MTEFSUk9XOgotICAgICAgICByZXR1cm4gbW96X2d0
a190YWJfc2Nyb2xsX2Fycm93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0Fycm93
VHlwZSkgZmxhZ3MsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dU
S19NRU5VQkFSOgotICAgICAgICByZXR1cm4gbW96X2d0a19tZW51X2Jhcl9wYWludChkcmF3YWJs
ZSwgcmVjdCwgY2xpcHJlY3QsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TU9aX0dUS19NRU5VUE9QVVA6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX21lbnVfcG9wdXBfcGFp
bnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1PWl9HVEtfTUVOVVNFUEFSQVRPUjoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtf
bWVudV9zZXBhcmF0b3JfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfTUVOVUlURU06Ci0gICAgICAgIHJldHVybiBtb3pfZ3Rr
X21lbnVfaXRlbV9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBmbGFncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19NRU5VQVJST1c6Ci0gICAgICAgIHJldHVybiBt
b3pfZ3RrX21lbnVfYXJyb3dfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVE9PTEJBUkJVVFRPTl9BUlJPVzoKLSAgICAg
ICAgcmV0dXJuIG1vel9ndGtfZG93bmFycm93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVj
dCwgc3RhdGUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfQ0hFQ0tNRU5VSVRF
TToKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9NRU5VSVRFTToKLSAgICAgICAgcmV0dXJuIG1vel9n
dGtfY2hlY2tfbWVudV9pdGVtX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2Jvb2xlYW4p
IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp
ZGdldCA9PSBNT1pfR1RLX1JBRElPTUVOVUlURU0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX1NQTElUVEVSX0hPUklaT05UQUw6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Zw
YW5lZF9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMOgotICAgICAgICByZXR1cm4g
bW96X2d0a19ocGFuZWRfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19XSU5ET1c6Ci0gICAgICAgIHJldHVybiBt
b3pfZ3RrX3dpbmRvd19wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIGRpcmVjdGlvbik7
Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGdfd2FybmluZygiVW5rbm93
biB3aWRnZXQgdHlwZTogJWQiLCB3aWRnZXQpOwogICAgIH0KQEAgLTMzNTQsMTEgKzE1MjEsNiBA
QCB2b2lkIG1vel9ndGtfZGVzdHJveV90aGVtZV9wYXJ0c193aWRnZXRzKEd0a1RoZW1lUGFydHMq
IHBhcnRzKQogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYXJ0
cy0+dG9vbHRpcFdpZGdldCkgewotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocGFydHMtPnRv
b2x0aXBXaWRnZXQpOwotICAgICAgICBwYXJ0cy0+dG9vbHRpcFdpZGdldCA9IE5VTEw7Ci0gICAg
fQotCiAgICAgaWYgKHBhcnRzLT5wcm90b1dpbmRvdykgewogICAgICAgICBndGtfd2lkZ2V0X2Rl
c3Ryb3kocGFydHMtPnByb3RvV2luZG93KTsKICAgICAgICAgcGFydHMtPnByb3RvV2luZG93ID0g
TlVMTDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaAppbmRleCBjMDBkYTk3Li5mZDNlOGYzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2luZy5oCkBAIC05MSw3ICs5MSw2IEBAIHR5cGVkZWYgc3Ry
dWN0IF9HdGtUaGVtZVBhcnRzIHsKICAgICBHdGtXaWRnZXQqIHJhZGlvYnV0dG9uV2lkZ2V0Owog
ICAgIEd0a1dpZGdldCogaG9yaXpTY3JvbGxiYXJXaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiB2ZXJ0
U2Nyb2xsYmFyV2lkZ2V0OwotICAgIEd0a1dpZGdldCogc3BpbldpZGdldDsKICAgICBHdGtXaWRn
ZXQqIGhTY2FsZVdpZGdldDsKICAgICBHdGtXaWRnZXQqIHZTY2FsZVdpZGdldDsKICAgICBHdGtX
aWRnZXQqIGVudHJ5V2lkZ2V0OwpAQCAtMTAzLDI4ICsxMDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBf
R3RrVGhlbWVQYXJ0cyB7CiAgICAgR3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5VGV4dGFyZWFXaWRn
ZXQ7CiAgICAgR3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0OwogICAgIEd0a1dp
ZGdldCogY29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCogaGFuZGxlQm94
V2lkZ2V0OwotICAgIEd0a1dpZGdldCogdG9vbGJhcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGZy
YW1lV2lkZ2V0OwotICAgIEd0a1dpZGdldCogc3RhdHVzYmFyV2lkZ2V0OwogICAgIEd0a1dpZGdl
dCogcHJvZ3Jlc1dpZGdldDsKLSAgICBHdGtXaWRnZXQqIHRhYldpZGdldDsKLSAgICBHdGtXaWRn
ZXQqIHRvb2x0aXBXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51QmFyV2lkZ2V0OwotICAgIEd0
a1dpZGdldCogbWVudUJhckl0ZW1XaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51UG9wdXBXaWRn
ZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51SXRlbVdpZGdldDsKLSAgICBHdGtXaWRnZXQqIGltYWdl
TWVudUl0ZW1XaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBjaGVja01lbnVJdGVtV2lkZ2V0OwotICAg
IEd0a1dpZGdldCogdHJlZVZpZXdXaWRnZXQ7Ci0gICAgR3RrVHJlZVZpZXdDb2x1bW4qIG1pZGRs
ZVRyZWVWaWV3Q29sdW1uOwotICAgIEd0a1dpZGdldCogdHJlZUhlYWRlckNlbGxXaWRnZXQ7Ci0g
ICAgR3RrV2lkZ2V0KiB0cmVlSGVhZGVyU29ydEFycm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCog
ZXhwYW5kZXJXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiB0b29sYmFyU2VwYXJhdG9yV2lkZ2V0Owot
ICAgIEd0a1dpZGdldCogbWVudVNlcGFyYXRvcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGhwYW5l
ZFdpZGdldDsKLSAgICBHdGtXaWRnZXQqIHZwYW5lZFdpZGdldDsKICAgICBHdGtXaWRnZXQqIHNj
cm9sbGVkV2luZG93V2lkZ2V0OwogfSBHdGtUaGVtZVBhcnRzOwogCkBAIC0xMzQsMjQgKzExMiw2
IEBAIHR5cGVkZWYgZW51bSB7CiAgIE1PWl9HVEtfU1RFUFBFUl9WRVJUSUNBTCAgICA9IDEgPDwg
MgogfSBHdGtTY3JvbGxiYXJCdXR0b25GbGFnczsKIAotLyoqIGZsYWdzIGZvciB0YWIgc3RhdGUg
KiovCi10eXBlZGVmIGVudW0gewotICAvKiBmaXJzdCBlaWdodCBiaXRzIGFyZSB1c2VkIHRvIHBh
c3MgYSBtYXJnaW4gKi8KLSAgTU9aX0dUS19UQUJfTUFSR0lOX01BU0sgICAgID0gMHhGRiwKLSAg
LyogYm90dG9tIHRhYnMgKi8KLSAgTU9aX0dUS19UQUJfQk9UVE9NICAgICAgICAgID0gMSA8PCA4
LAotICAvKiB0aGUgZmlyc3QgdGFiIGluIHRoZSBncm91cCAqLwotICBNT1pfR1RLX1RBQl9GSVJT
VCAgICAgICAgICAgPSAxIDw8IDksCi0gIC8qIHRoZSBzZWxlY3RlZCB0YWIgKi8KLSAgTU9aX0dU
S19UQUJfU0VMRUNURUQgICAgICAgID0gMSA8PCAxMAotfSBHdGtUYWJGbGFnczsKLQotLyoqIGZs
YWdzIGZvciBtZW51aXRlbXMgKiovCi10eXBlZGVmIGVudW0gewotICAvKiBtZW51aXRlbSBpcyBw
YXJ0IG9mIHRoZSBtZW51YmFyICovCi0gIE1PWl9UT1BMRVZFTF9NRU5VX0lURU0gICAgICA9IDEg
PDwgMAotfSBHdGtNZW51SXRlbUZsYWdzOwotCiAvKiBmdW5jdGlvbiB0eXBlIGZvciBtb3pfZ3Rr
X2VuYWJsZV9zdHlsZV9wcm9wcyAqLwogdHlwZWRlZiBnaW50ICgqc3R5bGVfcHJvcF90KShHdGtT
dHlsZSosIGNvbnN0IGdjaGFyKiwgZ2ludCk7CiAKQEAgLTE5MSw4MCArMTUxLDEzIEBAIHR5cGVk
ZWYgZW51bSB7CiAgIC8qIFBhaW50cyBhIEd0a1NjYWxlIHRodW1iLiAqLwogICBNT1pfR1RLX1ND
QUxFX1RIVU1CX0hPUklaT05UQUwsCiAgIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUwsCi0g
IC8qIFBhaW50cyBhIEd0a1NwaW5CdXR0b24gKi8KLSAgTU9aX0dUS19TUElOQlVUVE9OLAotICBN
T1pfR1RLX1NQSU5CVVRUT05fVVAsCi0gIE1PWl9HVEtfU1BJTkJVVFRPTl9ET1dOLAotICBNT1pf
R1RLX1NQSU5CVVRUT05fRU5UUlksCi0gIC8qIFBhaW50cyB0aGUgZ3JpcHBlciBvZiBhIEd0a0hh
bmRsZUJveC4gKi8KLSAgTU9aX0dUS19HUklQUEVSLAotICAvKiBQYWludHMgYSBHdGtFbnRyeS4g
Ki8KICAgTU9aX0dUS19FTlRSWSwKLSAgLyogUGFpbnRzIHRoZSBuYXRpdmUgY2FyZXQgKG9yIGlu
IEdUSy1zcGVhazogaW5zZXJ0aW9uIGN1cnNvcikgKi8KLSAgTU9aX0dUS19FTlRSWV9DQVJFVCwK
ICAgLyogUGFpbnRzIGEgR3RrT3B0aW9uTWVudS4gKi8KICAgTU9aX0dUS19EUk9QRE9XTiwKLSAg
LyogUGFpbnRzIGEgZHJvcGRvd24gYXJyb3cgKGEgR3RrQnV0dG9uIGNvbnRhaW5pbmcgYSBkb3du
IEd0a0Fycm93KS4gKi8KLSAgTU9aX0dUS19EUk9QRE9XTl9BUlJPVywKLSAgLyogUGFpbnRzIGFu
IGVudHJ5IGluIGFuIGVkaXRhYmxlIG9wdGlvbiBtZW51ICovCi0gIE1PWl9HVEtfRFJPUERPV05f
RU5UUlksCi0gIC8qIFBhaW50cyB0aGUgY29udGFpbmVyIHBhcnQgb2YgYSBHdGtDaGVja0J1dHRv
bi4gKi8KLSAgTU9aX0dUS19DSEVDS0JVVFRPTl9DT05UQUlORVIsCi0gIC8qIFBhaW50cyB0aGUg
Y29udGFpbmVyIHBhcnQgb2YgYSBHdGtSYWRpb0J1dHRvbi4gKi8KLSAgTU9aX0dUS19SQURJT0JV
VFRPTl9DT05UQUlORVIsCi0gIC8qIFBhaW50cyB0aGUgbGFiZWwgb2YgYSBHdGtDaGVja0J1dHRv
biAoZm9jdXMgb3V0bGluZSkgKi8KLSAgTU9aX0dUS19DSEVDS0JVVFRPTl9MQUJFTCwKLSAgLyog
UGFpbnRzIHRoZSBsYWJlbCBvZiBhIEd0a1JhZGlvQnV0dG9uIChmb2N1cyBvdXRsaW5lKSAqLwot
ICBNT1pfR1RLX1JBRElPQlVUVE9OX0xBQkVMLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQg
b2YgYSBHdGtIYW5kbGVCb3guICovCi0gIE1PWl9HVEtfVE9PTEJBUiwKLSAgLyogUGFpbnRzIGEg
dG9vbGJhciBzZXBhcmF0b3IgKi8KLSAgTU9aX0dUS19UT09MQkFSX1NFUEFSQVRPUiwKLSAgLyog
UGFpbnRzIGEgR3RrVG9vbFRpcCAqLwotICBNT1pfR1RLX1RPT0xUSVAsCi0gIC8qIFBhaW50cyBh
IEd0a0ZyYW1lIChlLmcuIGEgc3RhdHVzIGJhciBwYW5lbCkuICovCi0gIE1PWl9HVEtfRlJBTUUs
Ci0gIC8qIFBhaW50cyBhIHJlc2l6ZSBncmlwIGZvciBhIEd0a1dpbmRvdyAqLwotICBNT1pfR1RL
X1JFU0laRVIsCiAgIC8qIFBhaW50cyBhIEd0a1Byb2dyZXNzQmFyLiAqLwogICBNT1pfR1RLX1BS
T0dSRVNTQkFSLAogICAvKiBQYWludHMgYSBwcm9ncmVzcyBjaHVuayBvZiBhIEd0a1Byb2dyZXNz
QmFyLiAqLwotICBNT1pfR1RLX1BST0dSRVNTX0NIVU5LLAotICAvKiBQYWludHMgYSB0YWIgb2Yg
YSBHdGtOb3RlYm9vay4gZmxhZ3MgaXMgYSBHdGtUYWJGbGFncywgZGVmaW5lZCBhYm92ZS4gKi8K
LSAgTU9aX0dUS19UQUIsCi0gIC8qIFBhaW50cyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9m
IGEgR3RrTm90ZWJvb2suICovCi0gIE1PWl9HVEtfVEFCUEFORUxTLAotICAvKiBQYWludHMgYSBH
dGtBcnJvdyBmb3IgYSBHdGtOb3RlYm9vay4gZmxhZ3MgaXMgYSBHdGtBcnJvd1R5cGUuICovCi0g
IE1PWl9HVEtfVEFCX1NDUk9MTEFSUk9XLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQgYW5k
IGJvcmRlciBvZiBhIEd0a1RyZWVWaWV3ICovCi0gIE1PWl9HVEtfVFJFRVZJRVcsCi0gIC8qIFBh
aW50cyB0cmVlaGVhZGVyIGNlbGxzICovCi0gIE1PWl9HVEtfVFJFRV9IRUFERVJfQ0VMTCwKLSAg
LyogUGFpbnRzIHNvcnQgYXJyb3dzIGluIHRyZWVoZWFkZXIgY2VsbHMgKi8KLSAgTU9aX0dUS19U
UkVFX0hFQURFUl9TT1JUQVJST1csCi0gIC8qIFBhaW50cyBhbiBleHBhbmRlciBmb3IgYSBHdGtU
cmVlVmlldyAqLwotICBNT1pfR1RLX1RSRUVWSUVXX0VYUEFOREVSLAotICAvKiBQYWludHMgYSBH
dGtFeHBhbmRlciAqLwotICBNT1pfR1RLX0VYUEFOREVSLAotICAvKiBQYWludHMgdGhlIGJhY2tn
cm91bmQgb2YgdGhlIG1lbnUgYmFyLiAqLwotICBNT1pfR1RLX01FTlVCQVIsCi0gIC8qIFBhaW50
cyB0aGUgYmFja2dyb3VuZCBvZiBtZW51cywgY29udGV4dCBtZW51cy4gKi8KLSAgTU9aX0dUS19N
RU5VUE9QVVAsCi0gIC8qIFBhaW50cyB0aGUgYXJyb3cgb2YgbWVudWl0ZW1zIHRoYXQgY29udGFp
biBzdWJtZW51cyAqLwotICBNT1pfR1RLX01FTlVBUlJPVywKLSAgLyogUGFpbnRzIGFuIGFycm93
IHRoYXQgcG9pbnRzIGRvd24gKi8KLSAgTU9aX0dUS19UT09MQkFSQlVUVE9OX0FSUk9XLAotICAv
KiBQYWludHMgaXRlbXMgb2YgbWVudWJhciBhbmQgcG9wdXBzLiAqLwotICBNT1pfR1RLX01FTlVJ
VEVNLAotICBNT1pfR1RLX0NIRUNLTUVOVUlURU0sCi0gIE1PWl9HVEtfUkFESU9NRU5VSVRFTSwK
LSAgTU9aX0dUS19NRU5VU0VQQVJBVE9SLAotICAvKiBQYWludHMgYSBHdGtWUGFuZWQgc2VwYXJh
dG9yICovCi0gIE1PWl9HVEtfU1BMSVRURVJfSE9SSVpPTlRBTCwKLSAgLyogUGFpbnRzIGEgR3Rr
SFBhbmVkIHNlcGFyYXRvciAqLwotICBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMLAotICAvKiBQ
YWludHMgdGhlIGJhY2tncm91bmQgb2YgYSB3aW5kb3csIGRpYWxvZyBvciBwYWdlLiAqLwotICBN
T1pfR1RLX1dJTkRPVworICBNT1pfR1RLX1BST0dSRVNTX0NIVU5LCiB9IEd0a1RoZW1lV2lkZ2V0
VHlwZTsKIAogLyoqKiBHZW5lcmFsIGxpYnJhcnkgZnVuY3Rpb25zICoqKi8KQEAgLTM2MiwxNiAr
MjU1LDYgQEAgbW96X2d0a19jaGVja2JveF9nZXRfbWV0cmljcyhnaW50KiBpbmRpY2F0b3Jfc2l6
ZSwgZ2ludCogaW5kaWNhdG9yX3NwYWNpbmcpOwogZ2ludAogbW96X2d0a19yYWRpb19nZXRfbWV0
cmljcyhnaW50KiBpbmRpY2F0b3Jfc2l6ZSwgZ2ludCogaW5kaWNhdG9yX3NwYWNpbmcpOwogCi0v
KioKLSAqIEdldCB0aGUgaW5uZXItYm9yZGVyIHZhbHVlIGZvciBhIEd0a0J1dHRvbiB3aWRnZXQg
KGJ1dHRvbiBvciB0cmVlIGhlYWRlcikKLSAqIHdpZGdldDogICAgICAgICAgICAgW0lOXSAgdGhl
IHdpZGdldCB0byBnZXQgdGhlIGJvcmRlciB2YWx1ZSBmb3IgCi0gKiBpbm5lcl9ib3JkZXI6ICAg
ICAgIFtPVVRdIHRoZSBpbm5lciBib3JkZXIKLSAqCi0gKiByZXR1cm5zOiAgIE1PWl9HVEtfU1VD
Q0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8K
LWdpbnQKLW1vel9ndGtfYnV0dG9uX2dldF9pbm5lcl9ib3JkZXIoR3RrV2lkZ2V0KiB3aWRnZXQs
IEd0a0JvcmRlciogaW5uZXJfYm9yZGVyKTsKLQogLyoqIEdldCB0aGUgZm9jdXMgbWV0cmljcyBm
b3IgYSB0cmVlaGVhZGVyY2VsbCwgYnV0dG9uLCBjaGVja2JveCwgb3IgcmFkaW8gYnV0dG9uLgog
ICogd2lkZ2V0OiAgICAgICAgICAgICBbSU5dICB0aGUgd2lkZ2V0IHRvIGdldCB0aGUgZm9jdXMg
bWV0cmljcyBmb3IgICAgCiAgKiBpbnRlcmlvcl9mb2N1czogICAgIFtPVVRdIHdoZXRoZXIgdGhl
IGZvY3VzIGlzIGRyYXduIGFyb3VuZCB0aGUKQEAgLTQwNiw5MSArMjg5LDEyIEBAIGdpbnQKIG1v
el9ndGtfZ2V0X3Njcm9sbGJhcl9tZXRyaWNzKE1vekd0a1Njcm9sbGJhck1ldHJpY3MqIG1ldHJp
Y3MpOwogCiAvKioKLSAqIEdldCB0aGUgZGVzaXJlZCBzaXplIG9mIGEgZHJvcGRvd24gYXJyb3cg
YnV0dG9uCi0gKiB3aWR0aDogICBbT1VUXSB0aGUgZGVzaXJlZCB3aWR0aAotICogaGVpZ2h0OiAg
W09VVF0gdGhlIGRlc2lyZWQgaGVpZ2h0Ci0gKgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUND
RVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwot
Z2ludCBtb3pfZ3RrX2dldF9jb21ib19ib3hfZW50cnlfYnV0dG9uX3NpemUoZ2ludCogd2lkdGgs
IGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSBzY3Jv
bGwgYXJyb3cgd2lkZ2V0Ci0gKiB3aWR0aDogICBbT1VUXSB0aGUgZGVzaXJlZCB3aWR0aAotICog
aGVpZ2h0OiAgW09VVF0gdGhlIGRlc2lyZWQgaGVpZ2h0Ci0gKgotICogcmV0dXJuczogICAgTU9a
X0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndp
c2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF90YWJfc2Nyb2xsX2Fycm93X3NpemUoZ2ludCogd2lk
dGgsIGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSB0
b29sYmFyIGJ1dHRvbiBkcm9wZG93biBhcnJvdwotICogd2lkdGg6ICAgW09VVF0gdGhlIGRlc2ly
ZWQgd2lkdGgKLSAqIGhlaWdodDogIFtPVVRdIHRoZSBkZXNpcmVkIGhlaWdodAotICoKLSAqIHJl
dHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9y
IGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfZG93bmFycm93X3NpemUoZ2lu
dCogd2lkdGgsIGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUg
b2YgYSB0b29sYmFyIHNlcGFyYXRvcgotICogc2l6ZTogICAgW09VVF0gdGhlIGRlc2lyZWQgd2lk
dGgKLSAqCi0gKiByZXR1cm5zOiBNT1pfR1RLX1NVQ0NFU1MgaWYgdGhlcmUgd2FzIG5vIGVycm9y
LCBhbiBlcnJvciBjb2RlIG90aGVyd2lzZQotICovCi1naW50IG1vel9ndGtfZ2V0X3Rvb2xiYXJf
c2VwYXJhdG9yX3dpZHRoKGdpbnQqIHNpemUpOwotCi0vKioKLSAqIEdldCB0aGUgc2l6ZSBvZiBh
IHJlZ3VsYXIgR1RLIGV4cGFuZGVyIHRoYXQgc2hvd3MvaGlkZXMgY29udGVudAotICogc2l6ZTog
ICAgW09VVF0gdGhlIHNpemUgb2YgdGhlIEdUSyBleHBhbmRlciwgc2l6ZSA9IHdpZHRoID0gaGVp
Z2h0LgotICoKLSAqIHJldHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8g
ZXJyb3IsIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfZXhw
YW5kZXJfc2l6ZShnaW50KiBzaXplKTsKLQotLyoqCi0gKiBHZXQgdGhlIHNpemUgb2YgYSB0cmVl
dmlldydzIGV4cGFuZGVyICh3ZSBjYWxsIHRoZW0gdHdpc3RpZXMpCi0gKiBzaXplOiAgICBbT1VU
XSB0aGUgc2l6ZSBvZiB0aGUgR1RLIGV4cGFuZGVyLCBzaXplID0gd2lkdGggPSBoZWlnaHQuCi0g
KgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwg
YW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF90cmVldmlld19l
eHBhbmRlcl9zaXplKGdpbnQqIHNpemUpOwotCi0vKioKLSAqIEdldCB0aGUgZGVzaXJlZCBoZWln
aHQgb2YgYSBtZW51IHNlcGFyYXRvcgotICogc2l6ZTogICAgW09VVF0gdGhlIGRlc2lyZWQgaGVp
Z2h0Ci0gKgotICogcmV0dXJuczogTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJv
ciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF9tZW51X3Nl
cGFyYXRvcl9oZWlnaHQoZ2ludCogc2l6ZSk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNp
emUgb2YgYSBzcGxpdHRlcgotICogb3JpZW50YXRpb246ICAgW0lOXSAgR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwgb3IgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMCi0gKiBzaXplOiAgICAgICAg
ICBbT1VUXSB3aWR0aCBvciBoZWlnaHQgb2YgdGhlIHNwbGl0dGVyIGhhbmRsZQotICoKLSAqIHJl
dHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9y
IGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19zcGxpdHRlcl9nZXRfbWV0cmljcyhn
aW50IG9yaWVudGF0aW9uLCBnaW50KiBzaXplKTsKLQotLyoqCiAgKiBSZXRyaWV2ZSBhbiBhY3R1
YWwgR1RLIHNjcm9sbGJhciB3aWRnZXQgZm9yIHN0eWxlIGFuYWx5c2lzLiBJdCB3aWxsIG5vdAog
ICogYmUgbW9kaWZpZWQuCiAgKi8KIEd0a1dpZGdldCogbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dp
ZGdldCh2b2lkKTsKIAogLyoqCi0gKiBHZXQgdGhlIFlUSElDS05FU1Mgb2YgYSB0YWIgKG5vdGVi
b29rIGV4dGVuc2lvbikuCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfdGFiX3RoaWNrbmVzcyh2b2lk
KTsKLQotLyoqCi0gKiBHZXQgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyIG9yIG5v
dCB0byB1c2UgaW1hZ2VzIGluIG1lbnVzLgotICogSWYgVFJVRSwgdXNlIGltYWdlcyBpbiBtZW51
cy4KLSAqLwotZ2Jvb2xlYW4gbW96X2d0a19pbWFnZXNfaW5fbWVudXModm9pZCk7Ci0KLS8qKgog
ICogUmV0cmlldmUgYW4gYWN0dWFsIEdUSyBwcm9ncmVzcyBiYXIgd2lkZ2V0IGZvciBzdHlsZSBh
bmFseXNpcy4gSXQgd2lsbCBub3QKICAqIGJlIG1vZGlmaWVkLgogICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69948</attachid>
            <date>2010-10-06 09:15:28 -0700</date>
            <delta_ts>2010-10-06 10:04:49 -0700</delta_ts>
            <desc>New version of the patch</desc>
            <filename>remove-unused-code.diff</filename>
            <type>text/plain</type>
            <size>85657</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzI2MWI0MS4uOTAyZTBiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0xMC0wNiAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gUmVtb3ZlIHVudXNlZCBjb2RlIGZyb20gZ3Rr
MmRyYXdpbmcuYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDcwODYKKworICAgICAgICBndGsyZHJhd2luZy5jIHdhcyBjb3BpZWQgZnJvbSBtb3ppbGxh
IGFuZCBjb250YWlucyBhIGxvdCBvZiBjb2RlIHRoYXQgaXMgbm90CisgICAgICAgIHVzZWQgYnkg
V2ViS2l0LiBNb3N0IG9mIHRoYXQgdW51c2VkIGNvZGUgaXMgdW5jb21wYXRpYmxlIHdpdGggZ3Rr
Mywgc28KKyAgICAgICAgcmVtb3ZpbmcgaXQgd2lsbCBtYWtlIGVhc2llciBwb3J0aW5nIHRvIGd0
azMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYzoKKyAgICAgICAgKG1v
el9ndGtfZ2V0X3dpZGdldF9ib3JkZXIpOgorICAgICAgICAobW96X2d0a193aWRnZXRfcGFpbnQp
OgorICAgICAgICAobW96X2d0a19kZXN0cm95X3RoZW1lX3BhcnRzX3dpZGdldHMpOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmg6CisKIDIwMTAtMTAtMDEgIFZpbmNlbnQgU2No
ZWliICA8c2NoZWliQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBS
b2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMg
Yi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGsyZHJhd2luZy5jCmluZGV4IGZkNzcwZDIuLmM1NWNk
N2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0azJkcmF3aW5nLmMKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvZ3RrMmRyYXdpbmcuYwpAQCAtMTIyLDI2ICsxMjIsNiBAQCBl
bnN1cmVfYnV0dG9uX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVfaHBhbmVkX3dp
ZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPmhwYW5lZFdpZGdldCkgewotICAgICAgICBnUGFy
dHMtPmhwYW5lZFdpZGdldCA9IGd0a19ocGFuZWRfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdl
dF9wcm90b3R5cGUoZ1BhcnRzLT5ocGFuZWRXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3ZwYW5lZF93aWRnZXQoKQot
ewotICAgIGlmICghZ1BhcnRzLT52cGFuZWRXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT52cGFu
ZWRXaWRnZXQgPSBndGtfdnBhbmVkX25ldygpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90
eXBlKGdQYXJ0cy0+dnBhbmVkV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VD
Q0VTUzsKLX0KLQotc3RhdGljIGdpbnQKIGVuc3VyZV90b2dnbGVfYnV0dG9uX3dpZGdldCgpCiB7
CiAgICAgaWYgKCFnUGFydHMtPnRvZ2dsZUJ1dHRvbldpZGdldCkgewpAQCAtMjAxLDE2ICsxODEs
NiBAQCBlbnN1cmVfc2Nyb2xsYmFyX3dpZGdldCgpCiB9CiAKIHN0YXRpYyBnaW50Ci1lbnN1cmVf
c3Bpbl93aWRnZXQoKQotewotICBpZiAoIWdQYXJ0cy0+c3BpbldpZGdldCkgewotICAgIGdQYXJ0
cy0+c3BpbldpZGdldCA9IGd0a19zcGluX2J1dHRvbl9uZXcoTlVMTCwgMSwgMCk7Ci0gICAgc2V0
dXBfd2lkZ2V0X3Byb3RvdHlwZShnUGFydHMtPnNwaW5XaWRnZXQpOwotICB9Ci0gIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50CiBlbnN1cmVfc2NhbGVfd2lkZ2V0KCkK
IHsKICAgaWYgKCFnUGFydHMtPmhTY2FsZVdpZGdldCkgewpAQCAtMzM3LDE3MSArMzA3LDYgQEAg
ZW5zdXJlX2NvbWJvX2JveF93aWRnZXRzKCkKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwog
fQogCi0vKiBXZSBuZWVkIHRvIGhhdmUgcG9pbnRlcnMgdG8gdGhlIGlubmVyIHdpZGdldHMgKGVu
dHJ5LCBidXR0b24sIGFycm93KSBvZgotICogdGhlIENvbWJvQm94RW50cnkgdG8gZ2V0IHRoZSBj
b3JyZWN0IHJlbmRlcmluZyBmcm9tIHRoZW1lIGVuZ2luZXMgd2hpY2gKLSAqIHNwZWNpYWwgY2Fz
ZXMgdGhlaXIgbG9vay4gU2luY2UgdGhlIGlubmVyIGxheW91dCBjYW4gY2hhbmdlLCB3ZSBhc2sg
R1RLCi0gKiB0byBOVUxMIG91ciBwb2ludGVycyB3aGVuIHRoZXkgYXJlIGFib3V0IHRvIGJlY29t
ZSBpbnZhbGlkIGJlY2F1c2UgdGhlCi0gKiBjb3JyZXNwb25kaW5nIHdpZGdldHMgZG9uJ3QgZXhp
c3QgYW55bW9yZS4gSXQncyB0aGUgcm9sZSBvZgotICogZ19vYmplY3RfYWRkX3dlYWtfcG9pbnRl
cigpLgotICogTm90ZSB0aGF0IGlmIHdlIGRvbid0IGZpbmQgdGhlIGlubmVyIHdpZGdldHMgKHdo
aWNoIHNob3VsZG4ndCBoYXBwZW4pLCB3ZQotICogZmFsbGJhY2sgdG8gdXNlIGdlbmVyaWMgIm5v
bi1pbm5lciIgd2lkZ2V0cywgYW5kIHRoZXkgZG9uJ3QgbmVlZCB0aGF0IGtpbmQKLSAqIG9mIHdl
YWsgcG9pbnRlciBzaW5jZSB0aGV5IGFyZSBleHBsaWNpdCBjaGlsZHJlbiBvZiBnUGFydHMtPnBy
b3RvV2luZG93IGFuZCBhcwotICogc3VjaCBHVEsgaG9sZHMgYSBzdHJvbmcgcmVmZXJlbmNlIHRv
IHRoZW0uICovCi1zdGF0aWMgdm9pZAotbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5X2lubmVy
X3dpZGdldHMoR3RrV2lkZ2V0ICp3aWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBncG9pbnRlciBjbGllbnRfZGF0YSkKLXsKLSAgICBpZiAoR1RLX0lTX1RP
R0dMRV9CVVRUT04od2lkZ2V0KSkgewotICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0
b25XaWRnZXQgPSB3aWRnZXQ7Ci0gICAgICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19P
QkpFQ1Qod2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3BvaW50
ZXIpICZnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRnZXQpOwotICAgIH0gZWxzZSBpZiAo
R1RLX0lTX0VOVFJZKHdpZGdldCkpIHsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4
dGFyZWFXaWRnZXQgPSB3aWRnZXQ7Ci0gICAgICAgIGdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIo
R19PQkpFQ1Qod2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ3Bv
aW50ZXIpICZnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCk7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHJldHVybjsKLSAgICBndGtfd2lkZ2V0X3JlYWxpemUod2lkZ2V0KTsKLSAgICBn
X29iamVjdF9zZXRfZGF0YShHX09CSkVDVCh3aWRnZXQpLCAidHJhbnNwYXJlbnQtYmctaGludCIs
IEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1tb3pfZ3RrX2dldF9j
b21ib19ib3hfZW50cnlfYXJyb3coR3RrV2lkZ2V0ICp3aWRnZXQsIGdwb2ludGVyIGNsaWVudF9k
YXRhKQotewotICAgIGlmIChHVEtfSVNfQVJST1cod2lkZ2V0KSkgewotICAgICAgICBnUGFydHMt
PmNvbWJvQm94RW50cnlBcnJvd1dpZGdldCA9IHdpZGdldDsKLSAgICAgICAgZ19vYmplY3RfYWRk
X3dlYWtfcG9pbnRlcihHX09CSkVDVCh3aWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChncG9pbnRlcikgJmdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0KTsK
LSAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKHdpZGdldCk7Ci0gICAgICAgIGdfb2JqZWN0X3Nl
dF9kYXRhKEdfT0JKRUNUKHdpZGdldCksICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19Q
T0lOVEVSKFRSVUUpKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfY29tYm9fYm94
X2VudHJ5X3dpZGdldHMoKQotewotICAgIEd0a1dpZGdldCogYnV0dG9uQ2hpbGQ7Ci0KLSAgICBp
ZiAoZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQgJiYKLSAgICAgICAgICAgIGdQ
YXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdldCAmJgotICAgICAgICAgICAgZ1BhcnRzLT5j
b21ib0JveEVudHJ5QXJyb3dXaWRnZXQpCi0gICAgICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7
Ci0KLSAgICAvKiBDcmVhdGUgYSBDb21ib0JveEVudHJ5IGlmIG5lZWRlZCAqLwotICAgIGlmICgh
Z1BhcnRzLT5jb21ib0JveEVudHJ5V2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hF
bnRyeVdpZGdldCA9IGd0a19jb21ib19ib3hfZW50cnlfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dp
ZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5jb21ib0JveEVudHJ5V2lkZ2V0KTsKLSAgICB9Ci0KLSAg
ICAvKiBHZXQgaXRzIGlubmVyIEVudHJ5IGFuZCBCdXR0b24gKi8KLSAgICBndGtfY29udGFpbmVy
X2ZvcmFsbChHVEtfQ09OVEFJTkVSKGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeVdpZGdldCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgbW96X2d0a19nZXRfY29tYm9fYm94X2VudHJ5X2lubmVyX3dp
ZGdldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICBpZiAoIWdQYXJ0
cy0+Y29tYm9Cb3hFbnRyeVRleHRhcmVhV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3VyZV9lbnRyeV93
aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5VGV4dGFyZWFXaWRnZXQgPSBn
UGFydHMtPmVudHJ5V2lkZ2V0OwotICAgIH0KLQotICAgIGlmIChnUGFydHMtPmNvbWJvQm94RW50
cnlCdXR0b25XaWRnZXQpIHsKLSAgICAgICAgLyogR2V0IHRoZSBBcnJvdyBpbnNpZGUgdGhlIEJ1
dHRvbiAqLwotICAgICAgICBidXR0b25DaGlsZCA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4o
Z1BhcnRzLT5jb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0KSk7Ci0gICAgICAgIGlmIChHVEtfSVNf
SEJPWChidXR0b25DaGlsZCkpIHsKLSAgICAgICAgICAgIC8qIGFwcGVhcnMtYXMtbGlzdCA9IEZB
TFNFLCBjZWxsLXZpZXcgPSBUUlVFOyB0aGUgYnV0dG9uCi0gICAgICAgICAgICAgKiBjb250YWlu
cyBhbiBoYm94LiBUaGlzIGhib3ggaXMgdGhlcmUgYmVjYXVzZSBDb21ib0JveEVudHJ5Ci0gICAg
ICAgICAgICAgKiBpbmhlcml0cyBmcm9tIENvbWJvQm94IHdoaWNoIG5lZWRzIHRvIHBsYWNlIGEg
Y2VsbCByZW5kZXJlciwKLSAgICAgICAgICAgICAqIGEgc2VwYXJhdG9yLCBhbmQgYW4gYXJyb3cg
aW4gdGhlIGJ1dHRvbiB3aGVuIGFwcGVhcnMtYXMtbGlzdAotICAgICAgICAgICAgICogaXMgRkFM
U0UuIEhlcmUgdGhlIGhib3ggc2hvdWxkIG9ubHkgY29udGFpbiBhbiBhcnJvdywgc2luY2UKLSAg
ICAgICAgICAgICAqIGEgQ29tYm9Cb3hFbnRyeSBkb2Vzbid0IG5lZWQgYWxsIHRob3NlIHdpZGdl
dHMgaW4gdGhlCi0gICAgICAgICAgICAgKiBidXR0b24uICovCi0gICAgICAgICAgICBndGtfY29u
dGFpbmVyX2ZvcmFsbChHVEtfQ09OVEFJTkVSKGJ1dHRvbkNoaWxkKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vel9ndGtfZ2V0X2NvbWJvX2JveF9lbnRyeV9hcnJvdywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICB9IGVsc2UgaWYo
R1RLX0lTX0FSUk9XKGJ1dHRvbkNoaWxkKSkgewotICAgICAgICAgICAgLyogYXBwZWFycy1hcy1s
aXN0ID0gVFJVRSwgb3IgY2VsbC12aWV3ID0gRkFMU0U7Ci0gICAgICAgICAgICAgKiB0aGUgYnV0
dG9uIG9ubHkgY29udGFpbnMgYW4gYXJyb3cgKi8KLSAgICAgICAgICAgIGdQYXJ0cy0+Y29tYm9C
b3hFbnRyeUFycm93V2lkZ2V0ID0gYnV0dG9uQ2hpbGQ7Ci0gICAgICAgICAgICBnX29iamVjdF9h
ZGRfd2Vha19wb2ludGVyKEdfT0JKRUNUKGJ1dHRvbkNoaWxkKSwgKGdwb2ludGVyKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ1BhcnRzLT5jb21ib0JveEVudHJ5QXJy
b3dXaWRnZXQpOwotICAgICAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKGdQYXJ0cy0+Y29tYm9C
b3hFbnRyeUFycm93V2lkZ2V0KTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JK
RUNUKGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lOVEVSKFRSVUUp
KTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFNob3VsZG4ndCBiZSByZWFj
aGVkIHdpdGggY3VycmVudCBpbnRlcm5hbCBndGsgaW1wbGVtZW50YXRpb247Ci0gICAgICAgICAq
IHdlIHVzZSBhIGdlbmVyaWMgdG9nZ2xlIGJ1dHRvbiBhcyBsYXN0IHJlc29ydCBmYWxsYmFjayB0
byBhdm9pZAotICAgICAgICAgKiBjcmFzaGluZy4gKi8KLSAgICAgICAgZW5zdXJlX3RvZ2dsZV9i
dXR0b25fd2lkZ2V0KCk7Ci0gICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdl
dCA9IGdQYXJ0cy0+dG9nZ2xlQnV0dG9uV2lkZ2V0OwotICAgIH0KLQotICAgIGlmICghZ1BhcnRz
LT5jb21ib0JveEVudHJ5QXJyb3dXaWRnZXQpIHsKLSAgICAgICAgLyogU2hvdWxkbid0IGJlIHJl
YWNoZWQgd2l0aCBjdXJyZW50IGludGVybmFsIGd0ayBpbXBsZW1lbnRhdGlvbjsKLSAgICAgICAg
ICogd2UgZ1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCBhcyBsYXN0IHJlc29ydCBmYWxsYmFjayB0
byBhdm9pZAotICAgICAgICAgKiBjcmFzaGluZy4gKi8KLSAgICAgICAgZW5zdXJlX2J1dHRvbl9h
cnJvd193aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5jb21ib0JveEVudHJ5QXJyb3dXaWRnZXQg
PSBnUGFydHMtPmJ1dHRvbkFycm93V2lkZ2V0OwotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RL
X1NVQ0NFU1M7Ci19Ci0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9oYW5kbGVib3hfd2lkZ2V0KCkK
LXsKLSAgICBpZiAoIWdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0KSB7Ci0gICAgICAgIGdQYXJ0cy0+
aGFuZGxlQm94V2lkZ2V0ID0gZ3RrX2hhbmRsZV9ib3hfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dp
ZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5oYW5kbGVCb3hXaWRnZXQpOwotICAgIH0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3Rvb2xiYXJfd2lk
Z2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+dG9vbGJhcldpZGdldCkgewotICAgICAgICBlbnN1
cmVfaGFuZGxlYm94X3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPnRvb2xiYXJXaWRnZXQgPSBn
dGtfdG9vbGJhcl9uZXcoKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihnUGFydHMtPmhhbmRsZUJveFdpZGdldCksIGdQYXJ0cy0+dG9vbGJhcldpZGdldCk7Ci0gICAg
ICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPnRvb2xiYXJXaWRnZXQpOwotICAgICAgICBn
X29iamVjdF9zZXRfZGF0YShHX09CSkVDVChnUGFydHMtPnRvb2xiYXJXaWRnZXQpLCAidHJhbnNw
YXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgfQotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfdG9vbGJhcl9zZXBh
cmF0b3Jfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+dG9vbGJhclNlcGFyYXRvcldpZGdl
dCkgewotICAgICAgICBlbnN1cmVfdG9vbGJhcl93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT50
b29sYmFyU2VwYXJhdG9yV2lkZ2V0ID0gR1RLX1dJREdFVChndGtfc2VwYXJhdG9yX3Rvb2xfaXRl
bV9uZXcoKSk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT50b29sYmFy
U2VwYXJhdG9yV2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLWVuc3VyZV90b29sdGlwX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFy
dHMtPnRvb2x0aXBXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT50b29sdGlwV2lkZ2V0ID0gZ3Rr
X3dpbmRvd19uZXcoR1RLX1dJTkRPV19QT1BVUCk7Ci0gICAgICAgIGd0a193aWRnZXRfcmVhbGl6
ZShnUGFydHMtPnRvb2x0aXBXaWRnZXQpOwotICAgICAgICBtb3pfZ3RrX3NldF93aWRnZXRfbmFt
ZShnUGFydHMtPnRvb2x0aXBXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3RhYl93aWRnZXQoKQotewotICAgIGlmICgh
Z1BhcnRzLT50YWJXaWRnZXQpIHsKLSAgICAgICAgZ1BhcnRzLT50YWJXaWRnZXQgPSBndGtfbm90
ZWJvb2tfbmV3KCk7Ci0gICAgICAgIHNldHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT50YWJX
aWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCiBzdGF0aWMg
Z2ludAogZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpCiB7CkBAIC01MTMsMjAwICszMTgsNiBAQCBl
bnN1cmVfcHJvZ3Jlc3Nfd2lkZ2V0KCkKIH0KIAogc3RhdGljIGdpbnQKLWVuc3VyZV9zdGF0dXNi
YXJfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+c3RhdHVzYmFyV2lkZ2V0KSB7Ci0gICAg
ICBnUGFydHMtPnN0YXR1c2JhcldpZGdldCA9IGd0a19zdGF0dXNiYXJfbmV3KCk7Ci0gICAgICBz
ZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+c3RhdHVzYmFyV2lkZ2V0KTsKLSAgICB9Ci0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9mcmFt
ZV93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT5mcmFtZVdpZGdldCkgewotICAgICAgICBl
bnN1cmVfc3RhdHVzYmFyX3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPmZyYW1lV2lkZ2V0ID0g
Z3RrX2ZyYW1lX25ldyhOVUxMKTsKLSAgICAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRB
SU5FUihnUGFydHMtPnN0YXR1c2JhcldpZGdldCksIGdQYXJ0cy0+ZnJhbWVXaWRnZXQpOwotICAg
ICAgICBndGtfd2lkZ2V0X3JlYWxpemUoZ1BhcnRzLT5mcmFtZVdpZGdldCk7Ci0gICAgfQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9i
YXJfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQYXJ0cy0+bWVudUJhcldpZGdldCkgewotICAgICAg
ICBnUGFydHMtPm1lbnVCYXJXaWRnZXQgPSBndGtfbWVudV9iYXJfbmV3KCk7Ci0gICAgICAgIHNl
dHVwX3dpZGdldF9wcm90b3R5cGUoZ1BhcnRzLT5tZW51QmFyV2lkZ2V0KTsKLSAgICB9Ci0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV9tZW51X2Jh
cl9pdGVtX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1lbnVCYXJJdGVtV2lkZ2V0KSB7
Ci0gICAgICAgIGVuc3VyZV9tZW51X2Jhcl93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51
QmFySXRlbVdpZGdldCA9IGd0a19tZW51X2l0ZW1fbmV3KCk7Ci0gICAgICAgIGd0a19tZW51X3No
ZWxsX2FwcGVuZChHVEtfTUVOVV9TSEVMTChnUGFydHMtPm1lbnVCYXJXaWRnZXQpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT5tZW51QmFySXRlbVdpZGdldCk7Ci0gICAg
ICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPm1lbnVCYXJJdGVtV2lkZ2V0KTsKLSAgICAg
ICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51QmFySXRlbVdpZGdldCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9U
T19QT0lOVEVSKFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLWVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpCi17Ci0gICAgaWYgKCFn
UGFydHMtPm1lbnVQb3B1cFdpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9iYXJfaXRlbV93
aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQgPSBndGtfbWVudV9uZXco
KTsKLSAgICAgICAgZ3RrX21lbnVfaXRlbV9zZXRfc3VibWVudShHVEtfTUVOVV9JVEVNKGdQYXJ0
cy0+bWVudUJhckl0ZW1XaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGdQYXJ0cy0+bWVudVBvcHVwV2lkZ2V0KTsKLSAgICAgICAgZ3RrX3dpZGdldF9yZWFsaXplKGdQ
YXJ0cy0+bWVudVBvcHVwV2lkZ2V0KTsKLSAgICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpF
Q1QoZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAi
dHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgfQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9p
dGVtX3dpZGdldCgpCi17Ci0gICAgaWYgKCFnUGFydHMtPm1lbnVJdGVtV2lkZ2V0KSB7Ci0gICAg
ICAgIGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgpOwotICAgICAgICBnUGFydHMtPm1lbnVJdGVt
V2lkZ2V0ID0gZ3RrX21lbnVfaXRlbV9uZXdfd2l0aF9sYWJlbCgiTSIpOwotICAgICAgICBndGtf
bWVudV9zaGVsbF9hcHBlbmQoR1RLX01FTlVfU0hFTEwoZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT5tZW51SXRlbVdpZGdldCk7
Ci0gICAgICAgIGd0a193aWRnZXRfcmVhbGl6ZShnUGFydHMtPm1lbnVJdGVtV2lkZ2V0KTsKLSAg
ICAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51SXRlbVdpZGdldCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9U
T19QT0lOVEVSKFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLWVuc3VyZV9pbWFnZV9tZW51X2l0ZW1fd2lkZ2V0KCkKLXsKLSAgICBp
ZiAoIWdQYXJ0cy0+aW1hZ2VNZW51SXRlbVdpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9w
b3B1cF93aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5pbWFnZU1lbnVJdGVtV2lkZ2V0ID0gZ3Rr
X2ltYWdlX21lbnVfaXRlbV9uZXcoKTsKLSAgICAgICAgZ3RrX21lbnVfc2hlbGxfYXBwZW5kKEdU
S19NRU5VX1NIRUxMKGdQYXJ0cy0+bWVudVBvcHVwV2lkZ2V0KSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGdQYXJ0cy0+aW1hZ2VNZW51SXRlbVdpZGdldCk7Ci0gICAgICAgIGd0a193
aWRnZXRfcmVhbGl6ZShnUGFydHMtPmltYWdlTWVudUl0ZW1XaWRnZXQpOwotICAgICAgICBnX29i
amVjdF9zZXRfZGF0YShHX09CSkVDVChnUGFydHMtPmltYWdlTWVudUl0ZW1XaWRnZXQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwYXJlbnQtYmctaGludCIsIEdJTlRfVE9fUE9J
TlRFUihUUlVFKSk7Ci0gICAgfQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0
YXRpYyBnaW50Ci1lbnN1cmVfbWVudV9zZXBhcmF0b3Jfd2lkZ2V0KCkKLXsKLSAgICBpZiAoIWdQ
YXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCkgewotICAgICAgICBlbnN1cmVfbWVudV9wb3B1cF93
aWRnZXQoKTsKLSAgICAgICAgZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0ID0gZ3RrX3NlcGFy
YXRvcl9tZW51X2l0ZW1fbmV3KCk7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2FwcGVuZChHVEtf
TUVOVV9TSEVMTChnUGFydHMtPm1lbnVQb3B1cFdpZGdldCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQpOwotICAgICAgICBndGtfd2lk
Z2V0X3JlYWxpemUoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KTsKLSAgICAgICAgZ19vYmpl
Y3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRyYW5zcGFyZW50LWJnLWhpbnQiLCBHSU5UX1RPX1BPSU5U
RVIoVFJVRSkpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0
aWMgZ2ludAotZW5zdXJlX2NoZWNrX21lbnVfaXRlbV93aWRnZXQoKQotewotICAgIGlmICghZ1Bh
cnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KSB7Ci0gICAgICAgIGVuc3VyZV9tZW51X3BvcHVwX3dp
ZGdldCgpOwotICAgICAgICBnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQgPSBndGtfY2hlY2tf
bWVudV9pdGVtX25ld193aXRoX2xhYmVsKCJNIik7Ci0gICAgICAgIGd0a19tZW51X3NoZWxsX2Fw
cGVuZChHVEtfTUVOVV9TSEVMTChnUGFydHMtPm1lbnVQb3B1cFdpZGdldCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQpOwotICAgICAg
ICBndGtfd2lkZ2V0X3JlYWxpemUoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KTsKLSAgICAg
ICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zcGFyZW50LWJnLWhpbnQiLCBHSU5U
X1RPX1BPSU5URVIoVFJVRSkpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwot
fQotCi1zdGF0aWMgZ2ludAotZW5zdXJlX3RyZWVfdmlld193aWRnZXQoKQotewotICAgIGlmICgh
Z1BhcnRzLT50cmVlVmlld1dpZGdldCkgewotICAgICAgICBnUGFydHMtPnRyZWVWaWV3V2lkZ2V0
ID0gZ3RrX3RyZWVfdmlld19uZXcoKTsKLSAgICAgICAgc2V0dXBfd2lkZ2V0X3Byb3RvdHlwZShn
UGFydHMtPnRyZWVWaWV3V2lkZ2V0KTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VT
UzsKLX0KLQotc3RhdGljIGdpbnQKLWVuc3VyZV90cmVlX2hlYWRlcl9jZWxsX3dpZGdldCgpCi17
Ci0gICAgaWYoIWdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQpIHsKLSAgICAgICAgLyoKLSAg
ICAgICAgICogU29tZSBHVEsgZW5naW5lcyBwYWludCB0aGUgZmlyc3QgYW5kIGxhc3QgY2VsbAot
ICAgICAgICAgKiBvZiBhIFRyZWVWaWV3IGhlYWRlciB3aXRoIGEgaGlnaGxpZ2h0LgotICAgICAg
ICAgKiBTaW5jZSB3ZSBkbyBub3Qga25vdyB3aGVyZSBvdXIgd2lkZ2V0IHdpbGwgYmUgcmVsYXRp
dmUKLSAgICAgICAgICogdG8gdGhlIG90aGVyIGJ1dHRvbnMgaW4gdGhlIFRyZWVWaWV3IGhlYWRl
ciwgd2UgbXVzdAotICAgICAgICAgKiBwYWludCBpdCBhcyBhIGJ1dHRvbiB0aGF0IGlzIGJldHdl
ZW4gdHdvIG90aGVycywKLSAgICAgICAgICogdGh1cyBlbnN1cmluZyBpdCBpcyBuZWl0aGVyIHRo
ZSBmaXJzdCBvciBsYXN0IGJ1dHRvbgotICAgICAgICAgKiBpbiB0aGUgaGVhZGVyLgotICAgICAg
ICAgKiBHVEsgZG9lc24ndCBnaXZlIHVzIGEgd2F5IHRvIGRvIHRoaXMgZXhwbGljaXRseSwKLSAg
ICAgICAgICogc28gd2UgbXVzdCBwYWludCB3aXRoIGEgYnV0dG9uIHRoYXQgaXMgYmV0d2VlbiB0
d28KLSAgICAgICAgICogb3RoZXJzLgotICAgICAgICAgKi8KLQotICAgICAgICBHdGtUcmVlVmll
d0NvbHVtbiogZmlyc3RUcmVlVmlld0NvbHVtbjsKLSAgICAgICAgR3RrVHJlZVZpZXdDb2x1bW4q
IGxhc3RUcmVlVmlld0NvbHVtbjsKLQotICAgICAgICBlbnN1cmVfdHJlZV92aWV3X3dpZGdldCgp
OwotCi0gICAgICAgIC8qIENyZWF0ZSBhbmQgYXBwZW5kIG91ciB0aHJlZSBjb2x1bW5zICovCi0g
ICAgICAgIGZpcnN0VHJlZVZpZXdDb2x1bW4gPSBndGtfdHJlZV92aWV3X2NvbHVtbl9uZXcoKTsK
LSAgICAgICAgZ3RrX3RyZWVfdmlld19jb2x1bW5fc2V0X3RpdGxlKGZpcnN0VHJlZVZpZXdDb2x1
bW4sICJNIik7Ci0gICAgICAgIGd0a190cmVlX3ZpZXdfYXBwZW5kX2NvbHVtbihHVEtfVFJFRV9W
SUVXKGdQYXJ0cy0+dHJlZVZpZXdXaWRnZXQpLCBmaXJzdFRyZWVWaWV3Q29sdW1uKTsKLQotICAg
ICAgICBnUGFydHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uID0gZ3RrX3RyZWVfdmlld19jb2x1bW5f
bmV3KCk7Ci0gICAgICAgIGd0a190cmVlX3ZpZXdfY29sdW1uX3NldF90aXRsZShnUGFydHMtPm1p
ZGRsZVRyZWVWaWV3Q29sdW1uLCAiTSIpOwotICAgICAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9j
b2x1bW4oR1RLX1RSRUVfVklFVyhnUGFydHMtPnRyZWVWaWV3V2lkZ2V0KSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+bWlkZGxlVHJlZVZpZXdDb2x1bW4pOwot
Ci0gICAgICAgIGxhc3RUcmVlVmlld0NvbHVtbiA9IGd0a190cmVlX3ZpZXdfY29sdW1uX25ldygp
OwotICAgICAgICBndGtfdHJlZV92aWV3X2NvbHVtbl9zZXRfdGl0bGUobGFzdFRyZWVWaWV3Q29s
dW1uLCAiTSIpOwotICAgICAgICBndGtfdHJlZV92aWV3X2FwcGVuZF9jb2x1bW4oR1RLX1RSRUVf
VklFVyhnUGFydHMtPnRyZWVWaWV3V2lkZ2V0KSwgbGFzdFRyZWVWaWV3Q29sdW1uKTsKLQotI2lm
ZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgICAgIC8qIFVzZSB0aGUgbWlkZGxlIGNvbHVtbidz
IGhlYWRlciBmb3Igb3VyIGJ1dHRvbiAqLwotICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJDZWxs
V2lkZ2V0ID0gZ1BhcnRzLT5taWRkbGVUcmVlVmlld0NvbHVtbi0+YnV0dG9uOwotICAgICAgICBn
UGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQgPSBnUGFydHMtPm1pZGRsZVRyZWVWaWV3
Q29sdW1uLT5hcnJvdzsKLSNlbHNlCi0gICAgICAgIGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRn
ZXQgPSBndGtfYnV0dG9uX25ldygpOwotICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJy
b3dXaWRnZXQgPSBndGtfYXJyb3dfbmV3KEdUS19BUlJPV19ET1dOLCBHVEtfU0hBRE9XX05PTkUp
OwotI2VuZGlmCi0gICAgICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JKRUNUKGdQYXJ0cy0+dHJl
ZUhlYWRlckNlbGxXaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAidHJhbnNwYXJl
bnQtYmctaGludCIsIEdJTlRfVE9fUE9JTlRFUihUUlVFKSk7Ci0gICAgICAgIGdfb2JqZWN0X3Nl
dF9kYXRhKEdfT0JKRUNUKGdQYXJ0cy0+dHJlZUhlYWRlclNvcnRBcnJvd1dpZGdldCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BhcmVudC1iZy1oaW50IiwgR0lOVF9UT19QT0lO
VEVSKFRSVUUpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3Rh
dGljIGdpbnQKLWVuc3VyZV9leHBhbmRlcl93aWRnZXQoKQotewotICAgIGlmICghZ1BhcnRzLT5l
eHBhbmRlcldpZGdldCkgewotICAgICAgICBnUGFydHMtPmV4cGFuZGVyV2lkZ2V0ID0gZ3RrX2V4
cGFuZGVyX25ldygiTSIpOwotICAgICAgICBzZXR1cF93aWRnZXRfcHJvdG90eXBlKGdQYXJ0cy0+
ZXhwYW5kZXJXaWRnZXQpOwotICAgIH0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQot
Ci1zdGF0aWMgZ2ludAogZW5zdXJlX3Njcm9sbGVkX3dpbmRvd193aWRnZXQoKQogewogICAgIGlm
ICghZ1BhcnRzLT5zY3JvbGxlZFdpbmRvd1dpZGdldCkgewpAQCAtOTEyLDE5ICs1MjMsNiBAQCBt
b3pfZ3RrX3dpZGdldF9nZXRfZm9jdXMoR3RrV2lkZ2V0KiB3aWRnZXQsIGdib29sZWFuKiBpbnRl
cmlvcl9mb2N1cywKIH0KIAogZ2ludAotbW96X2d0a19zcGxpdHRlcl9nZXRfbWV0cmljcyhnaW50
IG9yaWVudGF0aW9uLCBnaW50KiBzaXplKQotewotICAgIGlmIChvcmllbnRhdGlvbiA9PSBHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCkgewotICAgICAgICBlbnN1cmVfaHBhbmVkX3dpZGdldCgp
OwotICAgICAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMtPmhwYW5lZFdpZGdldCwgImhh
bmRsZV9zaXplIiwgc2l6ZSwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZW5zdXJlX3Zw
YW5lZF93aWRnZXQoKTsKLSAgICAgICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT52cGFu
ZWRXaWRnZXQsICJoYW5kbGVfc2l6ZSIsIHNpemUsIE5VTEwpOwotICAgIH0KLSAgICByZXR1cm4g
TU9aX0dUS19TVUNDRVNTOwotfQotCi1naW50CiBtb3pfZ3RrX2J1dHRvbl9nZXRfaW5uZXJfYm9y
ZGVyKEd0a1dpZGdldCogd2lkZ2V0LCBHdGtCb3JkZXIqIGlubmVyX2JvcmRlcikKIHsKICAgICBz
dGF0aWMgY29uc3QgR3RrQm9yZGVyIGRlZmF1bHRfaW5uZXJfYm9yZGVyID0geyAxLCAxLCAxLCAx
IH07CkBAIC0xMzQxLDU5ICs5MzksNiBAQCBtb3pfZ3RrX3Njcm9sbGJhcl90aHVtYl9wYWludChH
dGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LAogfQogCiBzdGF0aWMgZ2ludAotbW96X2d0a19zcGlu
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxl
KiBzdHlsZTsKLQotICAgIGVuc3VyZV9zcGluX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0
X2RpcmVjdGlvbihnUGFydHMtPnNwaW5XaWRnZXQsIGRpcmVjdGlvbik7Ci0gICAgc3R5bGUgPSBn
dGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnNwaW5XaWRnZXQpOwotCi0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHls
ZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfSU4sIE5VTEwsCi0gICAg
ICAgICAgICAgICAgICBnUGFydHMtPnNwaW5XaWRnZXQsICJzcGluYnV0dG9uIiwKLSAgICAgICAg
ICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwot
ICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3Nw
aW5fdXBkb3duX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc0Rvd24sIEd0a1dpZGdldFN0
YXRlKiBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24pCi17Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7Ci0gICAgR3RrU3RhdGVU
eXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5
cGUgc2hhZG93X3R5cGUgPSBzdGF0ZV90eXBlID09IEdUS19TVEFURV9BQ1RJVkUgPwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TSEFET1dfSU4gOiBHVEtfU0hBRE9XX09V
VDsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfc3Bpbl93aWRnZXQoKTsKLSAg
ICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+c3BpbldpZGdldCk7Ci0gICAg
Z3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+c3BpbldpZGdldCwgZGlyZWN0aW9uKTsK
LQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0
a19wYWludF9ib3goc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgTlVM
TCwgZ1BhcnRzLT5zcGluV2lkZ2V0LAotICAgICAgICAgICAgICAgICAgaXNEb3duID8gInNwaW5i
dXR0b25fZG93biIgOiAic3BpbmJ1dHRvbl91cCIsCi0gICAgICAgICAgICAgICAgICByZWN0LT54
LCByZWN0LT55LCByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIC8qIGhhcmQgY29k
ZSB0aGVzZSB2YWx1ZXMgKi8KLSAgICBhcnJvd19yZWN0LndpZHRoID0gNjsKLSAgICBhcnJvd19y
ZWN0LmhlaWdodCA9IDY7Ci0gICAgYXJyb3dfcmVjdC54ID0gcmVjdC0+eCArIChyZWN0LT53aWR0
aCAtIGFycm93X3JlY3Qud2lkdGgpIC8gMjsKLSAgICBhcnJvd19yZWN0LnkgPSByZWN0LT55ICsg
KHJlY3QtPmhlaWdodCAtIGFycm93X3JlY3QuaGVpZ2h0KSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55
ICs9IGlzRG93biA/IC0xIDogMTsKLQotICAgIGd0a19wYWludF9hcnJvdyhzdHlsZSwgZHJhd2Fi
bGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBOVUxMLAotICAgICAgICAgICAgICAgICAgICBn
UGFydHMtPnNwaW5XaWRnZXQsICJzcGluYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgaXNE
b3duID8gR1RLX0FSUk9XX0RPV04gOiBHVEtfQVJST1dfVVAsIFRSVUUsCi0gICAgICAgICAgICAg
ICAgICAgIGFycm93X3JlY3QueCwgYXJyb3dfcmVjdC55LAotICAgICAgICAgICAgICAgICAgICBh
cnJvd19yZWN0LndpZHRoLCBhcnJvd19yZWN0LmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dU
S19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAogbW96X2d0a19zY2FsZV9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKICAgICAgICAgICAgICAgICAgICAg
R2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlLAogICAgICAgICAg
ICAgICAgICAgICBHdGtPcmllbnRhdGlvbiBmbGFncywgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rp
b24pCkBAIC0xNDcxLDc2ICsxMDE2LDYgQEAgbW96X2d0a19zY2FsZV90aHVtYl9wYWludChHZGtE
cmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKIH0KIAogc3RhdGljIGdpbnQK
LW1vel9ndGtfZ3JpcHBlcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rhbmds
ZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBH
dGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVj
dGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0
R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93X3R5cGU7Ci0gICAgR3Rr
U3R5bGUqIHN0eWxlOwotCi0gICAgZW5zdXJlX2hhbmRsZWJveF93aWRnZXQoKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT5oYW5kbGVCb3hXaWRnZXQsIGRpcmVjdGlvbik7
Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+aGFuZGxlQm94V2lk
Z2V0KTsKLSAgICBzaGFkb3dfdHlwZSA9IGd0a19oYW5kbGVfYm94X2dldF9zaGFkb3dfdHlwZShH
VEtfSEFORExFX0JPWChnUGFydHMtPmhhbmRsZUJveFdpZGdldCkpOwotCi0gICAgVFNPZmZzZXRT
dHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHls
ZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAgICAg
ICAgICAgICAgIGdQYXJ0cy0+aGFuZGxlQm94V2lkZ2V0LCAiaGFuZGxlYm94X2JpbiIsIHJlY3Qt
PngsIHJlY3QtPnksCi0gICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0
KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pf
Z3RrX2hwYW5lZF9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVj
dCwKLSAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdl
dFN0YXRlKiBzdGF0ZSkKLXsKLSAgICBHdGtTdGF0ZVR5cGUgaHBhbmVkX3N0YXRlID0gQ29udmVy
dEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3VyZV9ocGFuZWRfd2lkZ2V0KCk7Ci0gICAgZ3Rr
X3BhaW50X2hhbmRsZShndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPmhwYW5lZFdpZGdldCks
IGRyYXdhYmxlLCBocGFuZWRfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICBHVEtfU0hBRE9X
X05PTkUsIGNsaXByZWN0LCBnUGFydHMtPmhwYW5lZFdpZGdldCwgInBhbmVkIiwKLSAgICAgICAg
ICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQs
Ci0gICAgICAgICAgICAgICAgICAgICBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwotCi0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdnBhbmVk
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0
YXRlKQotewotICAgIEd0a1N0YXRlVHlwZSB2cGFuZWRfc3RhdGUgPSBDb252ZXJ0R3RrU3RhdGUo
c3RhdGUpOwotCi0gICAgZW5zdXJlX3ZwYW5lZF93aWRnZXQoKTsKLSAgICBndGtfcGFpbnRfaGFu
ZGxlKGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dnBhbmVkV2lkZ2V0KSwgZHJhd2FibGUs
IHZwYW5lZF9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgIEdUS19TSEFET1dfTk9ORSwgY2xp
cHJlY3QsIGdQYXJ0cy0+dnBhbmVkV2lkZ2V0LCAicGFuZWQiLAotICAgICAgICAgICAgICAgICAg
ICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCwKLSAgICAgICAg
ICAgICAgICAgICAgIEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKLQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NhcmV0X3BhaW50KEdk
a0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAg
ICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikK
LXsKLSAgICBHZGtSZWN0YW5nbGUgbG9jYXRpb24gPSAqcmVjdDsKLSAgICBpZiAoZGlyZWN0aW9u
ID09IEdUS19URVhUX0RJUl9SVEwpIHsKLSAgICAgICAgLyogZ3RrX2RyYXdfaW5zZXJ0aW9uX2N1
cnNvciBpZ25vcmVzIGxvY2F0aW9uLndpZHRoICovCi0gICAgICAgIGxvY2F0aW9uLnggPSByZWN0
LT54ICsgcmVjdC0+d2lkdGg7Ci0gICAgfQotCi0gICAgZW5zdXJlX2VudHJ5X3dpZGdldCgpOwot
ICAgIGd0a19kcmF3X2luc2VydGlvbl9jdXJzb3IoZ1BhcnRzLT5lbnRyeVdpZGdldCwgZHJhd2Fi
bGUsIGNsaXByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvY2F0aW9uLCBU
UlVFLCBkaXJlY3Rpb24sIEZBTFNFKTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19
Ci0KLXN0YXRpYyBnaW50CiBtb3pfZ3RrX2VudHJ5X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJs
ZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAogICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUq
IGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCiAgICAgICAgICAgICAgICAgICAgIEd0
a1dpZGdldCogd2lkZ2V0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKQEAgLTE2NTQsMTQ0
ICsxMTI5LDYgQEAgbW96X2d0a19lbnRyeV9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdk
a1JlY3RhbmdsZSogcmVjdCwKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQogCi1zdGF0
aWMgZ2ludCAKLW1vel9ndGtfdHJlZXZpZXdfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBH
ZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSog
Y2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
R3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgZ2ludCB4dGhpY2tuZXNzLCB5dGhp
Y2tuZXNzOwotCi0gICAgR3RrU3R5bGUgKnN0eWxlLCAqdHJlZXZpZXdfc3R5bGU7Ci0gICAgR3Rr
U3RhdGVUeXBlIHN0YXRlX3R5cGU7Ci0KLSAgICBlbnN1cmVfdHJlZV92aWV3X3dpZGdldCgpOwot
ICAgIGVuc3VyZV9zY3JvbGxlZF93aW5kb3dfd2lkZ2V0KCk7Ci0KLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT50cmVlVmlld1dpZGdldCwgZGlyZWN0aW9uKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT5zY3JvbGxlZFdpbmRvd1dpZGdldCwgZGlyZWN0
aW9uKTsKLQotICAgIC8qIG9ubHkgaGFuZGxlIGRpc2FibGVkIGFuZCBub3JtYWwgc3RhdGVzLCBv
dGhlcndpc2UgdGhlIHdob2xlIGJhY2tncm91bmQKLSAgICAgKiBhcmVhIHdpbGwgYmUgcGFpbnRl
ZCBkaWZmZXJlbnRseSB3aXRoIG90aGVyIHN0YXRlcyAqLwotICAgIHN0YXRlX3R5cGUgPSBzdGF0
ZS0+ZGlzYWJsZWQgPyBHVEtfU1RBVEVfSU5TRU5TSVRJVkUgOiBHVEtfU1RBVEVfTk9STUFMOwot
Ci0gICAgLyogSW4gR1RLIHRoZSB0cmVldmlldyBzZXRzIHRoZSBiYWNrZ3JvdW5kIG9mIHRoZSB3
aW5kb3cKLSAgICAgKiB3aGljaCBjb250YWlucyB0aGUgY2VsbHMgdG8gdGhlIHRyZWV2aWV3IGJh
c2UgY29sb3IuCi0gICAgICogSWYgd2UgZG9uJ3Qgc2V0IGl0IGhlcmUgdGhlIGJhY2tncm91bmQg
Y29sb3Igd2lsbCBub3QgYmUgY29ycmVjdC4qLwotICAgIGd0a193aWRnZXRfbW9kaWZ5X2JnKGdQ
YXJ0cy0+dHJlZVZpZXdXaWRnZXQsIHN0YXRlX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJmd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dHJlZVZpZXdXaWRnZXQpLT5iYXNlW3N0
YXRlX3R5cGVdKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5z
Y3JvbGxlZFdpbmRvd1dpZGdldCk7Ci0gICAgeHRoaWNrbmVzcyA9IFhUSElDS05FU1Moc3R5bGUp
OwotICAgIHl0aGlja25lc3MgPSBZVEhJQ0tORVNTKHN0eWxlKTsKLQotICAgIHRyZWV2aWV3X3N0
eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT50cmVlVmlld1dpZGdldCk7Ci0gICAg
VFNPZmZzZXRTdHlsZUdDcyh0cmVldmlld19zdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBndGtfcGFp
bnRfZmxhdF9ib3godHJlZXZpZXdfc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfU0hBRE9XX05PTkUsIGNsaXByZWN0LCBnUGFydHMtPnRyZWVW
aWV3V2lkZ2V0LCAidHJlZXZpZXciLAotICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54ICsg
eHRoaWNrbmVzcywgcmVjdC0+eSArIHl0aGlja25lc3MsCi0gICAgICAgICAgICAgICAgICAgICAg
IHJlY3QtPndpZHRoIC0gMiAqIHh0aGlja25lc3MsCi0gICAgICAgICAgICAgICAgICAgICAgIHJl
Y3QtPmhlaWdodCAtIDIgKiB5dGhpY2tuZXNzKTsKLQotICAgIGd0a19wYWludF9zaGFkb3coc3R5
bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0lOLAotICAgICAgICAg
ICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+c2Nyb2xsZWRXaW5kb3dXaWRnZXQsICJzY3Jv
bGxlZF93aW5kb3ciLAotICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVj
dC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7IAotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsK
LX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdHJlZV9oZWFkZXJfY2VsbF9wYWludChHZGtEcmF3
YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gaXNTb3J0ZWQsIEd0a1Rl
eHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIGd0a190cmVlX3ZpZXdfY29sdW1uX3NldF9z
b3J0X2luZGljYXRvcihnUGFydHMtPm1pZGRsZVRyZWVWaWV3Q29sdW1uLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1NvcnRlZCk7Ci0KLSAgICBtb3pfZ3Rr
X2J1dHRvbl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBHVEtfUkVMSUVG
X05PUk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnUGFydHMtPnRyZWVIZWFkZXJDZWxs
V2lkZ2V0LCBkaXJlY3Rpb24pOwotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0
YXRpYyBnaW50Ci1tb3pfZ3RrX3RyZWVfaGVhZGVyX3NvcnRfYXJyb3dfcGFpbnQoR2RrRHJhd2Fi
bGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsIEd0a0Fycm93VHlwZSBm
bGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHZGtSZWN0YW5nbGUgYXJyb3dfcmVjdDsKLSAgICBHdGtT
dGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0gICAgR3RrU2hh
ZG93VHlwZSBzaGFkb3dfdHlwZSA9IEdUS19TSEFET1dfSU47Ci0gICAgR3RrQXJyb3dUeXBlIGFy
cm93X3R5cGUgPSBmbGFnczsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0KLSAgICBlbnN1cmVfdHJl
ZV9oZWFkZXJfY2VsbF93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1Bh
cnRzLT50cmVlSGVhZGVyU29ydEFycm93V2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgLyogaGFy
ZCBjb2RlIHRoZXNlIHZhbHVlcyAqLwotICAgIGFycm93X3JlY3Qud2lkdGggPSAxMTsKLSAgICBh
cnJvd19yZWN0LmhlaWdodCA9IDExOwotICAgIGFycm93X3JlY3QueCA9IHJlY3QtPnggKyAocmVj
dC0+d2lkdGggLSBhcnJvd19yZWN0LndpZHRoKSAvIDI7Ci0gICAgYXJyb3dfcmVjdC55ID0gcmVj
dC0+eSArIChyZWN0LT5oZWlnaHQgLSBhcnJvd19yZWN0LmhlaWdodCkgLyAyOwotCi0gICAgc3R5
bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRn
ZXQpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIGFycm93X3JlY3QueCwgYXJyb3dfcmVj
dC55KTsKLQotICAgIGd0a19wYWludF9hcnJvdyhzdHlsZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUs
IHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgZ1BhcnRzLT50cmVl
SGVhZGVyU29ydEFycm93V2lkZ2V0LCAiYXJyb3ciLCAgYXJyb3dfdHlwZSwgVFJVRSwKLSAgICAg
ICAgICAgICAgICAgICAgYXJyb3dfcmVjdC54LCBhcnJvd19yZWN0LnksCi0gICAgICAgICAgICAg
ICAgICAgIGFycm93X3JlY3Qud2lkdGgsIGFycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RyZWV2aWV3X2V4
cGFuZGVyX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBH
dGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEd0
a0V4cGFuZGVyU3R5bGUgZXhwYW5kZXJfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlICpzdHls
ZTsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZTsKLQotICAgIGVuc3VyZV90cmVlX3ZpZXdf
d2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+dHJlZVZpZXdX
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQ
YXJ0cy0+dHJlZVZpZXdXaWRnZXQpOwotCi0gICAgLyogQmVjYXVzZSB0aGUgZnJhbWUgd2UgZ2V0
IGlzIG9mIHRoZSBlbnRpcmUgdHJlZXZpZXcsIHdlIGNhbid0IGdldCB0aGUgcHJlY2lzZQotICAg
ICAqIGV2ZW50IHN0YXRlIG9mIG9uZSBleHBhbmRlciwgdGh1cyByZW5kZXJpbmcgaG92ZXIgYW5k
IGFjdGl2ZSBmZWVkYmFjayB1c2VsZXNzLiAqLwotICAgIHN0YXRlX3R5cGUgPSBzdGF0ZS0+ZGlz
YWJsZWQgPyBHVEtfU1RBVEVfSU5TRU5TSVRJVkUgOiBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50
X2V4cGFuZGVyKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgY2xpcHJlY3QsIGdQYXJ0cy0+
dHJlZVZpZXdXaWRnZXQsICJ0cmVldmlldyIsCi0gICAgICAgICAgICAgICAgICAgICAgIHJlY3Qt
PnggKyByZWN0LT53aWR0aCAvIDIsIHJlY3QtPnkgKyByZWN0LT5oZWlnaHQgLyAyLCBleHBhbmRl
cl9zdGF0ZSk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2lu
dAotbW96X2d0a19leHBhbmRlcl9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rh
bmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVj
dCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBHdGtFeHBh
bmRlclN0eWxlIGV4cGFuZGVyX3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICBHdGtUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdHlsZSAqc3R5bGU7Ci0gICAgR3RrU3Rh
dGVUeXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotCi0gICAgZW5zdXJl
X2V4cGFuZGVyX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMt
PmV4cGFuZGVyV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dl
dF9zdHlsZShnUGFydHMtPmV4cGFuZGVyV2lkZ2V0KTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Mo
c3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotICAgIGd0a19wYWludF9leHBhbmRlcihzdHlsZSwg
ZHJhd2FibGUsIHN0YXRlX3R5cGUsIGNsaXByZWN0LCBnUGFydHMtPmV4cGFuZGVyV2lkZ2V0LCAi
ZXhwYW5kZXIiLAotICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54ICsgcmVjdC0+d2lkdGgg
LyAyLCByZWN0LT55ICsgcmVjdC0+aGVpZ2h0IC8gMiwgZXhwYW5kZXJfc3RhdGUpOwotCi0gICAg
cmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQogc3RhdGljIGdpbnQKIG1vel9ndGtfY29tYm9f
Ym94X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrV2lkZ2V0U3Rh
dGUqIHN0YXRlLApAQCAtMTg3OCwzMjMgKzEyMTUsNiBAQCBtb3pfZ3RrX2NvbWJvX2JveF9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKIH0KIAogc3RhdGlj
IGdpbnQKLW1vel9ndGtfZG93bmFycm93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2Rr
UmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBj
bGlwcmVjdCwgR3RrV2lkZ2V0U3RhdGUqIHN0YXRlKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsK
LSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShzdGF0ZSk7Ci0g
ICAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZSA9IHN0YXRlLT5hY3RpdmUgPyBHVEtfU0hBRE9X
X0lOIDogR1RLX1NIQURPV19PVVQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3Q7Ci0KLSAg
ICBlbnN1cmVfYnV0dG9uX2Fycm93X3dpZGdldCgpOwotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9n
ZXRfc3R5bGUoZ1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCk7Ci0KLSAgICBjYWxjdWxhdGVfYXJy
b3dfcmVjdChnUGFydHMtPmJ1dHRvbkFycm93V2lkZ2V0LCByZWN0LCAmYXJyb3dfcmVjdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfVEVYVF9ESVJfTFRSKTsKLQotICAgIFRTT2Zmc2V0
U3R5bGVHQ3Moc3R5bGUsIGFycm93X3JlY3QueCwgYXJyb3dfcmVjdC55KTsKLSAgICBndGtfcGFp
bnRfYXJyb3coc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJl
Y3QsCi0gICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+YnV0dG9uQXJyb3dXaWRnZXQsICJhcnJv
dyIsICBHVEtfQVJST1dfRE9XTiwgVFJVRSwKLSAgICAgICAgICAgICAgICAgICAgYXJyb3dfcmVj
dC54LCBhcnJvd19yZWN0LnksIGFycm93X3JlY3Qud2lkdGgsIGFycm93X3JlY3QuaGVpZ2h0KTsK
LQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3Rr
X2NvbWJvX2JveF9lbnRyeV9idXR0b25fcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtS
ZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2Rr
UmVjdGFuZ2xlKiBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2Jvb2xlYW4gaW5wdXRfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgZ2ludCB4X2Rpc3Bs
YWNlbWVudCwgeV9kaXNwbGFjZW1lbnQ7Ci0gICAgR2RrUmVjdGFuZ2xlIGFycm93X3JlY3QsIHJl
YWxfYXJyb3dfcmVjdDsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtT
dGF0ZShzdGF0ZSk7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3dfdHlwZSA9IHN0YXRlLT5hY3Rp
dmUgPyBHVEtfU0hBRE9XX0lOIDogR1RLX1NIQURPV19PVVQ7Ci0gICAgR3RrU3R5bGUqIHN0eWxl
OwotCi0gICAgZW5zdXJlX2NvbWJvX2JveF9lbnRyeV93aWRnZXRzKCk7Ci0KLSAgICBpZiAoaW5w
dXRfZm9jdXMpIHsKLSAgICAgICAgLyogU29tZSB0aGVtZXMgZHJhdyBhIGNvbXBsZW1lbnRhcnkg
Zm9jdXMgcmluZyBmb3IgdGhlIGRyb3Bkb3duIGJ1dHRvbgotICAgICAgICAgKiB3aGVuIHRoZSBk
cm9wZG93biBlbnRyeSBoYXMgZm9jdXMgKi8KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAg
ICAgICBHVEtfV0lER0VUX1NFVF9GTEFHUyhnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdp
ZGdldCwgR1RLX0hBU19GT0NVUyk7Ci0jZW5kaWYKLSAgICB9Ci0KLSAgICBtb3pfZ3RrX2J1dHRv
bl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBHVEtfUkVMSUVGX05PUk1B
TCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25X
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05fMgotICAgIGlmIChp
bnB1dF9mb2N1cykKLSAgICAgICAgR1RLX1dJREdFVF9VTlNFVF9GTEFHUyhnUGFydHMtPmNvbWJv
Qm94RW50cnlUZXh0YXJlYVdpZGdldCwgR1RLX0hBU19GT0NVUyk7Ci0jZW5kaWYKLQotICAgIGNh
bGN1bGF0ZV9idXR0b25faW5uZXJfcmVjdChnUGFydHMtPmNvbWJvQm94RW50cnlCdXR0b25XaWRn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QsICZhcnJvd19yZWN0LCBk
aXJlY3Rpb24sIEZBTFNFKTsKLSAgICBpZiAoc3RhdGVfdHlwZSA9PSBHVEtfU1RBVEVfQUNUSVZF
KSB7Ci0gICAgICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1
dHRvbldpZGdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoaWxkLWRpc3BsYWNl
bWVudC14IiwgJnhfZGlzcGxhY2VtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Y2hpbGQtZGlzcGxhY2VtZW50LXkiLCAmeV9kaXNwbGFjZW1lbnQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICBhcnJvd19yZWN0LnggKz0geF9kaXNwbGFjZW1l
bnQ7Ci0gICAgICAgIGFycm93X3JlY3QueSArPSB5X2Rpc3BsYWNlbWVudDsKLSAgICB9Ci0KLSAg
ICBjYWxjdWxhdGVfYXJyb3dfcmVjdChnUGFydHMtPmNvbWJvQm94RW50cnlBcnJvd1dpZGdldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAmYXJyb3dfcmVjdCwgJnJlYWxfYXJyb3dfcmVjdCwg
ZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5j
b21ib0JveEVudHJ5QXJyb3dXaWRnZXQpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJl
YWxfYXJyb3dfcmVjdC54LCByZWFsX2Fycm93X3JlY3QueSk7Ci0KLSAgICBndGtfcGFpbnRfYXJy
b3coc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgY2xpcHJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0LCAiYXJy
b3ciLCAgR1RLX0FSUk9XX0RPV04sIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgIHJlYWxfYXJy
b3dfcmVjdC54LCByZWFsX2Fycm93X3JlY3QueSwKLSAgICAgICAgICAgICAgICAgICAgcmVhbF9h
cnJvd19yZWN0LndpZHRoLCByZWFsX2Fycm93X3JlY3QuaGVpZ2h0KTsKLQotICAgIHJldHVybiBN
T1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2NvbnRhaW5lcl9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0YXRlKiBzdGF0
ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc3JhZGlvLCBHdGtUZXh0RGly
ZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVfdHlwZSA9IENvbnZl
cnRHdGtTdGF0ZShzdGF0ZSk7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1dpZGdldCAq
d2lkZ2V0OwotICAgIGdib29sZWFuIGludGVyaW9yX2ZvY3VzOwotICAgIGdpbnQgZm9jdXNfd2lk
dGgsIGZvY3VzX3BhZDsKLQotICAgIGlmIChpc3JhZGlvKSB7Ci0gICAgICAgIGVuc3VyZV9yYWRp
b2J1dHRvbl93aWRnZXQoKTsKLSAgICAgICAgd2lkZ2V0ID0gZ1BhcnRzLT5yYWRpb2J1dHRvbldp
ZGdldDsKLSAgICB9IGVsc2UgewotICAgICAgICBlbnN1cmVfY2hlY2tib3hfd2lkZ2V0KCk7Ci0g
ICAgICAgIHdpZGdldCA9IGdQYXJ0cy0+Y2hlY2tib3hXaWRnZXQ7Ci0gICAgfQotICAgIGd0a193
aWRnZXRfc2V0X2RpcmVjdGlvbih3aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0
a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0gICAgbW96X2d0a193aWRnZXRfZ2V0X2ZvY3Vz
KHdpZGdldCwgJmludGVyaW9yX2ZvY3VzLCAmZm9jdXNfd2lkdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICZmb2N1c19wYWQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwg
cmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICAvKiBUaGUgZGV0YWlsIGFyZ3VtZW50IGZvciB0aGUg
Z3RrX3BhaW50XyogY2FsbHMgYmVsb3cgYXJlICJjaGVja2J1dHRvbiIKLSAgICAgICBldmVuIGZv
ciByYWRpbyBidXR0b25zLCB0byBtYXRjaCB3aGF0IGd0ayBkb2VzLiAqLwotCi0gICAgLyogdGhp
cyBpcyBmb3IgZHJhd2luZyBhIHByZWxpZ2h0IGJveCAqLwotICAgIGlmIChzdGF0ZV90eXBlID09
IEdUS19TVEFURV9QUkVMSUdIVCB8fCBzdGF0ZV90eXBlID09IEdUS19TVEFURV9BQ1RJVkUpIHsK
LSAgICAgICAgZ3RrX3BhaW50X2ZsYXRfYm94KHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX1BS
RUxJR0hULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NIQURPV19FVENIRURfT1VU
LCBjbGlwcmVjdCwgd2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoZWNrYnV0
dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3Qt
PndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIH0KLQotICAgIGlmIChzdGF0ZV90eXBlICE9IEdU
S19TVEFURV9OT1JNQUwgJiYgc3RhdGVfdHlwZSAhPSBHVEtfU1RBVEVfUFJFTElHSFQpCi0gICAg
ICAgIHN0YXRlX3R5cGUgPSBHVEtfU1RBVEVfTk9STUFMOwotCi0gICAgaWYgKHN0YXRlLT5mb2N1
c2VkICYmICFpbnRlcmlvcl9mb2N1cykgewotICAgICAgICBndGtfcGFpbnRfZm9jdXMoc3R5bGUs
IGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBjbGlwcmVjdCwgd2lkZ2V0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgImNoZWNrYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPngs
IHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIH0KLQotICAgIHJldHVy
biBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RvZ2dsZV9sYWJl
bF9wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1dpZGdldFN0
YXRlKiBzdGF0ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBpc3JhZGlv
LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdGF0ZVR5cGUgc3RhdGVf
dHlwZTsKLSAgICBHdGtTdHlsZSAqc3R5bGU7Ci0gICAgR3RrV2lkZ2V0ICp3aWRnZXQ7Ci0gICAg
Z2Jvb2xlYW4gaW50ZXJpb3JfZm9jdXM7Ci0KLSAgICBpZiAoIXN0YXRlLT5mb2N1c2VkKQotICAg
ICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotCi0gICAgaWYgKGlzcmFkaW8pIHsKLSAgICAg
ICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICB3aWRnZXQgPSBnUGFydHMt
PnJhZGlvYnV0dG9uV2lkZ2V0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGVuc3VyZV9jaGVja2Jv
eF93aWRnZXQoKTsKLSAgICAgICAgd2lkZ2V0ID0gZ1BhcnRzLT5jaGVja2JveFdpZGdldDsKLSAg
ICB9Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKHdpZGdldCwgZGlyZWN0aW9uKTsKLQot
ICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KHdpZGdldCwgImludGVyaW9yLWZvY3VzIiwgJmludGVy
aW9yX2ZvY3VzLCBOVUxMKTsKLSAgICBpZiAoIWludGVyaW9yX2ZvY3VzKQotICAgICAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotCi0gICAgc3RhdGVfdHlwZSA9IENvbnZlcnRHdGtTdGF0ZShz
dGF0ZSk7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKHdpZGdldCk7Ci0gICAg
VFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICAvKiBBbHdh
eXMgImNoZWNrYnV0dG9uIiB0byBtYXRjaCBndGtjaGVja2J1dHRvbi5jICovCi0gICAgZ3RrX3Bh
aW50X2ZvY3VzKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgY2xpcHJlY3QsIHdpZGdldCwK
LSAgICAgICAgICAgICAgICAgICAgImNoZWNrYnV0dG9uIiwKLSAgICAgICAgICAgICAgICAgICAg
cmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a190b29sYmFyX3Bh
aW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGly
ZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRv
d190eXBlOwotCi0gICAgZW5zdXJlX3Rvb2xiYXJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9z
ZXRfZGlyZWN0aW9uKGdQYXJ0cy0+dG9vbGJhcldpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0
eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT50b29sYmFyV2lkZ2V0KTsKLQotICAg
IFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3QtPnkpOwotCi0gICAgZ3RrX3N0
eWxlX2FwcGx5X2RlZmF1bHRfYmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RBVEVfTk9STUFMLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIHJlY3QtPngsIHJl
Y3QtPnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0
aCwgcmVjdC0+aGVpZ2h0KTsKLQotICAgIGd0a193aWRnZXRfc3R5bGVfZ2V0KGdQYXJ0cy0+dG9v
bGJhcldpZGdldCwgInNoYWRvdy10eXBlIiwgJnNoYWRvd190eXBlLCBOVUxMKTsKLQotICAgIGd0
a19wYWludF9ib3ggKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgc2hhZG93X3R5
cGUsCi0gICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+dG9vbGJhcldpZGdldCwg
InRvb2xiYXIiLAotICAgICAgICAgICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndp
ZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQot
c3RhdGljIGdpbnQKLW1vel9ndGtfdG9vbGJhcl9zZXBhcmF0b3JfcGFpbnQoR2RrRHJhd2FibGUq
IGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHls
ZTsKLSAgICBnaW50ICAgICBzZXBhcmF0b3Jfd2lkdGg7Ci0gICAgZ2ludCAgICAgcGFpbnRfd2lk
dGg7Ci0gICAgZ2Jvb2xlYW4gd2lkZV9zZXBhcmF0b3JzOwotICAgIAotICAgIC8qIERlZmluZWQg
YXMgY29uc3RhbnRzIGluIEdUSysgMi4xMC4xNCAqLwotICAgIGNvbnN0IGRvdWJsZSBzdGFydF9m
cmFjdGlvbiA9IDAuMjsKLSAgICBjb25zdCBkb3VibGUgZW5kX2ZyYWN0aW9uID0gMC44OwotCi0g
ICAgZW5zdXJlX3Rvb2xiYXJfc2VwYXJhdG9yX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0
X2RpcmVjdGlvbihnUGFydHMtPnRvb2xiYXJTZXBhcmF0b3JXaWRnZXQsIGRpcmVjdGlvbik7Ci0K
LSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dG9vbGJhclNlcGFyYXRv
cldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChnUGFydHMtPnRvb2xiYXJXaWRn
ZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICZ3aWRlX3Nl
cGFyYXRvcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNlcGFyYXRvci13aWR0aCIsICZz
ZXBhcmF0b3Jfd2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICBU
U09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLQotICAgIGlmICh3aWRl
X3NlcGFyYXRvcnMpIHsKLSAgICAgICAgaWYgKHNlcGFyYXRvcl93aWR0aCA+IHJlY3QtPndpZHRo
KQotICAgICAgICAgICAgc2VwYXJhdG9yX3dpZHRoID0gcmVjdC0+d2lkdGg7Ci0KLSAgICAgICAg
Z3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsCi0gICAgICAgICAgICAgICAgICAgICAgR1RL
X1NUQVRFX05PUk1BTCwgR1RLX1NIQURPV19FVENIRURfT1VULAotICAgICAgICAgICAgICAgICAg
ICAgIGNsaXByZWN0LCBnUGFydHMtPnRvb2xiYXJXaWRnZXQsICJ2c2VwYXJhdG9yIiwKLSAgICAg
ICAgICAgICAgICAgICAgICByZWN0LT54ICsgKHJlY3QtPndpZHRoIC0gc2VwYXJhdG9yX3dpZHRo
KSAvIDIsCi0gICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eSArIHJlY3QtPmhlaWdodCAqIHN0
YXJ0X2ZyYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcl93aWR0aCwKLSAg
ICAgICAgICAgICAgICAgICAgICByZWN0LT5oZWlnaHQgKiAoZW5kX2ZyYWN0aW9uIC0gc3RhcnRf
ZnJhY3Rpb24pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgfSBlbHNlIHsKLSAgICAg
ICAgcGFpbnRfd2lkdGggPSBzdHlsZS0+eHRoaWNrbmVzczsKLSAgICAgICAgCi0gICAgICAgIGlm
IChwYWludF93aWR0aCA+IHJlY3QtPndpZHRoKQotICAgICAgICAgICAgcGFpbnRfd2lkdGggPSBy
ZWN0LT53aWR0aDsKLSAgICAKLSAgICAgICAgZ3RrX3BhaW50X3ZsaW5lKHN0eWxlLCBkcmF3YWJs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LCBn
UGFydHMtPnRvb2xiYXJTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAi
dG9vbGJhciIsCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVjdC0+aGVpZ2h0
ICogc3RhcnRfZnJhY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgcmVj
dC0+aGVpZ2h0ICogZW5kX2ZyYWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+
eCArIChyZWN0LT53aWR0aCAtIHBhaW50X3dpZHRoKSAvIDIpOwotICAgIH0KLSAgICAKLSAgICBy
ZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a190b29sdGlw
X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAg
ICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24g
ZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLQotICAgIGVuc3VyZV90b29sdGlw
X3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPnRvb2x0aXBX
aWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a19yY19nZXRfc3R5bGVfYnlfcGF0
aHMoZ3RrX3NldHRpbmdzX2dldF9kZWZhdWx0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJndGstdG9vbHRpcHMiLCAiR3RrV2luZG93IiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1RZUEVfV0lORE9XKTsKLQotICAgIHN0eWxlID0g
Z3RrX3N0eWxlX2F0dGFjaChzdHlsZSwgZ3RrX3dpZGdldF9nZXRfd2luZG93KGdQYXJ0cy0+dG9v
bHRpcFdpZGdldCkpOwotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngsIHJlY3Qt
PnkpOwotICAgIGd0a19wYWludF9mbGF0X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9O
T1JNQUwsIEdUS19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwg
Z1BhcnRzLT50b29sdGlwV2lkZ2V0LCAidG9vbHRpcCIsCi0gICAgICAgICAgICAgICAgICAgICAg
IHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotCi0gICAgcmV0
dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfcmVzaXplcl9w
YWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAg
ICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3Rh
dGUsCi0gICAgICAgICAgICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17
Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1N0YXRlVHlwZSBzdGF0ZV90eXBlID0gQ29u
dmVydEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3VyZV93aW5kb3dfd2lkZ2V0KCk7Ci0gICAg
Z3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+cHJvdG9XaW5kb3csIGRpcmVjdGlvbik7
Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+cHJvdG9XaW5kb3cp
OwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAg
ICBndGtfcGFpbnRfcmVzaXplX2dyaXAoc3R5bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBjbGlw
cmVjdCwgZ1BhcnRzLT5wcm90b1dpbmRvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM
TCwgKGRpcmVjdGlvbiA9PSBHVEtfVEVYVF9ESVJfTFRSKSA/Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgIEdES19XSU5ET1dfRURHRV9TT1VUSF9FQVNUIDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgR0RLX1dJTkRPV19FREdFX1NPVVRIX1dFU1QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY3QtPngsIHJlY3QtPnksIHJlY3QtPndpZHRoLCByZWN0LT5oZWlnaHQpOwotICAgIHJl
dHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX2ZyYW1lX3Bh
aW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2hhZG93VHlwZSBzaGFkb3df
dHlwZTsKLQotICAgIGVuc3VyZV9mcmFtZV93aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3NldF9k
aXJlY3Rpb24oZ1BhcnRzLT5mcmFtZVdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxlID0g
Z3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5mcmFtZVdpZGdldCk7Ci0KLSAgICBndGtfd2lk
Z2V0X3N0eWxlX2dldChnUGFydHMtPnN0YXR1c2JhcldpZGdldCwgInNoYWRvdy10eXBlIiwgJnNo
YWRvd190eXBlLCBOVUxMKTsKLQotICAgIFRTT2Zmc2V0U3R5bGVHQ3Moc3R5bGUsIHJlY3QtPngs
IHJlY3QtPnkpOwotICAgIGd0a19wYWludF9zaGFkb3coc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RB
VEVfTk9STUFMLCBzaGFkb3dfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBn
UGFydHMtPmZyYW1lV2lkZ2V0LCAiZnJhbWUiLCByZWN0LT54LCByZWN0LT55LAotICAgICAgICAg
ICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9a
X0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAogbW96X2d0a19wcm9ncmVzc2Jhcl9wYWlu
dChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBk
aXJlY3Rpb24pCiB7CkBAIC0yMjMzLDQzOCArMTI1Myw2IEBAIG1vel9ndGtfcHJvZ3Jlc3NfY2h1
bmtfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCiB9CiAK
IGdpbnQKLW1vel9ndGtfZ2V0X3RhYl90aGlja25lc3Modm9pZCkKLXsKLSAgICBHdGtTdHlsZSog
c3R5bGU7Ci0KLSAgICBlbnN1cmVfdGFiX3dpZGdldCgpOwotICAgIHN0eWxlID0gZ3RrX3dpZGdl
dF9nZXRfc3R5bGUoZ1BhcnRzLT50YWJXaWRnZXQpOwotICAgIGlmIChZVEhJQ0tORVNTKHN0eWxl
KSA8IDIpCi0gICAgICAgIHJldHVybiAyOyAvKiBzb21lIHRoZW1lcyBkb24ndCBzZXQgeXRoaWNr
bmVzcyBjb3JyZWN0bHkgKi8KLQotICAgIHJldHVybiBZVEhJQ0tORVNTKHN0eWxlKTsKLX0KLQot
c3RhdGljIGdpbnQKLW1vel9ndGtfdGFiX3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJsZSwgR2Rr
UmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVj
dCwgR3RrVGFiRmxhZ3MgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICBHdGtUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbikKLXsKLSAgICAvKiBXaGVuIHRoZSB0YWIgaXNuJ3Qgc2VsZWN0ZWQsIHdlIGp1
c3QgZHJhdyBhIG5vdGVib29rIGV4dGVuc2lvbi4KLSAgICAgKiBXaGVuIGl0IGlzIHNlbGVjdGVk
LCB3ZSBvdmVyd3JpdGUgdGhlIGFkamFjZW50IGJvcmRlciBvZiB0aGUgdGFicGFuZWwKLSAgICAg
KiB0b3VjaGluZyB0aGUgdGFiIHdpdGggYSBwaWVyY2VkIGJvcmRlciAoY2FsbGVkICJ0aGUgZ2Fw
IikgdG8gbWFrZSB0aGUKLSAgICAgKiB0YWIgYXBwZWFyIHBoeXNpY2FsbHkgYXR0YWNoZWQgdG8g
dGhlIHRhYnBhbmVsOyBzZWUgZGV0YWlscyBiZWxvdy4gKi8KLQotICAgIEd0a1N0eWxlKiBzdHls
ZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0
aW9uKGdQYXJ0cy0+dGFiV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lk
Z2V0X2dldF9zdHlsZShnUGFydHMtPnRhYldpZGdldCk7Ci0gICAgVFNPZmZzZXRTdHlsZUdDcyhz
dHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBpZiAoKGZsYWdzICYgTU9aX0dUS19UQUJf
U0VMRUNURUQpID09IDApIHsKLSAgICAgICAgLyogT25seSBkcmF3IHRoZSB0YWIgKi8KLSAgICAg
ICAgZ3RrX3BhaW50X2V4dGVuc2lvbihzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9BQ1RJVkUs
IEdUS19TSEFET1dfT1VULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBn
UGFydHMtPnRhYldpZGdldCwgInRhYiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVj
dC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoZmxhZ3MgJiBNT1pfR1RLX1RBQl9CT1RUT00pID8KLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1RLX1BPU19UT1AgOiBHVEtfUE9TX0JPVFRPTSApOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8qIERyYXcgdGhlIHRhYiBhbmQgdGhlIGdhcAotICAgICAgICAg
KiBXZSB3YW50IHRoZSBnYXAgdG8gYmUgcG9zaXRpb25uZWQgZXhhY3RseSBvbiB0aGUgdGFicGFu
ZWwgdG9wCi0gICAgICAgICAqIGJvcmRlcjsgc2luY2UgdGFiYm94LmNzcyBtYXkgc2V0IGEgbmVn
YXRpdmUgbWFyZ2luIHNvIHRoYXQgdGhlIHRhYgotICAgICAgICAgKiBmcmFtZSByZWN0IGFscmVh
ZHkgb3ZlcmxhcHMgdGhlIHRhYnBhbmVsIGZyYW1lIHJlY3QsIHdlIG5lZWQgdG8gdGFrZQotICAg
ICAgICAgKiB0aGF0IGludG8gYWNjb3VudCB3aGVuIGRyYXdpbmcuIFRvIHRoYXQgZWZmZWN0LCBu
c05hdGl2ZVRoZW1lR1RLCi0gICAgICAgICAqIHBhc3NlcyB1cyB0aGlzIG5lZ2F0aXZlIG1hcmdp
biAoYm1hcmdpbiBpbiB0aGUgZ3JhcGhpYyBiZWxvdykgaW4gdGhlCi0gICAgICAgICAqIGxvd2Vz
dCBiaXRzIG9mIHxmbGFnc3wuICBXZSB1c2UgaXQgdG8gc2V0IGdhcF92b2Zmc2V0LCB0aGUgZGlz
dGFuY2UKLSAgICAgICAgICogYmV0d2VlbiB0aGUgdG9wIG9mIHRoZSBnYXAgYW5kIHRoZSBib3R0
b20gb2YgdGhlIHRhYiAocmVzcC4gdGhlCi0gICAgICAgICAqIGJvdHRvbSBvZiB0aGUgZ2FwIGFu
ZCB0aGUgdG9wIG9mIHRoZSB0YWIgd2hlbiB3ZSBkcmF3IGEgYm90dG9tIHRhYiksCi0gICAgICAg
ICAqIHdoaWxlIGVuc3VyaW5nIHRoYXQgdGhlIGdhcCBhbHdheXMgdG91Y2hlcyB0aGUgYm9yZGVy
IG9mIHRoZSB0YWIsCi0gICAgICAgICAqIGkuZS4gMCA8PSBnYXBfdm9mZnNldCA8PSBnYXBfaGVp
Z2h0LCB0byBhdm9pZCBzdXJwcmluc2luZyByZXN1bHRzCi0gICAgICAgICAqIHdpdGggYmlnIG5l
Z2F0aXZlIG9yIHBvc2l0aXZlIG1hcmdpbnMuCi0gICAgICAgICAqIEhlcmUgaXMgYSBncmFwaGlj
YWwgZXhwbGFuYXRpb24gaW4gdGhlIGNhc2Ugb2YgdG9wIHRhYnM6Ci0gICAgICAgICAqICAgICAg
ICAgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fXwotICAgICAgICAgKiAgICAgICAgICAg
IC8gICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAqICAgICAgICAgICB8ICAg
ICAgICAgICAgVCBBIEIgICAgICAgICAgICB8Ci0gICAgICAgICAqIC0tLS0tLS0tLS18LiAuIC4g
LiAuIC4gLiAuIC4gLiAuIC4gLiAuIC58LS0tLS0gdG9wIG9mIHRhYnBhbmVsCi0gICAgICAgICAq
ICAgICAgICAgICA6ICAgIF4gICAgICAgYm1hcmdpbiAgICAgICAgICA6ICBeCi0gICAgICAgICAq
ICAgICAgICAgICA6ICAgIHwgKC1uZWdhdGl2ZSBtYXJnaW4sICAgICA6ICB8Ci0gICAgICAgICAq
ICBib3R0b20gICA6ICAgIHYgIHBhc3NlZCBpbiBmbGFncykgICAgICA6ICB8ICAgICAgIGdhcF9o
ZWlnaHQKLSAgICAgICAgICogICAgb2YgIC0+IDouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u
LjogIHwgICAgKHRoZSBzaXplIG9mIHRoZQotICAgICAgICAgKiB0aGUgdGFiICAgLiAgICAgICBw
YXJ0IG9mIHRoZSBnYXAgICAgICAgLiAgfCAgdGFicGFuZWwgdG9wIGJvcmRlcikKLSAgICAgICAg
ICogICAgICAgICAgIC4gICAgICBvdXRzaWRlIG9mIHRoZSB0YWIgICAgIC4gIHYKLSAgICAgICAg
ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAg
ICAgKgotICAgICAgICAgKiBUbyBkcmF3IHRoZSBnYXAsIHdlIHVzZSBndGtfcGFpbnRfYm94X2dh
cCgpLCBzZWUgY29tbWVudCBpbgotICAgICAgICAgKiBtb3pfZ3RrX3RhYnBhbmVsc19wYWludCgp
LiBUaGlzIGJveF9nYXAgaXMgbWFkZSAzICogZ2FwX2hlaWdodCB0YWxsLAotICAgICAgICAgKiB3
aGljaCBzaG91bGQgc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgb25seSB2aXNpYmxlIGJvcmRl
ciBpcyB0aGUKLSAgICAgICAgICogcGllcmNlZCBvbmUuICBJZiB0aGUgdGFiIGlzIGluIHRoZSBt
aWRkbGUsIHdlIG1ha2UgdGhlIGJveF9nYXAgYmVnaW4KLSAgICAgICAgICogYSBiaXQgdG8gdGhl
IGxlZnQgb2YgdGhlIHRhYiBhbmQgZW5kIGEgYml0IHRvIHRoZSByaWdodCwgYWRqdXN0aW5nCi0g
ICAgICAgICAqIHRoZSBnYXAgcG9zaXRpb24gc28gaXQgc3RpbGwgaXMgdW5kZXIgdGhlIHRhYiwg
YmVjYXVzZSB3ZSB3YW50IHRoZQotICAgICAgICAgKiByZW5kZXJpbmcgb2YgYSBnYXAgaW4gdGhl
IG1pZGRsZSBvZiBhIHRhYnBhbmVsLiAgVGhpcyBpcyB0aGUgcm9sZSBvZgotICAgICAgICAgKiB0
aGUgZ2ludHMgZ2FwX3tsLHJ9X29mZnNldC4gT24gdGhlIGNvbnRyYXJ5LCBpZiB0aGUgdGFiIGlz
IHRoZQotICAgICAgICAgKiBmaXJzdCwgd2UgYWxpZ24gdGhlIHN0YXJ0IGJvcmRlciBvZiB0aGUg
Ym94X2dhcCB3aXRoIHRoZSBzdGFydAotICAgICAgICAgKiBib3JkZXIgb2YgdGhlIHRhYiAobGVm
dCBpZiBMVFIsIHJpZ2h0IGlmIFJUTCksIGJ5IHNldHRpbmcgdGhlCi0gICAgICAgICAqIGFwcHJv
cHJpYXRlIG9mZnNldCB0byAwLiovCi0gICAgICAgIGdpbnQgZ2FwX2xvZmZzZXQsIGdhcF9yb2Zm
c2V0LCBnYXBfdm9mZnNldCwgZ2FwX2hlaWdodDsKLQotICAgICAgICAvKiBHZXQgaGVpZ2h0IG5l
ZWRlZCBieSB0aGUgZ2FwICovCi0gICAgICAgIGdhcF9oZWlnaHQgPSBtb3pfZ3RrX2dldF90YWJf
dGhpY2tuZXNzKCk7Ci0KLSAgICAgICAgLyogRXh0cmFjdCBnYXBfdm9mZnNldCBmcm9tIHRoZSBm
aXJzdCBiaXRzIG9mIGZsYWdzICovCi0gICAgICAgIGdhcF92b2Zmc2V0ID0gZmxhZ3MgJiBNT1pf
R1RLX1RBQl9NQVJHSU5fTUFTSzsKLSAgICAgICAgaWYgKGdhcF92b2Zmc2V0ID4gZ2FwX2hlaWdo
dCkKLSAgICAgICAgICAgIGdhcF92b2Zmc2V0ID0gZ2FwX2hlaWdodDsKLQotICAgICAgICAvKiBT
ZXQgZ2FwX3tsLHJ9X29mZnNldCB0byBhcHByb3ByaWF0ZSB2YWx1ZXMgKi8KLSAgICAgICAgZ2Fw
X2xvZmZzZXQgPSBnYXBfcm9mZnNldCA9IDIwOyAvKiBzaG91bGQgYmUgZW5vdWdoICovCi0gICAg
ICAgIGlmIChmbGFncyAmIE1PWl9HVEtfVEFCX0ZJUlNUKSB7Ci0gICAgICAgICAgICBpZiAoZGly
ZWN0aW9uID09IEdUS19URVhUX0RJUl9SVEwpCi0gICAgICAgICAgICAgICAgZ2FwX3JvZmZzZXQg
PSAwOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0ID0gMDsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChmbGFncyAmIE1PWl9HVEtfVEFCX0JPVFRPTSkgewot
ICAgICAgICAgICAgLyogRW5sYXJnZSB0aGUgY2xpcHJlY3QgdG8gaGF2ZSByb29tIGZvciB0aGUg
ZnVsbCBnYXAgaGVpZ2h0ICovCi0gICAgICAgICAgICBjbGlwcmVjdC0+aGVpZ2h0ICs9IGdhcF9o
ZWlnaHQgLSBnYXBfdm9mZnNldDsKLSAgICAgICAgICAgIGNsaXByZWN0LT55IC09IGdhcF9oZWln
aHQgLSBnYXBfdm9mZnNldDsKLQotICAgICAgICAgICAgLyogRHJhdyB0aGUgdGFiICovCi0gICAg
ICAgICAgICBndGtfcGFpbnRfZXh0ZW5zaW9uKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05P
Uk1BTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NIQURPV19PVVQsIGNs
aXByZWN0LCBnUGFydHMtPnRhYldpZGdldCwgInRhYiIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlY3QtPngsIHJlY3QtPnkgKyBnYXBfdm9mZnNldCwgcmVjdC0+d2lkdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdodCAtIGdhcF92b2Zmc2V0
LCBHVEtfUE9TX1RPUCk7Ci0KLSAgICAgICAgICAgIC8qIERyYXcgdGhlIGdhcDsgZXJhc2Ugd2l0
aCBiYWNrZ3JvdW5kIGNvbG9yIGJlZm9yZSBwYWludGluZyBpbgotICAgICAgICAgICAgICogY2Fz
ZSB0aGVtZSBkb2VzIG5vdCAqLwotICAgICAgICAgICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRf
YmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXByZWN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT54LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgZ2Fw
X3ZvZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAtIGdhcF9oZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlY3QtPndpZHRoLCBnYXBfaGVpZ2h0KTsKLSAgICAgICAgICAgIGd0a19w
YWludF9ib3hfZ2FwKHN0eWxlLCBkcmF3YWJsZSwgR1RLX1NUQVRFX05PUk1BTCwgR1RLX1NIQURP
V19PVVQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgZ1BhcnRzLT50
YWJXaWRnZXQsICJub3RlYm9vayIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LT54IC0gZ2FwX2xvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0LT55
ICsgZ2FwX3ZvZmZzZXQgLSAzICogZ2FwX2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPndpZHRoICsgZ2FwX2xvZmZzZXQgKyBnYXBfcm9mZnNldCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDMgKiBnYXBfaGVpZ2h0LCBHVEtfUE9TX0JPVFRPTSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0LCByZWN0LT53aWR0aCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBFbmxhcmdlIHRoZSBjbGlwcmVjdCB0byBo
YXZlIHJvb20gZm9yIHRoZSBmdWxsIGdhcCBoZWlnaHQgKi8KLSAgICAgICAgICAgIGNsaXByZWN0
LT5oZWlnaHQgKz0gZ2FwX2hlaWdodCAtIGdhcF92b2Zmc2V0OwotCi0gICAgICAgICAgICAvKiBE
cmF3IHRoZSB0YWIgKi8KLSAgICAgICAgICAgIGd0a19wYWludF9leHRlbnNpb24oc3R5bGUsIGRy
YXdhYmxlLCBHVEtfU1RBVEVfTk9STUFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEtfU0hBRE9XX09VVCwgY2xpcHJlY3QsIGdQYXJ0cy0+dGFiV2lkZ2V0LCAidGFiIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lk
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPmhlaWdodCAtIGdhcF92
b2Zmc2V0LCBHVEtfUE9TX0JPVFRPTSk7Ci0KLSAgICAgICAgICAgIC8qIERyYXcgdGhlIGdhcDsg
ZXJhc2Ugd2l0aCBiYWNrZ3JvdW5kIGNvbG9yIGJlZm9yZSBwYWludGluZyBpbgotICAgICAgICAg
ICAgICogY2FzZSB0aGVtZSBkb2VzIG5vdCAqLwotICAgICAgICAgICAgZ3RrX3N0eWxlX2FwcGx5
X2RlZmF1bHRfYmFja2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsIGNsaXBy
ZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LT54LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0
LT55ICsgcmVjdC0+aGVpZ2h0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLSBnYXBfdm9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIGdhcF9oZWlnaHQpOwotICAgICAg
ICAgICAgZ3RrX3BhaW50X2JveF9nYXAoc3R5bGUsIGRyYXdhYmxlLCBHVEtfU1RBVEVfTk9STUFM
LCBHVEtfU0hBRE9XX09VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0
LCBnUGFydHMtPnRhYldpZGdldCwgIm5vdGVib29rIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlY3QtPnggLSBnYXBfbG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlY3QtPnkgKyByZWN0LT5oZWlnaHQgLSBnYXBfdm9mZnNldCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoICsgZ2FwX2xvZmZzZXQgKyBnYXBfcm9mZnNldCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMgKiBnYXBfaGVpZ2h0LCBHVEtfUE9TX1RP
UCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdhcF9sb2Zmc2V0LCByZWN0LT53aWR0
aCk7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19
Ci0KLXN0YXRpYyBnaW50Ci1tb3pfZ3RrX3RhYnBhbmVsc19wYWludChHZGtEcmF3YWJsZSogZHJh
d2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdka1Jl
Y3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJlY3Rpb24gZGlyZWN0aW9uKQotewotICAgIC8q
IFdlIHVzZSBndGtfcGFpbnRfYm94X2dhcCgpIHRvIGRyYXcgdGhlIHRhYnBhbmVscyB3aWRnZXQu
IGd0a19wYWludF9ib3goKQotICAgICAqIGRyYXdzIGFuIGFsbC1wdXJwb3NlIGJveCwgd2hpY2gg
YSBsb3Qgb2YgdGhlbWVzIHJlbmRlciBkaWZmZXJlbnRseS4KLSAgICAgKiBBIHplcm8td2lkdGgg
Z2FwIGlzIHN0aWxsIHZpc2libGUgaW4gbW9zdCB0aGVtZXMsIHNvIHdlIGhpZGUgaXQgdG8gdGhl
Ci0gICAgICogbGVmdCAoMTBweCBzaG91bGQgYmUgZW5vdWdoKSAqLwotICAgIEd0a1N0eWxlKiBz
dHlsZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGly
ZWN0aW9uKGdQYXJ0cy0+dGFiV2lkZ2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtf
d2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRhYldpZGdldCk7Ci0KLSAgICBUU09mZnNldFN0eWxl
R0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfcGFpbnRfYm94X2dhcChzdHls
ZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUwsIEdUS19TSEFET1dfT1VULAotICAgICAgICAg
ICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPnRhYldpZGdldCwgIm5vdGVib29rIiwgcmVj
dC0+eCwgcmVjdC0+eSwKLSAgICAgICAgICAgICAgICAgICAgICByZWN0LT53aWR0aCwgcmVjdC0+
aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgIEdUS19QT1NfVE9QLCAtMTAsIDApOwotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfdGFi
X3Njcm9sbF9hcnJvd19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSog
cmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXBy
ZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR3RrQXJyb3dUeXBlIGFycm93X3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVUeXBlIHN0YXRl
X3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1NoYWRvd1R5cGUgc2hhZG93
X3R5cGUgPSBzdGF0ZS0+YWN0aXZlID8gR1RLX1NIQURPV19JTiA6IEdUS19TSEFET1dfT1VUOwot
ICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBnaW50IGFycm93X3NpemUgPSBNSU4ocmVjdC0+d2lk
dGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgZ2ludCB4ID0gcmVjdC0+eCArIChyZWN0LT53aWR0aCAt
IGFycm93X3NpemUpIC8gMjsKLSAgICBnaW50IHkgPSByZWN0LT55ICsgKHJlY3QtPmhlaWdodCAt
IGFycm93X3NpemUpIC8gMjsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0KLSAgICBzdHls
ZSA9IGd0a193aWRnZXRfZ2V0X3N0eWxlKGdQYXJ0cy0+dGFiV2lkZ2V0KTsKLSAgICBUU09mZnNl
dFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLQotICAgIGlmIChkaXJlY3Rpb24g
PT0gR1RLX1RFWFRfRElSX1JUTCkgewotICAgICAgICBhcnJvd190eXBlID0gKGFycm93X3R5cGUg
PT0gR1RLX0FSUk9XX0xFRlQpID8KLSAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfQVJST1df
UklHSFQgOiBHVEtfQVJST1dfTEVGVDsKLSAgICB9Ci0KLSAgICBndGtfcGFpbnRfYXJyb3coc3R5
bGUsIGRyYXdhYmxlLCBzdGF0ZV90eXBlLCBzaGFkb3dfdHlwZSwgTlVMTCwKLSAgICAgICAgICAg
ICAgICAgICAgZ1BhcnRzLT50YWJXaWRnZXQsICJub3RlYm9vayIsIGFycm93X3R5cGUsIFRSVUUs
Ci0gICAgICAgICAgICAgICAgICAgIHgsIHksIGFycm93X3NpemUsIGFycm93X3NpemUpOwotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVu
dV9iYXJfcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0g
ICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3RhbmdsZSogY2xpcHJlY3QsIEd0a1RleHREaXJl
Y3Rpb24gZGlyZWN0aW9uKQotewotICAgIEd0a1N0eWxlKiBzdHlsZTsKLSAgICBHdGtTaGFkb3dU
eXBlIHNoYWRvd190eXBlOwotICAgIGVuc3VyZV9tZW51X2Jhcl93aWRnZXQoKTsKLSAgICBndGtf
d2lkZ2V0X3NldF9kaXJlY3Rpb24oZ1BhcnRzLT5tZW51QmFyV2lkZ2V0LCBkaXJlY3Rpb24pOwot
Ci0gICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT5tZW51QmFyV2lkZ2V0LCAic2hhZG93
LXR5cGUiLCAmc2hhZG93X3R5cGUsIE5VTEwpOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dl
dF9zdHlsZShnUGFydHMtPm1lbnVCYXJXaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdDcyhz
dHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3N0eWxlX2FwcGx5X2RlZmF1bHRfYmFj
a2dyb3VuZChzdHlsZSwgZHJhd2FibGUsIFRSVUUsIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVjdC0+
eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoLCBy
ZWN0LT5oZWlnaHQpOwotCi0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19T
VEFURV9OT1JNQUwsIHNoYWRvd190eXBlLAotICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQ
YXJ0cy0+bWVudUJhcldpZGdldCwgIm1lbnViYXIiLCByZWN0LT54LCByZWN0LT55LAotICAgICAg
ICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0gICAgcmV0dXJuIE1PWl9H
VEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1vel9ndGtfbWVudV9wb3B1cF9wYWludChH
ZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVj
dGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgZW5zdXJlX21lbnVfcG9wdXBfd2lk
Z2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0cy0+bWVudVBvcHVwV2lk
Z2V0LCBkaXJlY3Rpb24pOwotCi0gICAgc3R5bGUgPSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFy
dHMtPm1lbnVQb3B1cFdpZGdldCk7Ci0KLSAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0
LT54LCByZWN0LT55KTsKLSAgICBndGtfc3R5bGVfYXBwbHlfZGVmYXVsdF9iYWNrZ3JvdW5kKHN0
eWxlLCBkcmF3YWJsZSwgVFJVRSwgR1RLX1NUQVRFX05PUk1BTCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCByZWN0LT54LCByZWN0LT55LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdo
dCk7Ci0gICAgZ3RrX3BhaW50X2JveChzdHlsZSwgZHJhd2FibGUsIEdUS19TVEFURV9OT1JNQUws
IEdUS19TSEFET1dfT1VULCAKLSAgICAgICAgICAgICAgICAgIGNsaXByZWN0LCBnUGFydHMtPm1l
bnVQb3B1cFdpZGdldCwgIm1lbnUiLAotICAgICAgICAgICAgICAgICAgcmVjdC0+eCwgcmVjdC0+
eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUND
RVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19tZW51X3NlcGFyYXRvcl9wYWludChHZGtE
cmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3RhbmdsZSogcmVjdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJl
Y3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIGdib29sZWFuIHdpZGVfc2VwYXJh
dG9yczsKLSAgICBnaW50IHNlcGFyYXRvcl9oZWlnaHQ7Ci0gICAgZ3VpbnQgaG9yaXpvbnRhbF9w
YWRkaW5nOwotICAgIGdpbnQgcGFpbnRfaGVpZ2h0OwotCi0gICAgZW5zdXJlX21lbnVfc2VwYXJh
dG9yX3dpZGdldCgpOwotICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihnUGFydHMtPm1lbnVT
ZXBhcmF0b3JXaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRfZ2V0
X3N0eWxlKGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0
eWxlX2dldChnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICAgICZ3aWRlX3NlcGFyYXRvcnMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgInNlcGFyYXRvci1oZWlnaHQiLCAgICZzZXBhcmF0b3JfaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICJob3Jpem9udGFsLXBhZGRpbmciLCAmaG9yaXpvbnRh
bF9wYWRkaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotCi0gICAgVFNPZmZz
ZXRTdHlsZUdDcyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0KLSAgICBpZiAod2lkZV9zZXBh
cmF0b3JzKSB7Ci0gICAgICAgIGlmIChzZXBhcmF0b3JfaGVpZ2h0ID4gcmVjdC0+aGVpZ2h0KQot
ICAgICAgICAgICAgc2VwYXJhdG9yX2hlaWdodCA9IHJlY3QtPmhlaWdodDsKLQotICAgICAgICBn
dGtfcGFpbnRfYm94KHN0eWxlLCBkcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICBHVEtf
U1RBVEVfTk9STUFMLCBHVEtfU0hBRE9XX0VUQ0hFRF9PVVQsCi0gICAgICAgICAgICAgICAgICAg
ICAgY2xpcHJlY3QsIGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCwgImhzZXBhcmF0b3IiLAot
ICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPnggKyBob3Jpem9udGFsX3BhZGRpbmcgKyBzdHls
ZS0+eHRoaWNrbmVzcywKLSAgICAgICAgICAgICAgICAgICAgICByZWN0LT55ICsgKHJlY3QtPmhl
aWdodCAtIHNlcGFyYXRvcl9oZWlnaHQgLSBzdHlsZS0+eXRoaWNrbmVzcykgLyAyLAotICAgICAg
ICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoIC0gMiAqIChob3Jpem9udGFsX3BhZGRpbmcgKyBz
dHlsZS0+eHRoaWNrbmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yX2hlaWdo
dCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcGFpbnRfaGVpZ2h0ID0gc3R5bGUtPnl0aGlja25l
c3M7Ci0gICAgICAgIGlmIChwYWludF9oZWlnaHQgPiByZWN0LT5oZWlnaHQpCi0gICAgICAgICAg
ICBwYWludF9oZWlnaHQgPSByZWN0LT5oZWlnaHQ7Ci0KLSAgICAgICAgZ3RrX3BhaW50X2hsaW5l
KHN0eWxlLCBkcmF3YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JN
QUwsIGNsaXByZWN0LCBnUGFydHMtPm1lbnVTZXBhcmF0b3JXaWRnZXQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAibWVudWl0ZW0iLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eCAr
IGhvcml6b250YWxfcGFkZGluZyArIHN0eWxlLT54dGhpY2tuZXNzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVjdC0+eCArIHJlY3QtPndpZHRoIC0gaG9yaXpvbnRhbF9wYWRkaW5nIC0gc3R5
bGUtPnh0aGlja25lc3MgLSAxLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC0+eSArIChy
ZWN0LT5oZWlnaHQgLSBzdHlsZS0+eXRoaWNrbmVzcykgLyAyKTsKLSAgICB9Ci0KLSAgICByZXR1
cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19tZW51X2l0ZW1f
cGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUqIHJlY3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0LCBHdGtXaWRnZXRTdGF0ZSog
c3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBnaW50IGZsYWdzLCBHdGtUZXh0RGlyZWN0
aW9uIGRpcmVjdGlvbikKLXsKLSAgICBHdGtTdHlsZSogc3R5bGU7Ci0gICAgR3RrU2hhZG93VHlw
ZSBzaGFkb3dfdHlwZTsKLSAgICBHdGtXaWRnZXQqIGl0ZW1fd2lkZ2V0OwotCi0gICAgaWYgKHN0
YXRlLT5pbkhvdmVyICYmICFzdGF0ZS0+ZGlzYWJsZWQpIHsKLSAgICAgICAgaWYgKGZsYWdzICYg
TU9aX1RPUExFVkVMX01FTlVfSVRFTSkgewotICAgICAgICAgICAgZW5zdXJlX21lbnVfYmFyX2l0
ZW1fd2lkZ2V0KCk7Ci0gICAgICAgICAgICBpdGVtX3dpZGdldCA9IGdQYXJ0cy0+bWVudUJhckl0
ZW1XaWRnZXQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBlbnN1cmVfbWVudV9pdGVt
X3dpZGdldCgpOwotICAgICAgICAgICAgaXRlbV93aWRnZXQgPSBnUGFydHMtPm1lbnVJdGVtV2lk
Z2V0OwotICAgICAgICB9Ci0gICAgICAgIGd0a193aWRnZXRfc2V0X2RpcmVjdGlvbihpdGVtX3dp
ZGdldCwgZGlyZWN0aW9uKTsKLSAgICAgICAgCi0gICAgICAgIHN0eWxlID0gZ3RrX3dpZGdldF9n
ZXRfc3R5bGUoaXRlbV93aWRnZXQpOwotICAgICAgICBUU09mZnNldFN0eWxlR0NzKHN0eWxlLCBy
ZWN0LT54LCByZWN0LT55KTsKLQotICAgICAgICBndGtfd2lkZ2V0X3N0eWxlX2dldChpdGVtX3dp
ZGdldCwgInNlbGVjdGVkLXNoYWRvdy10eXBlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJnNoYWRvd190eXBlLCBOVUxMKTsKLQotICAgICAgICBndGtfcGFpbnRfYm94KHN0eWxlLCBk
cmF3YWJsZSwgR1RLX1NUQVRFX1BSRUxJR0hULCBzaGFkb3dfdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBjbGlwcmVjdCwgaXRlbV93aWRnZXQsICJtZW51aXRlbSIsIHJlY3QtPngsIHJlY3Qt
PnksCi0gICAgICAgICAgICAgICAgICAgICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotc3RhdGljIGdpbnQKLW1v
el9ndGtfbWVudV9hcnJvd19wYWludChHZGtEcmF3YWJsZSogZHJhd2FibGUsIEdka1JlY3Rhbmds
ZSogcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXByZWN0
LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR3RrVGV4
dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwotICAgIEd0a1N0
YXRlVHlwZSBzdGF0ZV90eXBlID0gQ29udmVydEd0a1N0YXRlKHN0YXRlKTsKLQotICAgIGVuc3Vy
ZV9tZW51X2l0ZW1fd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGlyZWN0aW9uKGdQYXJ0
cy0+bWVudUl0ZW1XaWRnZXQsIGRpcmVjdGlvbik7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRf
Z2V0X3N0eWxlKGdQYXJ0cy0+bWVudUl0ZW1XaWRnZXQpOwotCi0gICAgVFNPZmZzZXRTdHlsZUdD
cyhzdHlsZSwgcmVjdC0+eCwgcmVjdC0+eSk7Ci0gICAgZ3RrX3BhaW50X2Fycm93KHN0eWxlLCBk
cmF3YWJsZSwgc3RhdGVfdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgKHN0YXRlX3R5cGUgPT0g
R1RLX1NUQVRFX1BSRUxJR0hUKSA/IEdUS19TSEFET1dfSU4gOiBHVEtfU0hBRE9XX09VVCwKLSAg
ICAgICAgICAgICAgICAgICAgY2xpcHJlY3QsIGdQYXJ0cy0+bWVudUl0ZW1XaWRnZXQsICJtZW51
aXRlbSIsCi0gICAgICAgICAgICAgICAgICAgIChkaXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX0xU
UikgPyBHVEtfQVJST1dfUklHSFQgOiBHVEtfQVJST1dfTEVGVCwKLSAgICAgICAgICAgICAgICAg
ICAgVFJVRSwgcmVjdC0+eCwgcmVjdC0+eSwgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Ci0K
LSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1zdGF0aWMgZ2ludAotbW96X2d0a19j
aGVja19tZW51X2l0ZW1fcGFpbnQoR2RrRHJhd2FibGUqIGRyYXdhYmxlLCBHZGtSZWN0YW5nbGUq
IHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtSZWN0YW5nbGUqIGNsaXBy
ZWN0LCBHdGtXaWRnZXRTdGF0ZSogc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnYm9vbGVhbiBjaGVja2VkLCBnYm9vbGVhbiBpc3JhZGlvLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3RhdGVU
eXBlIHN0YXRlX3R5cGUgPSBDb252ZXJ0R3RrU3RhdGUoc3RhdGUpOwotICAgIEd0a1N0eWxlKiBz
dHlsZTsKLSAgICBHdGtTaGFkb3dUeXBlIHNoYWRvd190eXBlID0gKGNoZWNrZWQpP0dUS19TSEFE
T1dfSU46R1RLX1NIQURPV19PVVQ7Ci0gICAgZ2ludCBvZmZzZXQ7Ci0gICAgZ2ludCBpbmRpY2F0
b3Jfc2l6ZTsKLSAgICBnaW50IHgsIHk7Ci0KLSAgICBtb3pfZ3RrX21lbnVfaXRlbV9wYWludChk
cmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBGQUxTRSwgZGlyZWN0aW9uKTsKLQotICAg
IGVuc3VyZV9jaGVja19tZW51X2l0ZW1fd2lkZ2V0KCk7Ci0gICAgZ3RrX3dpZGdldF9zZXRfZGly
ZWN0aW9uKGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgZGlyZWN0aW9uKTsKLQotICAgIGd0
a193aWRnZXRfc3R5bGVfZ2V0IChnUGFydHMtPmNoZWNrTWVudUl0ZW1XaWRnZXQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICJpbmRpY2F0b3Itc2l6ZSIsICZpbmRpY2F0b3Jfc2l6ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSNpZmRlZiBHVEtfQVBJX1ZFUlNJT05f
MgotICAgIGlmIChjaGVja2VkIHx8IEdUS19DSEVDS19NRU5VX0lURU0oZ1BhcnRzLT5jaGVja01l
bnVJdGVtV2lkZ2V0KS0+YWx3YXlzX3Nob3dfdG9nZ2xlKSB7Ci0jZWxzZQotICAgIGlmIChjaGVj
a2VkIHx8IEZBTFNFKSB7Ci0jZW5kaWYKLSAgICAgIHN0eWxlID0gZ3RrX3dpZGdldF9nZXRfc3R5
bGUoZ1BhcnRzLT5jaGVja01lbnVJdGVtV2lkZ2V0KTsKLQotICAgICAgb2Zmc2V0ID0gZ3RrX2Nv
bnRhaW5lcl9nZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZ1BhcnRzLT5jaGVja01lbnVJ
dGVtV2lkZ2V0KSkgKyBzdHlsZS0+eHRoaWNrbmVzcyArIDI7Ci0KLSAgICAgIC8qIHdoaWxlIG5v
cm1hbGx5IHRoaXMgIjMiIHdvdWxkIGJlIHRoZSBob3Jpem9udGFsLXBhZGRpbmcgc3R5bGUgdmFs
dWUsIHBhc3NpbmcgaXQgdG8gR2Vja28KLSAgICAgICAgIGFzIHRoZSB2YWx1ZSBvZiBtZW51aXRl
bSBwYWRkaW5nIGNhdXNlcyBwcm9ibGVtcyB3aXRoIGRyb3Bkb3ducyAoYnVnIDQwNjEyOSksIHNv
IGluIHRoZSBtZW51LmNzcwotICAgICAgICAgZmlsZSB0aGlzIGlzIGhhcmRjb2RlZCBhcyAzcHgu
IFllcyBpdCBzdWNrcywgYnV0IHdlIGRvbid0IHJlYWxseSBoYXZlIGEgY2hvaWNlLiAqLwotICAg
ICAgeCA9IChkaXJlY3Rpb24gPT0gR1RLX1RFWFRfRElSX1JUTCkgPwotICAgICAgICAgICAgcmVj
dC0+d2lkdGggLSBpbmRpY2F0b3Jfc2l6ZSAtIG9mZnNldCAtIDM6IHJlY3QtPnggKyBvZmZzZXQg
KyAzOwotICAgICAgeSA9IHJlY3QtPnkgKyAocmVjdC0+aGVpZ2h0IC0gaW5kaWNhdG9yX3NpemUp
IC8gMjsKLQotICAgICAgVFNPZmZzZXRTdHlsZUdDcyhzdHlsZSwgeCwgeSk7Ci0gICAgICBndGtf
Y2hlY2tfbWVudV9pdGVtX3NldF9hY3RpdmUoR1RLX0NIRUNLX01FTlVfSVRFTShnUGFydHMtPmNo
ZWNrTWVudUl0ZW1XaWRnZXQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNoZWNrZWQpOwotCi0gICAgICBpZiAoaXNyYWRpbykgewotICAgICAgICBndGtfcGFpbnRfb3B0
aW9uKHN0eWxlLCBkcmF3YWJsZSwgc3RhdGVfdHlwZSwgc2hhZG93X3R5cGUsIGNsaXByZWN0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgIm9w
dGlvbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgaW5kaWNhdG9yX3NpemUsIGlu
ZGljYXRvcl9zaXplKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGd0a19wYWludF9jaGVjayhz
dHlsZSwgZHJhd2FibGUsIHN0YXRlX3R5cGUsIHNoYWRvd190eXBlLCBjbGlwcmVjdCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGdQYXJ0cy0+Y2hlY2tNZW51SXRlbVdpZGdldCwgImNoZWNrIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHgsIHksIGluZGljYXRvcl9zaXplLCBpbmRpY2F0b3Jf
c2l6ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0K
LQotc3RhdGljIGdpbnQKLW1vel9ndGtfd2luZG93X3BhaW50KEdka0RyYXdhYmxlKiBkcmF3YWJs
ZSwgR2RrUmVjdGFuZ2xlKiByZWN0LAotICAgICAgICAgICAgICAgICAgICAgR2RrUmVjdGFuZ2xl
KiBjbGlwcmVjdCwgR3RrVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24pCi17Ci0gICAgR3RrU3R5bGUq
IHN0eWxlOwotCi0gICAgZW5zdXJlX3dpbmRvd193aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3Nl
dF9kaXJlY3Rpb24oZ1BhcnRzLT5wcm90b1dpbmRvdywgZGlyZWN0aW9uKTsKLQotICAgIHN0eWxl
ID0gZ3RrX3dpZGdldF9nZXRfc3R5bGUoZ1BhcnRzLT5wcm90b1dpbmRvdyk7Ci0KLSAgICBUU09m
ZnNldFN0eWxlR0NzKHN0eWxlLCByZWN0LT54LCByZWN0LT55KTsKLSAgICBndGtfc3R5bGVfYXBw
bHlfZGVmYXVsdF9iYWNrZ3JvdW5kKHN0eWxlLCBkcmF3YWJsZSwgVFJVRSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9OT1JNQUwsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcmVjdCwgcmVjdC0+eCwgcmVjdC0+eSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QtPndpZHRoLCByZWN0
LT5oZWlnaHQpOwotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKIG1vel9n
dGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVm
dCwgZ2ludCogdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50KiByaWdodCwgZ2lu
dCogYm90dG9tLCBHdGtUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ2Jvb2xlYW4gaW5odG1sKQpAQCAtMjcwNSw1MiArMTI5Myw2IEBAIG1vel9ndGtf
Z2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgZ2ludCogbGVmdCwg
Z2ludCogdG9wLAogICAgICAgICBlbnN1cmVfZW50cnlfd2lkZ2V0KCk7CiAgICAgICAgIHcgPSBn
UGFydHMtPmVudHJ5V2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJF
RVZJRVc6Ci0gICAgICAgIGVuc3VyZV90cmVlX3ZpZXdfd2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBn
UGFydHMtPnRyZWVWaWV3V2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtf
VFJFRV9IRUFERVJfQ0VMTDoKLSAgICAgICAgewotICAgICAgICAgICAgLyogQSBUcmVlIEhlYWRl
ciBpbiBHVEsgaXMganVzdCBhIGRpZmZlcmVudCBzdHlsZWQgYnV0dG9uIAotICAgICAgICAgICAg
ICogSXQgbXVzdCBiZSBwbGFjZWQgaW4gYSBUcmVlVmlldyBmb3IgZ2V0dGluZyB0aGUgY29ycmVj
dCBzdHlsZQotICAgICAgICAgICAgICogYXNzaWduZWQuCi0gICAgICAgICAgICAgKiBUaGF0IGlz
IHdoeSB0aGUgZm9sbG93aW5nIGNvZGUgaXMgdGhlIHNhbWUgYXMgZm9yIE1PWl9HVEtfQlVUVE9O
LiAgCi0gICAgICAgICAgICAgKiAqLwotCi0gICAgICAgICAgICBHdGtCb3JkZXIgaW5uZXJfYm9y
ZGVyOwotICAgICAgICAgICAgZ2Jvb2xlYW4gaW50ZXJpb3JfZm9jdXM7Ci0gICAgICAgICAgICBn
aW50IGZvY3VzX3dpZHRoLCBmb2N1c19wYWQ7Ci0gICAgICAgICAgICBHdGtTdHlsZSogc3R5bGU7
Ci0KLSAgICAgICAgICAgIGVuc3VyZV90cmVlX2hlYWRlcl9jZWxsX3dpZGdldCgpOwotICAgICAg
ICAgICAgKmxlZnQgPSAqdG9wID0gKnJpZ2h0ID0gKmJvdHRvbSA9IGd0a19jb250YWluZXJfZ2V0
X2JvcmRlcl93aWR0aChHVEtfQ09OVEFJTkVSKGdQYXJ0cy0+dHJlZUhlYWRlckNlbGxXaWRnZXQp
KTsKLQotICAgICAgICAgICAgbW96X2d0a193aWRnZXRfZ2V0X2ZvY3VzKGdQYXJ0cy0+dHJlZUhl
YWRlckNlbGxXaWRnZXQsICZpbnRlcmlvcl9mb2N1cywgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFk
KTsKLSAgICAgICAgICAgIG1vel9ndGtfYnV0dG9uX2dldF9pbm5lcl9ib3JkZXIoZ1BhcnRzLT50
cmVlSGVhZGVyQ2VsbFdpZGdldCwgJmlubmVyX2JvcmRlcik7Ci0gICAgICAgICAgICAqbGVmdCAr
PSBmb2N1c193aWR0aCArIGZvY3VzX3BhZCArIGlubmVyX2JvcmRlci5sZWZ0OwotICAgICAgICAg
ICAgKnJpZ2h0ICs9IGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkICsgaW5uZXJfYm9yZGVyLnJpZ2h0
OwotICAgICAgICAgICAgKnRvcCArPSBmb2N1c193aWR0aCArIGZvY3VzX3BhZCArIGlubmVyX2Jv
cmRlci50b3A7Ci0gICAgICAgICAgICAqYm90dG9tICs9IGZvY3VzX3dpZHRoICsgZm9jdXNfcGFk
ICsgaW5uZXJfYm9yZGVyLmJvdHRvbTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgc3R5bGUg
PSBndGtfd2lkZ2V0X2dldF9zdHlsZShnUGFydHMtPnRyZWVIZWFkZXJDZWxsV2lkZ2V0KTsKLSAg
ICAgICAgICAgICpsZWZ0ICs9IHN0eWxlLT54dGhpY2tuZXNzOwotICAgICAgICAgICAgKnJpZ2h0
ICs9IHN0eWxlLT54dGhpY2tuZXNzOwotICAgICAgICAgICAgKnRvcCArPSBzdHlsZS0+eXRoaWNr
bmVzczsKLSAgICAgICAgICAgICpib3R0b20gKz0gc3R5bGUtPnl0aGlja25lc3M7Ci0gICAgICAg
ICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotICAgICAgICB9Ci0gICAgY2FzZSBNT1pfR1RL
X1RSRUVfSEVBREVSX1NPUlRBUlJPVzoKLSAgICAgICAgZW5zdXJlX3RyZWVfaGVhZGVyX2NlbGxf
d2lkZ2V0KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPnRyZWVIZWFkZXJTb3J0QXJyb3dXaWRnZXQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19EUk9QRE9XTl9FTlRSWToKLSAgICAg
ICAgZW5zdXJlX2NvbWJvX2JveF9lbnRyeV93aWRnZXRzKCk7Ci0gICAgICAgIHcgPSBnUGFydHMt
PmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBN
T1pfR1RLX0RST1BET1dOX0FSUk9XOgotICAgICAgICBlbnN1cmVfY29tYm9fYm94X2VudHJ5X3dp
ZGdldHMoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+Y29tYm9Cb3hFbnRyeUJ1dHRvbldpZGdldDsK
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNT1pfR1RLX0RST1BET1dOOgogICAgICAgICB7CiAg
ICAgICAgICAgICAvKiBXZSBuZWVkIHRvIGFjY291bnQgZm9yIHRoZSBhcnJvdyBvbiB0aGUgZHJv
cGRvd24sIHNvIHRleHQKQEAgLTI4MDMsMjAgKzEzNDUsMTAgQEAgbW96X2d0a19nZXRfd2lkZ2V0
X2JvcmRlcihHdGtUaGVtZVdpZGdldFR5cGUgd2lkZ2V0LCBnaW50KiBsZWZ0LCBnaW50KiB0b3As
CiAKICAgICAgICAgICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7CiAgICAgICAgIH0KLSAgICBj
YXNlIE1PWl9HVEtfVEFCUEFORUxTOgotICAgICAgICBlbnN1cmVfdGFiX3dpZGdldCgpOwotICAg
ICAgICB3ID0gZ1BhcnRzLT50YWJXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9a
X0dUS19QUk9HUkVTU0JBUjoKICAgICAgICAgZW5zdXJlX3Byb2dyZXNzX3dpZGdldCgpOwogICAg
ICAgICB3ID0gZ1BhcnRzLT5wcm9ncmVzV2lkZ2V0OwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1PWl9HVEtfU1BJTkJVVFRPTl9FTlRSWToKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTl9V
UDoKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTl9ET1dOOgotICAgICAgICBlbnN1cmVfc3Bp
bl93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+c3BpbldpZGdldDsKLSAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNT1pfR1RLX1NDQUxFX0hPUklaT05UQUw6CiAgICAgICAgIGVuc3VyZV9z
Y2FsZV93aWRnZXQoKTsKICAgICAgICAgdyA9IGdQYXJ0cy0+aFNjYWxlV2lkZ2V0OwpAQCAtMjgy
NSw4OSArMTM1Nyw3IEBAIG1vel9ndGtfZ2V0X3dpZGdldF9ib3JkZXIoR3RrVGhlbWVXaWRnZXRU
eXBlIHdpZGdldCwgZ2ludCogbGVmdCwgZ2ludCogdG9wLAogICAgICAgICBlbnN1cmVfc2NhbGVf
d2lkZ2V0KCk7CiAgICAgICAgIHcgPSBnUGFydHMtPnZTY2FsZVdpZGdldDsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNT1pfR1RLX0ZSQU1FOgotICAgICAgICBlbnN1cmVfZnJhbWVfd2lkZ2V0
KCk7Ci0gICAgICAgIHcgPSBnUGFydHMtPmZyYW1lV2lkZ2V0OwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIE1PWl9HVEtfQ0hFQ0tCVVRUT05fTEFCRUw6Ci0gICAgY2FzZSBNT1pfR1RLX1JBRElP
QlVUVE9OX0xBQkVMOgotICAgICAgICB7Ci0gICAgICAgICAgICBnYm9vbGVhbiBpbnRlcmlvcl9m
b2N1czsKLSAgICAgICAgICAgIGdpbnQgZm9jdXNfd2lkdGgsIGZvY3VzX3BhZDsKLQotICAgICAg
ICAgICAgLyogSWYgdGhlIGZvY3VzIGlzIGludGVyaW9yLCB0aGVuIHRoZSBsYWJlbCBoYXMgYSBi
b3JkZXIgb2YKLSAgICAgICAgICAgICAgIChmb2N1c193aWR0aCArIGZvY3VzX3BhZCkuICovCi0g
ICAgICAgICAgICBpZiAod2lkZ2V0ID09IE1PWl9HVEtfQ0hFQ0tCVVRUT05fTEFCRUwpIHsKLSAg
ICAgICAgICAgICAgICBlbnN1cmVfY2hlY2tib3hfd2lkZ2V0KCk7Ci0gICAgICAgICAgICAgICAg
bW96X2d0a193aWRnZXRfZ2V0X2ZvY3VzKGdQYXJ0cy0+Y2hlY2tib3hXaWRnZXQsICZpbnRlcmlv
cl9mb2N1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZm9j
dXNfd2lkdGgsICZmb2N1c19wYWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICAg
ICAgICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPnJhZGlvYnV0dG9uV2lkZ2V0
LCAmaW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgaWYgKGludGVyaW9yX2ZvY3VzKQotICAgICAgICAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpy
aWdodCA9ICpib3R0b20gPSAoZm9jdXNfd2lkdGggKyBmb2N1c19wYWQpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICpsZWZ0ID0gKnRvcCA9ICpyaWdodCA9ICpib3R0b20gPSAw
OwotCi0gICAgICAgICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotICAgICAgICB9Ci0KLSAg
ICBjYXNlIE1PWl9HVEtfQ0hFQ0tCVVRUT05fQ09OVEFJTkVSOgotICAgIGNhc2UgTU9aX0dUS19S
QURJT0JVVFRPTl9DT05UQUlORVI6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGdib29sZWFuIGlu
dGVyaW9yX2ZvY3VzOwotICAgICAgICAgICAgZ2ludCBmb2N1c193aWR0aCwgZm9jdXNfcGFkOwot
Ci0gICAgICAgICAgICAvKiBJZiB0aGUgZm9jdXMgaXMgX25vdF8gaW50ZXJpb3IsIHRoZW4gdGhl
IGNvbnRhaW5lciBoYXMgYSBib3JkZXIKLSAgICAgICAgICAgICAgIG9mIChmb2N1c193aWR0aCAr
IGZvY3VzX3BhZCkuICovCi0gICAgICAgICAgICBpZiAod2lkZ2V0ID09IE1PWl9HVEtfQ0hFQ0tC
VVRUT05fQ09OVEFJTkVSKSB7Ci0gICAgICAgICAgICAgICAgZW5zdXJlX2NoZWNrYm94X3dpZGdl
dCgpOwotICAgICAgICAgICAgICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPmNo
ZWNrYm94V2lkZ2V0LCAmaW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAg
ICAgICB3ID0gZ1BhcnRzLT5jaGVja2JveFdpZGdldDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgZW5zdXJlX3JhZGlvYnV0dG9uX3dpZGdldCgpOwotICAgICAgICAgICAg
ICAgIG1vel9ndGtfd2lkZ2V0X2dldF9mb2N1cyhnUGFydHMtPnJhZGlvYnV0dG9uV2lkZ2V0LCAm
aW50ZXJpb3JfZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JmZvY3VzX3dpZHRoLCAmZm9jdXNfcGFkKTsKLSAgICAgICAgICAgICAgICB3ID0gZ1BhcnRzLT5y
YWRpb2J1dHRvbldpZGdldDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgKmxlZnQgPSAq
dG9wID0gKnJpZ2h0ID0gKmJvdHRvbSA9IGd0a19jb250YWluZXJfZ2V0X2JvcmRlcl93aWR0aChH
VEtfQ09OVEFJTkVSKHcpKTsKLQotICAgICAgICAgICAgaWYgKCFpbnRlcmlvcl9mb2N1cykgewot
ICAgICAgICAgICAgICAgICpsZWZ0ICs9IChmb2N1c193aWR0aCArIGZvY3VzX3BhZCk7Ci0gICAg
ICAgICAgICAgICAgKnJpZ2h0ICs9IChmb2N1c193aWR0aCArIGZvY3VzX3BhZCk7Ci0gICAgICAg
ICAgICAgICAgKnRvcCArPSAoZm9jdXNfd2lkdGggKyBmb2N1c19wYWQpOwotICAgICAgICAgICAg
ICAgICpib3R0b20gKz0gKGZvY3VzX3dpZHRoICsgZm9jdXNfcGFkKTsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLSAgICAgICAgfQotICAgIGNh
c2UgTU9aX0dUS19NRU5VUE9QVVA6Ci0gICAgICAgIGVuc3VyZV9tZW51X3BvcHVwX3dpZGdldCgp
OwotICAgICAgICB3ID0gZ1BhcnRzLT5tZW51UG9wdXBXaWRnZXQ7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTU9aX0dUS19NRU5VSVRFTToKLSAgICAgICAgZW5zdXJlX21lbnVfaXRlbV93aWRn
ZXQoKTsKLSAgICAgICAgZW5zdXJlX21lbnVfYmFyX2l0ZW1fd2lkZ2V0KCk7Ci0gICAgICAgIHcg
PSBnUGFydHMtPm1lbnVJdGVtV2lkZ2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9H
VEtfQ0hFQ0tNRU5VSVRFTToKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9NRU5VSVRFTToKLSAgICAg
ICAgZW5zdXJlX2NoZWNrX21lbnVfaXRlbV93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+
Y2hlY2tNZW51SXRlbVdpZGdldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RB
QjoKLSAgICAgICAgZW5zdXJlX3RhYl93aWRnZXQoKTsKLSAgICAgICAgdyA9IGdQYXJ0cy0+dGFi
V2lkZ2V0OwotICAgICAgICBicmVhazsKICAgICAvKiBUaGVzZSB3aWRnZXRzIGhhdmUgbm8gYm9y
ZGVycywgc2luY2UgdGhleSBhcmUgbm90IGNvbnRhaW5lcnMuICovCi0gICAgY2FzZSBNT1pfR1RL
X1NQTElUVEVSX0hPUklaT05UQUw6Ci0gICAgY2FzZSBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FM
OgogICAgIGNhc2UgTU9aX0dUS19DSEVDS0JVVFRPTjoKICAgICBjYXNlIE1PWl9HVEtfUkFESU9C
VVRUT046CiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9CVVRUT046CkBAIC0yOTE3LDIzICsx
MzY3LDcgQEAgbW96X2d0a19nZXRfd2lkZ2V0X2JvcmRlcihHdGtUaGVtZVdpZGdldFR5cGUgd2lk
Z2V0LCBnaW50KiBsZWZ0LCBnaW50KiB0b3AsCiAgICAgY2FzZSBNT1pfR1RLX1NDUk9MTEJBUl9U
SFVNQl9WRVJUSUNBTDoKICAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfSE9SSVpPTlRBTDoK
ICAgICBjYXNlIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUw6Ci0gICAgY2FzZSBNT1pfR1RL
X0dSSVBQRVI6CiAgICAgY2FzZSBNT1pfR1RLX1BST0dSRVNTX0NIVU5LOgotICAgIGNhc2UgTU9a
X0dUS19FWFBBTkRFUjoKLSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVdfRVhQQU5ERVI6Ci0gICAg
Y2FzZSBNT1pfR1RLX1RPT0xCQVJfU0VQQVJBVE9SOgotICAgIGNhc2UgTU9aX0dUS19NRU5VU0VQ
QVJBVE9SOgotICAgIC8qIFRoZXNlIHdpZGdldHMgaGF2ZSBubyBib3JkZXJzLiovCi0gICAgY2Fz
ZSBNT1pfR1RLX1NQSU5CVVRUT046Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xUSVA6Ci0gICAgY2Fz
ZSBNT1pfR1RLX1dJTkRPVzoKLSAgICBjYXNlIE1PWl9HVEtfUkVTSVpFUjoKLSAgICBjYXNlIE1P
Wl9HVEtfTUVOVUFSUk9XOgotICAgIGNhc2UgTU9aX0dUS19UT09MQkFSQlVUVE9OX0FSUk9XOgot
ICAgIGNhc2UgTU9aX0dUS19UT09MQkFSOgotICAgIGNhc2UgTU9aX0dUS19NRU5VQkFSOgotICAg
IGNhc2UgTU9aX0dUS19UQUJfU0NST0xMQVJST1c6Ci0gICAgY2FzZSBNT1pfR1RLX0VOVFJZX0NB
UkVUOgogICAgICAgICAqbGVmdCA9ICp0b3AgPSAqcmlnaHQgPSAqYm90dG9tID0gMDsKICAgICAg
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKICAgICBkZWZhdWx0OgpAQCAtMjk0OSwxMzEgKzEz
ODMsNiBAQCBtb3pfZ3RrX2dldF93aWRnZXRfYm9yZGVyKEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRn
ZXQsIGdpbnQqIGxlZnQsIGdpbnQqIHRvcCwKIH0KIAogZ2ludAotbW96X2d0a19nZXRfY29tYm9f
Ym94X2VudHJ5X2J1dHRvbl9zaXplKGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCi17Ci0gICAg
LyoKLSAgICAgKiBXZSBnZXQgdGhlIHJlcXVpc2l0aW9uIG9mIHRoZSBkcm9wIGRvd24gYnV0dG9u
LCB3aGljaCBpbmNsdWRlcwotICAgICAqIGFsbCBwYWRkaW5nLCBib3JkZXIgYW5kIGZvY3VzIGxp
bmUgd2lkdGhzIHRoZSBidXR0b24gdXNlcywKLSAgICAgKiBhcyB3ZWxsIGFzIHRoZSBtaW5pbXVt
IGFycm93IHNpemUgYW5kIGl0cyBwYWRkaW5nCi0gICAgICogKi8KLSAgICBHdGtSZXF1aXNpdGlv
biByZXF1aXNpdGlvbjsKLSAgICBlbnN1cmVfY29tYm9fYm94X2VudHJ5X3dpZGdldHMoKTsKLQot
I2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgZ3RrX3dpZGdldF9zaXplX3JlcXVlc3QoZ1Bh
cnRzLT5jb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0LCAmcmVxdWlzaXRpb24pOwotI2Vsc2UKLSAg
ICBndGtfc2l6ZV9yZXF1ZXN0X2dldF9zaXplKEdUS19TSVpFX1JFUVVFU1QoZ1BhcnRzLT5jb21i
b0JveEVudHJ5QnV0dG9uV2lkZ2V0KSwgJnJlcXVpc2l0aW9uLCBOVUxMKTsKLSNlbmRpZgotCi0g
ICAgKndpZHRoID0gcmVxdWlzaXRpb24ud2lkdGg7Ci0gICAgKmhlaWdodCA9IHJlcXVpc2l0aW9u
LmhlaWdodDsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9n
dGtfZ2V0X3RhYl9zY3JvbGxfYXJyb3dfc2l6ZShnaW50KiB3aWR0aCwgZ2ludCogaGVpZ2h0KQot
ewotICAgIGdpbnQgYXJyb3dfc2l6ZTsKLQotICAgIGVuc3VyZV90YWJfd2lkZ2V0KCk7Ci0gICAg
Z3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT50YWJXaWRnZXQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgInNjcm9sbC1hcnJvdy1obGVuZ3RoIiwgJmFycm93X3NpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICAqaGVpZ2h0ID0gKndpZHRoID0gYXJyb3dfc2l6
ZTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0
X2Rvd25hcnJvd19zaXplKGdpbnQqIHdpZHRoLCBnaW50KiBoZWlnaHQpCi17Ci0gICAgR3RrUmVx
dWlzaXRpb24gcmVxdWlzaXRpb247Ci0gICAgZW5zdXJlX2J1dHRvbl9hcnJvd193aWRnZXQoKTsK
LQotI2lmZGVmIEdUS19BUElfVkVSU0lPTl8yCi0gICAgZ3RrX3dpZGdldF9zaXplX3JlcXVlc3Qo
Z1BhcnRzLT5idXR0b25BcnJvd1dpZGdldCwgJnJlcXVpc2l0aW9uKTsKLSNlbHNlCi0gICAgZ3Rr
X3NpemVfcmVxdWVzdF9nZXRfc2l6ZShHVEtfU0laRV9SRVFVRVNUKGdQYXJ0cy0+YnV0dG9uQXJy
b3dXaWRnZXQpLCAmcmVxdWlzaXRpb24sIE5VTEwpOwotI2VuZGlmCi0KLSAgICAqd2lkdGggPSBy
ZXF1aXNpdGlvbi53aWR0aDsKLSAgICAqaGVpZ2h0ID0gcmVxdWlzaXRpb24uaGVpZ2h0OwotCi0g
ICAgcmV0dXJuIE1PWl9HVEtfU1VDQ0VTUzsKLX0KLQotZ2ludAotbW96X2d0a19nZXRfdG9vbGJh
cl9zZXBhcmF0b3Jfd2lkdGgoZ2ludCogc2l6ZSkKLXsKLSAgICBnYm9vbGVhbiB3aWRlX3NlcGFy
YXRvcnM7Ci0gICAgZ2ludCBzZXBhcmF0b3Jfd2lkdGg7Ci0gICAgR3RrU3R5bGUqIHN0eWxlOwot
Ci0gICAgZW5zdXJlX3Rvb2xiYXJfd2lkZ2V0KCk7Ci0KLSAgICBzdHlsZSA9IGd0a193aWRnZXRf
Z2V0X3N0eWxlKGdQYXJ0cy0+dG9vbGJhcldpZGdldCk7Ci0KLSAgICBndGtfd2lkZ2V0X3N0eWxl
X2dldChnUGFydHMtPnRvb2xiYXJXaWRnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgInNw
YWNlLXNpemUiLCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWRlLXNlcGFyYXRv
cnMiLCAgJndpZGVfc2VwYXJhdG9ycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAic2VwYXJh
dG9yLXdpZHRoIiwgJnNlcGFyYXRvcl93aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBO
VUxMKTsKLQotICAgIC8qIEp1c3QgaW4gY2FzZS4uLiAqLwotICAgICpzaXplID0gTUFYKCpzaXpl
LCAod2lkZV9zZXBhcmF0b3JzID8gc2VwYXJhdG9yX3dpZHRoIDogc3R5bGUtPnh0aGlja25lc3Mp
KTsKLQotICAgIHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0
X2V4cGFuZGVyX3NpemUoZ2ludCogc2l6ZSkKLXsKLSAgICBlbnN1cmVfZXhwYW5kZXJfd2lkZ2V0
KCk7Ci0gICAgZ3RrX3dpZGdldF9zdHlsZV9nZXQoZ1BhcnRzLT5leHBhbmRlcldpZGdldCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAiZXhwYW5kZXItc2l6ZSIsIHNpemUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgTlVMTCk7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQot
Ci1naW50Ci1tb3pfZ3RrX2dldF90cmVldmlld19leHBhbmRlcl9zaXplKGdpbnQqIHNpemUpCi17
Ci0gICAgZW5zdXJlX3RyZWVfdmlld193aWRnZXQoKTsKLSAgICBndGtfd2lkZ2V0X3N0eWxlX2dl
dChnUGFydHMtPnRyZWVWaWV3V2lkZ2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICJleHBh
bmRlci1zaXplIiwgc2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAg
IHJldHVybiBNT1pfR1RLX1NVQ0NFU1M7Ci19Ci0KLWdpbnQKLW1vel9ndGtfZ2V0X21lbnVfc2Vw
YXJhdG9yX2hlaWdodChnaW50ICpzaXplKQotewotICAgIGdib29sZWFuIHdpZGVfc2VwYXJhdG9y
czsKLSAgICBnaW50ICAgICBzZXBhcmF0b3JfaGVpZ2h0OwotICAgIEd0a1N0eWxlICpzdHlsZTsK
LQotICAgIGVuc3VyZV9tZW51X3NlcGFyYXRvcl93aWRnZXQoKTsKLQotICAgIGd0a193aWRnZXRf
c3R5bGVfZ2V0KGdQYXJ0cy0+bWVudVNlcGFyYXRvcldpZGdldCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgIndpZGUtc2VwYXJhdG9ycyIsICAmd2lkZV9zZXBhcmF0b3JzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAic2VwYXJhdG9yLWhlaWdodCIsICZzZXBhcmF0b3JfaGVpZ2h0LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLQotICAgIHN0eWxlID0gZ3RrX3dpZGdl
dF9nZXRfc3R5bGUoZ1BhcnRzLT5tZW51U2VwYXJhdG9yV2lkZ2V0KTsKLQotICAgIGlmICh3aWRl
X3NlcGFyYXRvcnMpCi0gICAgICAgICpzaXplID0gc2VwYXJhdG9yX2hlaWdodCArIHN0eWxlLT55
dGhpY2tuZXNzOwotICAgIGVsc2UKLSAgICAgICAgKnNpemUgPSBzdHlsZS0+eXRoaWNrbmVzcyAq
IDI7Ci0KLSAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwotfQotCi1naW50CiBtb3pfZ3RrX2dl
dF9zY2FsZXRodW1iX21ldHJpY3MoR3RrT3JpZW50YXRpb24gb3JpZW50LCBnaW50KiB0aHVtYl9s
ZW5ndGgsIGdpbnQqIHRodW1iX2hlaWdodCkKIHsKICAgR3RrV2lkZ2V0KiB3aWRnZXQ7CkBAIC0z
MTA5LDE5ICsxNDE4LDYgQEAgbW96X2d0a19nZXRfc2Nyb2xsYmFyX21ldHJpY3MoTW96R3RrU2Ny
b2xsYmFyTWV0cmljcyAqbWV0cmljcykKICAgICByZXR1cm4gTU9aX0dUS19TVUNDRVNTOwogfQog
Ci1nYm9vbGVhbgotbW96X2d0a19pbWFnZXNfaW5fbWVudXMoKQotewotICAgIGdib29sZWFuIHJl
c3VsdDsKLSAgICBHdGtTZXR0aW5ncyogc2V0dGluZ3M7Ci0KLSAgICBlbnN1cmVfaW1hZ2VfbWVu
dV9pdGVtX3dpZGdldCgpOwotICAgIHNldHRpbmdzID0gZ3RrX3dpZGdldF9nZXRfc2V0dGluZ3Mo
Z1BhcnRzLT5pbWFnZU1lbnVJdGVtV2lkZ2V0KTsKLQotICAgIGdfb2JqZWN0X2dldChzZXR0aW5n
cywgImd0ay1tZW51LWltYWdlcyIsICZyZXN1bHQsIE5VTEwpOwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KIGdpbnQKIG1vel9ndGtfd2lkZ2V0X3BhaW50KEd0a1RoZW1lV2lkZ2V0VHlwZSB3aWRn
ZXQsIEdka0RyYXdhYmxlKiBkcmF3YWJsZSwKICAgICAgICAgICAgICAgICAgICAgIEdka1JlY3Rh
bmdsZSogcmVjdCwgR2RrUmVjdGFuZ2xlKiBjbGlwcmVjdCwKQEAgLTMxNzcsOTYgKzE0NzMsMTUg
QEAgbW96X2d0a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwgR2RrRHJh
d2FibGUqIGRyYXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19zY2FsZV90aHVtYl9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoR3RrT3JpZW50YXRpb24pIGZsYWdzLCBkaXJlY3Rpb24pOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfU1BJTkJVVFRPTjoKLSAgICAgICAgcmV0
dXJuIG1vel9ndGtfc3Bpbl9wYWludChkcmF3YWJsZSwgcmVjdCwgZGlyZWN0aW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NQSU5CVVRUT05fVVA6Ci0gICAgY2FzZSBNT1pf
R1RLX1NQSU5CVVRUT05fRE9XTjoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfc3Bpbl91cGRvd25f
cGFpbnQoZHJhd2FibGUsIHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICh3aWRnZXQgPT0gTU9aX0dUS19TUElOQlVUVE9OX0RPV04pLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSwgZGlyZWN0aW9uKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NQSU5CVVRUT05fRU5UUlk6Ci0gICAgICAgIGVuc3Vy
ZV9zcGluX3dpZGdldCgpOwotICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWludChkcmF3
YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnUGFydHMtPnNwaW5XaWRnZXQsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgTU9aX0dUS19HUklQUEVSOgotICAgICAgICByZXR1cm4gbW96X2d0a19ncmlwcGVy
X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX1RSRUVWSUVXOgotICAgICAgICByZXR1cm4gbW96X2d0a190cmVldmlld19wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1P
Wl9HVEtfVFJFRV9IRUFERVJfQ0VMTDoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfdHJlZV9oZWFk
ZXJfY2VsbF9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBkaXJlY3Rpb24pOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRV9IRUFERVJfU09SVEFSUk9XOgot
ICAgICAgICByZXR1cm4gbW96X2d0a190cmVlX2hlYWRlcl9zb3J0X2Fycm93X3BhaW50KGRyYXdh
YmxlLCByZWN0LCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoR3RrQXJyb3dUeXBlKSBmbGFncywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVFJFRVZJRVdfRVhQQU5ERVI6Ci0gICAgICAgIHJl
dHVybiBtb3pfZ3RrX3RyZWV2aWV3X2V4cGFuZGVyX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlw
cmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIChHdGtFeHBhbmRlclN0eWxlKSBmbGFncywgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBNT1pfR1RLX0VYUEFOREVSOgotICAgICAgICByZXR1cm4gbW96X2d0a19leHBh
bmRlcl9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoR3RrRXhwYW5kZXJTdHlsZSkgZmxhZ3MsIGRpcmVj
dGlvbik7Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgTU9aX0dUS19FTlRSWToKICAgICAgICAg
ZW5zdXJlX2VudHJ5X3dpZGdldCgpOwogICAgICAgICByZXR1cm4gbW96X2d0a19lbnRyeV9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBnUGFydHMtPmVudHJ5V2lkZ2V0LCBkaXJlY3Rpb24pOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRU5UUllfQ0FSRVQ6Ci0gICAgICAgIHJldHVybiBtb3pf
Z3RrX2NhcmV0X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgZGlyZWN0aW9uKTsKLSAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNT1pfR1RLX0RST1BET1dOOgogICAgICAgICByZXR1cm4g
bW96X2d0a19jb21ib19ib3hfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnYm9vbGVhbikgZmxhZ3Ms
IGRpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19EUk9QRE9XTl9B
UlJPVzoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfY29tYm9fYm94X2VudHJ5X2J1dHRvbl9wYWlu
dChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUsIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRFJPUERPV05fRU5UUlk6Ci0gICAgICAgIGVuc3Vy
ZV9jb21ib19ib3hfZW50cnlfd2lkZ2V0cygpOwotICAgICAgICByZXR1cm4gbW96X2d0a19lbnRy
eV9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBnUGFydHMtPmNvbWJvQm94RW50cnlUZXh0YXJlYVdpZGdldCwg
ZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX0NIRUNLQlVUVE9O
X0NPTlRBSU5FUjoKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9CVVRUT05fQ09OVEFJTkVSOgotICAg
ICAgICByZXR1cm4gbW96X2d0a19jb250YWluZXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXBy
ZWN0LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aWRn
ZXQgPT0gTU9aX0dUS19SQURJT0JVVFRPTl9DT05UQUlORVIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX0NIRUNLQlVUVE9OX0xBQkVMOgotICAgIGNhc2UgTU9aX0dUS19SQURJT0JVVFRP
Tl9MQUJFTDoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtfdG9nZ2xlX2xhYmVsX3BhaW50KGRyYXdh
YmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAod2lkZ2V0ID09IE1PWl9HVEtfUkFESU9CVVRUT05fTEFCRUwpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xCQVI6Ci0gICAgICAgIHJldHVybiBtb3pf
Z3RrX3Rvb2xiYXJfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVE9PTEJBUl9TRVBBUkFUT1I6Ci0gICAg
ICAgIHJldHVybiBtb3pfZ3RrX3Rvb2xiYXJfc2VwYXJhdG9yX3BhaW50KGRyYXdhYmxlLCByZWN0
LCBjbGlwcmVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1RPT0xUSVA6
Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Rvb2x0aXBfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNs
aXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfRlJB
TUU6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX2ZyYW1lX3BhaW50KGRyYXdhYmxlLCByZWN0LCBj
bGlwcmVjdCwgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBNT1pfR1RLX1JF
U0laRVI6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Jlc2l6ZXJfcGFpbnQoZHJhd2FibGUsIHJl
Y3QsIGNsaXByZWN0LCBzdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKICAgICBjYXNlIE1PWl9HVEtfUFJPR1JFU1NC
QVI6CiAgICAgICAgIHJldHVybiBtb3pfZ3RrX3Byb2dyZXNzYmFyX3BhaW50KGRyYXdhYmxlLCBy
ZWN0LCBjbGlwcmVjdCwgZGlyZWN0aW9uKTsKICAgICAgICAgYnJlYWs7CkBAIC0zMjc0LDU0ICsx
NDg5LDYgQEAgbW96X2d0a193aWRnZXRfcGFpbnQoR3RrVGhlbWVXaWRnZXRUeXBlIHdpZGdldCwg
R2RrRHJhd2FibGUqIGRyYXdhYmxlLAogICAgICAgICByZXR1cm4gbW96X2d0a19wcm9ncmVzc19j
aHVua19wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgTU9aX0dUS19UQUI6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3RhYl9wYWludChkcmF3
YWJsZSwgcmVjdCwgY2xpcHJlY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
R3RrVGFiRmxhZ3MpIGZsYWdzLCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IE1PWl9HVEtfVEFCUEFORUxTOgotICAgICAgICByZXR1cm4gbW96X2d0a190YWJwYW5lbHNfcGFp
bnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1PWl9HVEtfVEFCX1NDUk9MTEFSUk9XOgotICAgICAgICByZXR1cm4gbW96X2d0
a190YWJfc2Nyb2xsX2Fycm93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0Fycm93
VHlwZSkgZmxhZ3MsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dU
S19NRU5VQkFSOgotICAgICAgICByZXR1cm4gbW96X2d0a19tZW51X2Jhcl9wYWludChkcmF3YWJs
ZSwgcmVjdCwgY2xpcHJlY3QsIGRpcmVjdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
TU9aX0dUS19NRU5VUE9QVVA6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX21lbnVfcG9wdXBfcGFp
bnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBkaXJlY3Rpb24pOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIE1PWl9HVEtfTUVOVVNFUEFSQVRPUjoKLSAgICAgICAgcmV0dXJuIG1vel9ndGtf
bWVudV9zZXBhcmF0b3JfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIE1PWl9HVEtfTUVOVUlURU06Ci0gICAgICAgIHJldHVybiBtb3pfZ3Rr
X21lbnVfaXRlbV9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlLCBmbGFncywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbik7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19NRU5VQVJST1c6Ci0gICAgICAgIHJldHVybiBt
b3pfZ3RrX21lbnVfYXJyb3dfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfVE9PTEJBUkJVVFRPTl9BUlJPVzoKLSAgICAg
ICAgcmV0dXJuIG1vel9ndGtfZG93bmFycm93X3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVj
dCwgc3RhdGUpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIE1PWl9HVEtfQ0hFQ0tNRU5VSVRF
TToKLSAgICBjYXNlIE1PWl9HVEtfUkFESU9NRU5VSVRFTToKLSAgICAgICAgcmV0dXJuIG1vel9n
dGtfY2hlY2tfbWVudV9pdGVtX3BhaW50KGRyYXdhYmxlLCByZWN0LCBjbGlwcmVjdCwgc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2Jvb2xlYW4p
IGZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp
ZGdldCA9PSBNT1pfR1RLX1JBRElPTUVOVUlURU0pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBNT1pfR1RLX1NQTElUVEVSX0hPUklaT05UQUw6Ci0gICAgICAgIHJldHVybiBtb3pfZ3RrX3Zw
YW5lZF9wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIHN0YXRlKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMOgotICAgICAgICByZXR1cm4g
bW96X2d0a19ocGFuZWRfcGFpbnQoZHJhd2FibGUsIHJlY3QsIGNsaXByZWN0LCBzdGF0ZSk7Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgTU9aX0dUS19XSU5ET1c6Ci0gICAgICAgIHJldHVybiBt
b3pfZ3RrX3dpbmRvd19wYWludChkcmF3YWJsZSwgcmVjdCwgY2xpcHJlY3QsIGRpcmVjdGlvbik7
Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGdfd2FybmluZygiVW5rbm93
biB3aWRnZXQgdHlwZTogJWQiLCB3aWRnZXQpOwogICAgIH0KQEAgLTMzNTQsMTEgKzE1MjEsNiBA
QCB2b2lkIG1vel9ndGtfZGVzdHJveV90aGVtZV9wYXJ0c193aWRnZXRzKEd0a1RoZW1lUGFydHMq
IHBhcnRzKQogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChwYXJ0
cy0+dG9vbHRpcFdpZGdldCkgewotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocGFydHMtPnRv
b2x0aXBXaWRnZXQpOwotICAgICAgICBwYXJ0cy0+dG9vbHRpcFdpZGdldCA9IE5VTEw7Ci0gICAg
fQotCiAgICAgaWYgKHBhcnRzLT5wcm90b1dpbmRvdykgewogICAgICAgICBndGtfd2lkZ2V0X2Rl
c3Ryb3kocGFydHMtPnByb3RvV2luZG93KTsKICAgICAgICAgcGFydHMtPnByb3RvV2luZG93ID0g
TlVMTDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaCBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL2d0a2RyYXdpbmcuaAppbmRleCBjMDBkYTk3Li5mZDNlOGYzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9ndGtkcmF3aW5nLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvZ3RrZHJhd2luZy5oCkBAIC05MSw3ICs5MSw2IEBAIHR5cGVkZWYgc3Ry
dWN0IF9HdGtUaGVtZVBhcnRzIHsKICAgICBHdGtXaWRnZXQqIHJhZGlvYnV0dG9uV2lkZ2V0Owog
ICAgIEd0a1dpZGdldCogaG9yaXpTY3JvbGxiYXJXaWRnZXQ7CiAgICAgR3RrV2lkZ2V0KiB2ZXJ0
U2Nyb2xsYmFyV2lkZ2V0OwotICAgIEd0a1dpZGdldCogc3BpbldpZGdldDsKICAgICBHdGtXaWRn
ZXQqIGhTY2FsZVdpZGdldDsKICAgICBHdGtXaWRnZXQqIHZTY2FsZVdpZGdldDsKICAgICBHdGtX
aWRnZXQqIGVudHJ5V2lkZ2V0OwpAQCAtMTAzLDI4ICsxMDIsNyBAQCB0eXBlZGVmIHN0cnVjdCBf
R3RrVGhlbWVQYXJ0cyB7CiAgICAgR3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5VGV4dGFyZWFXaWRn
ZXQ7CiAgICAgR3RrV2lkZ2V0KiBjb21ib0JveEVudHJ5QnV0dG9uV2lkZ2V0OwogICAgIEd0a1dp
ZGdldCogY29tYm9Cb3hFbnRyeUFycm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCogaGFuZGxlQm94
V2lkZ2V0OwotICAgIEd0a1dpZGdldCogdG9vbGJhcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGZy
YW1lV2lkZ2V0OwotICAgIEd0a1dpZGdldCogc3RhdHVzYmFyV2lkZ2V0OwogICAgIEd0a1dpZGdl
dCogcHJvZ3Jlc1dpZGdldDsKLSAgICBHdGtXaWRnZXQqIHRhYldpZGdldDsKLSAgICBHdGtXaWRn
ZXQqIHRvb2x0aXBXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51QmFyV2lkZ2V0OwotICAgIEd0
a1dpZGdldCogbWVudUJhckl0ZW1XaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51UG9wdXBXaWRn
ZXQ7Ci0gICAgR3RrV2lkZ2V0KiBtZW51SXRlbVdpZGdldDsKLSAgICBHdGtXaWRnZXQqIGltYWdl
TWVudUl0ZW1XaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiBjaGVja01lbnVJdGVtV2lkZ2V0OwotICAg
IEd0a1dpZGdldCogdHJlZVZpZXdXaWRnZXQ7Ci0gICAgR3RrVHJlZVZpZXdDb2x1bW4qIG1pZGRs
ZVRyZWVWaWV3Q29sdW1uOwotICAgIEd0a1dpZGdldCogdHJlZUhlYWRlckNlbGxXaWRnZXQ7Ci0g
ICAgR3RrV2lkZ2V0KiB0cmVlSGVhZGVyU29ydEFycm93V2lkZ2V0OwotICAgIEd0a1dpZGdldCog
ZXhwYW5kZXJXaWRnZXQ7Ci0gICAgR3RrV2lkZ2V0KiB0b29sYmFyU2VwYXJhdG9yV2lkZ2V0Owot
ICAgIEd0a1dpZGdldCogbWVudVNlcGFyYXRvcldpZGdldDsKLSAgICBHdGtXaWRnZXQqIGhwYW5l
ZFdpZGdldDsKLSAgICBHdGtXaWRnZXQqIHZwYW5lZFdpZGdldDsKICAgICBHdGtXaWRnZXQqIHNj
cm9sbGVkV2luZG93V2lkZ2V0OwogfSBHdGtUaGVtZVBhcnRzOwogCkBAIC0xMzQsMjQgKzExMiw2
IEBAIHR5cGVkZWYgZW51bSB7CiAgIE1PWl9HVEtfU1RFUFBFUl9WRVJUSUNBTCAgICA9IDEgPDwg
MgogfSBHdGtTY3JvbGxiYXJCdXR0b25GbGFnczsKIAotLyoqIGZsYWdzIGZvciB0YWIgc3RhdGUg
KiovCi10eXBlZGVmIGVudW0gewotICAvKiBmaXJzdCBlaWdodCBiaXRzIGFyZSB1c2VkIHRvIHBh
c3MgYSBtYXJnaW4gKi8KLSAgTU9aX0dUS19UQUJfTUFSR0lOX01BU0sgICAgID0gMHhGRiwKLSAg
LyogYm90dG9tIHRhYnMgKi8KLSAgTU9aX0dUS19UQUJfQk9UVE9NICAgICAgICAgID0gMSA8PCA4
LAotICAvKiB0aGUgZmlyc3QgdGFiIGluIHRoZSBncm91cCAqLwotICBNT1pfR1RLX1RBQl9GSVJT
VCAgICAgICAgICAgPSAxIDw8IDksCi0gIC8qIHRoZSBzZWxlY3RlZCB0YWIgKi8KLSAgTU9aX0dU
S19UQUJfU0VMRUNURUQgICAgICAgID0gMSA8PCAxMAotfSBHdGtUYWJGbGFnczsKLQotLyoqIGZs
YWdzIGZvciBtZW51aXRlbXMgKiovCi10eXBlZGVmIGVudW0gewotICAvKiBtZW51aXRlbSBpcyBw
YXJ0IG9mIHRoZSBtZW51YmFyICovCi0gIE1PWl9UT1BMRVZFTF9NRU5VX0lURU0gICAgICA9IDEg
PDwgMAotfSBHdGtNZW51SXRlbUZsYWdzOwotCiAvKiBmdW5jdGlvbiB0eXBlIGZvciBtb3pfZ3Rr
X2VuYWJsZV9zdHlsZV9wcm9wcyAqLwogdHlwZWRlZiBnaW50ICgqc3R5bGVfcHJvcF90KShHdGtT
dHlsZSosIGNvbnN0IGdjaGFyKiwgZ2ludCk7CiAKQEAgLTE5MSw4MCArMTUxLDEzIEBAIHR5cGVk
ZWYgZW51bSB7CiAgIC8qIFBhaW50cyBhIEd0a1NjYWxlIHRodW1iLiAqLwogICBNT1pfR1RLX1ND
QUxFX1RIVU1CX0hPUklaT05UQUwsCiAgIE1PWl9HVEtfU0NBTEVfVEhVTUJfVkVSVElDQUwsCi0g
IC8qIFBhaW50cyBhIEd0a1NwaW5CdXR0b24gKi8KLSAgTU9aX0dUS19TUElOQlVUVE9OLAotICBN
T1pfR1RLX1NQSU5CVVRUT05fVVAsCi0gIE1PWl9HVEtfU1BJTkJVVFRPTl9ET1dOLAotICBNT1pf
R1RLX1NQSU5CVVRUT05fRU5UUlksCi0gIC8qIFBhaW50cyB0aGUgZ3JpcHBlciBvZiBhIEd0a0hh
bmRsZUJveC4gKi8KLSAgTU9aX0dUS19HUklQUEVSLAotICAvKiBQYWludHMgYSBHdGtFbnRyeS4g
Ki8KICAgTU9aX0dUS19FTlRSWSwKLSAgLyogUGFpbnRzIHRoZSBuYXRpdmUgY2FyZXQgKG9yIGlu
IEdUSy1zcGVhazogaW5zZXJ0aW9uIGN1cnNvcikgKi8KLSAgTU9aX0dUS19FTlRSWV9DQVJFVCwK
ICAgLyogUGFpbnRzIGEgR3RrT3B0aW9uTWVudS4gKi8KICAgTU9aX0dUS19EUk9QRE9XTiwKLSAg
LyogUGFpbnRzIGEgZHJvcGRvd24gYXJyb3cgKGEgR3RrQnV0dG9uIGNvbnRhaW5pbmcgYSBkb3du
IEd0a0Fycm93KS4gKi8KLSAgTU9aX0dUS19EUk9QRE9XTl9BUlJPVywKLSAgLyogUGFpbnRzIGFu
IGVudHJ5IGluIGFuIGVkaXRhYmxlIG9wdGlvbiBtZW51ICovCi0gIE1PWl9HVEtfRFJPUERPV05f
RU5UUlksCi0gIC8qIFBhaW50cyB0aGUgY29udGFpbmVyIHBhcnQgb2YgYSBHdGtDaGVja0J1dHRv
bi4gKi8KLSAgTU9aX0dUS19DSEVDS0JVVFRPTl9DT05UQUlORVIsCi0gIC8qIFBhaW50cyB0aGUg
Y29udGFpbmVyIHBhcnQgb2YgYSBHdGtSYWRpb0J1dHRvbi4gKi8KLSAgTU9aX0dUS19SQURJT0JV
VFRPTl9DT05UQUlORVIsCi0gIC8qIFBhaW50cyB0aGUgbGFiZWwgb2YgYSBHdGtDaGVja0J1dHRv
biAoZm9jdXMgb3V0bGluZSkgKi8KLSAgTU9aX0dUS19DSEVDS0JVVFRPTl9MQUJFTCwKLSAgLyog
UGFpbnRzIHRoZSBsYWJlbCBvZiBhIEd0a1JhZGlvQnV0dG9uIChmb2N1cyBvdXRsaW5lKSAqLwot
ICBNT1pfR1RLX1JBRElPQlVUVE9OX0xBQkVMLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQg
b2YgYSBHdGtIYW5kbGVCb3guICovCi0gIE1PWl9HVEtfVE9PTEJBUiwKLSAgLyogUGFpbnRzIGEg
dG9vbGJhciBzZXBhcmF0b3IgKi8KLSAgTU9aX0dUS19UT09MQkFSX1NFUEFSQVRPUiwKLSAgLyog
UGFpbnRzIGEgR3RrVG9vbFRpcCAqLwotICBNT1pfR1RLX1RPT0xUSVAsCi0gIC8qIFBhaW50cyBh
IEd0a0ZyYW1lIChlLmcuIGEgc3RhdHVzIGJhciBwYW5lbCkuICovCi0gIE1PWl9HVEtfRlJBTUUs
Ci0gIC8qIFBhaW50cyBhIHJlc2l6ZSBncmlwIGZvciBhIEd0a1dpbmRvdyAqLwotICBNT1pfR1RL
X1JFU0laRVIsCiAgIC8qIFBhaW50cyBhIEd0a1Byb2dyZXNzQmFyLiAqLwogICBNT1pfR1RLX1BS
T0dSRVNTQkFSLAogICAvKiBQYWludHMgYSBwcm9ncmVzcyBjaHVuayBvZiBhIEd0a1Byb2dyZXNz
QmFyLiAqLwotICBNT1pfR1RLX1BST0dSRVNTX0NIVU5LLAotICAvKiBQYWludHMgYSB0YWIgb2Yg
YSBHdGtOb3RlYm9vay4gZmxhZ3MgaXMgYSBHdGtUYWJGbGFncywgZGVmaW5lZCBhYm92ZS4gKi8K
LSAgTU9aX0dUS19UQUIsCi0gIC8qIFBhaW50cyB0aGUgYmFja2dyb3VuZCBhbmQgYm9yZGVyIG9m
IGEgR3RrTm90ZWJvb2suICovCi0gIE1PWl9HVEtfVEFCUEFORUxTLAotICAvKiBQYWludHMgYSBH
dGtBcnJvdyBmb3IgYSBHdGtOb3RlYm9vay4gZmxhZ3MgaXMgYSBHdGtBcnJvd1R5cGUuICovCi0g
IE1PWl9HVEtfVEFCX1NDUk9MTEFSUk9XLAotICAvKiBQYWludHMgdGhlIGJhY2tncm91bmQgYW5k
IGJvcmRlciBvZiBhIEd0a1RyZWVWaWV3ICovCi0gIE1PWl9HVEtfVFJFRVZJRVcsCi0gIC8qIFBh
aW50cyB0cmVlaGVhZGVyIGNlbGxzICovCi0gIE1PWl9HVEtfVFJFRV9IRUFERVJfQ0VMTCwKLSAg
LyogUGFpbnRzIHNvcnQgYXJyb3dzIGluIHRyZWVoZWFkZXIgY2VsbHMgKi8KLSAgTU9aX0dUS19U
UkVFX0hFQURFUl9TT1JUQVJST1csCi0gIC8qIFBhaW50cyBhbiBleHBhbmRlciBmb3IgYSBHdGtU
cmVlVmlldyAqLwotICBNT1pfR1RLX1RSRUVWSUVXX0VYUEFOREVSLAotICAvKiBQYWludHMgYSBH
dGtFeHBhbmRlciAqLwotICBNT1pfR1RLX0VYUEFOREVSLAotICAvKiBQYWludHMgdGhlIGJhY2tn
cm91bmQgb2YgdGhlIG1lbnUgYmFyLiAqLwotICBNT1pfR1RLX01FTlVCQVIsCi0gIC8qIFBhaW50
cyB0aGUgYmFja2dyb3VuZCBvZiBtZW51cywgY29udGV4dCBtZW51cy4gKi8KLSAgTU9aX0dUS19N
RU5VUE9QVVAsCi0gIC8qIFBhaW50cyB0aGUgYXJyb3cgb2YgbWVudWl0ZW1zIHRoYXQgY29udGFp
biBzdWJtZW51cyAqLwotICBNT1pfR1RLX01FTlVBUlJPVywKLSAgLyogUGFpbnRzIGFuIGFycm93
IHRoYXQgcG9pbnRzIGRvd24gKi8KLSAgTU9aX0dUS19UT09MQkFSQlVUVE9OX0FSUk9XLAotICAv
KiBQYWludHMgaXRlbXMgb2YgbWVudWJhciBhbmQgcG9wdXBzLiAqLwotICBNT1pfR1RLX01FTlVJ
VEVNLAotICBNT1pfR1RLX0NIRUNLTUVOVUlURU0sCi0gIE1PWl9HVEtfUkFESU9NRU5VSVRFTSwK
LSAgTU9aX0dUS19NRU5VU0VQQVJBVE9SLAotICAvKiBQYWludHMgYSBHdGtWUGFuZWQgc2VwYXJh
dG9yICovCi0gIE1PWl9HVEtfU1BMSVRURVJfSE9SSVpPTlRBTCwKLSAgLyogUGFpbnRzIGEgR3Rr
SFBhbmVkIHNlcGFyYXRvciAqLwotICBNT1pfR1RLX1NQTElUVEVSX1ZFUlRJQ0FMLAotICAvKiBQ
YWludHMgdGhlIGJhY2tncm91bmQgb2YgYSB3aW5kb3csIGRpYWxvZyBvciBwYWdlLiAqLwotICBN
T1pfR1RLX1dJTkRPVworICBNT1pfR1RLX1BST0dSRVNTX0NIVU5LCiB9IEd0a1RoZW1lV2lkZ2V0
VHlwZTsKIAogLyoqKiBHZW5lcmFsIGxpYnJhcnkgZnVuY3Rpb25zICoqKi8KQEAgLTM2MiwxNiAr
MjU1LDYgQEAgbW96X2d0a19jaGVja2JveF9nZXRfbWV0cmljcyhnaW50KiBpbmRpY2F0b3Jfc2l6
ZSwgZ2ludCogaW5kaWNhdG9yX3NwYWNpbmcpOwogZ2ludAogbW96X2d0a19yYWRpb19nZXRfbWV0
cmljcyhnaW50KiBpbmRpY2F0b3Jfc2l6ZSwgZ2ludCogaW5kaWNhdG9yX3NwYWNpbmcpOwogCi0v
KioKLSAqIEdldCB0aGUgaW5uZXItYm9yZGVyIHZhbHVlIGZvciBhIEd0a0J1dHRvbiB3aWRnZXQg
KGJ1dHRvbiBvciB0cmVlIGhlYWRlcikKLSAqIHdpZGdldDogICAgICAgICAgICAgW0lOXSAgdGhl
IHdpZGdldCB0byBnZXQgdGhlIGJvcmRlciB2YWx1ZSBmb3IgCi0gKiBpbm5lcl9ib3JkZXI6ICAg
ICAgIFtPVVRdIHRoZSBpbm5lciBib3JkZXIKLSAqCi0gKiByZXR1cm5zOiAgIE1PWl9HVEtfU1VD
Q0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8K
LWdpbnQKLW1vel9ndGtfYnV0dG9uX2dldF9pbm5lcl9ib3JkZXIoR3RrV2lkZ2V0KiB3aWRnZXQs
IEd0a0JvcmRlciogaW5uZXJfYm9yZGVyKTsKLQogLyoqIEdldCB0aGUgZm9jdXMgbWV0cmljcyBm
b3IgYSB0cmVlaGVhZGVyY2VsbCwgYnV0dG9uLCBjaGVja2JveCwgb3IgcmFkaW8gYnV0dG9uLgog
ICogd2lkZ2V0OiAgICAgICAgICAgICBbSU5dICB0aGUgd2lkZ2V0IHRvIGdldCB0aGUgZm9jdXMg
bWV0cmljcyBmb3IgICAgCiAgKiBpbnRlcmlvcl9mb2N1czogICAgIFtPVVRdIHdoZXRoZXIgdGhl
IGZvY3VzIGlzIGRyYXduIGFyb3VuZCB0aGUKQEAgLTQwNiw5MSArMjg5LDEyIEBAIGdpbnQKIG1v
el9ndGtfZ2V0X3Njcm9sbGJhcl9tZXRyaWNzKE1vekd0a1Njcm9sbGJhck1ldHJpY3MqIG1ldHJp
Y3MpOwogCiAvKioKLSAqIEdldCB0aGUgZGVzaXJlZCBzaXplIG9mIGEgZHJvcGRvd24gYXJyb3cg
YnV0dG9uCi0gKiB3aWR0aDogICBbT1VUXSB0aGUgZGVzaXJlZCB3aWR0aAotICogaGVpZ2h0OiAg
W09VVF0gdGhlIGRlc2lyZWQgaGVpZ2h0Ci0gKgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUND
RVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwot
Z2ludCBtb3pfZ3RrX2dldF9jb21ib19ib3hfZW50cnlfYnV0dG9uX3NpemUoZ2ludCogd2lkdGgs
IGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSBzY3Jv
bGwgYXJyb3cgd2lkZ2V0Ci0gKiB3aWR0aDogICBbT1VUXSB0aGUgZGVzaXJlZCB3aWR0aAotICog
aGVpZ2h0OiAgW09VVF0gdGhlIGRlc2lyZWQgaGVpZ2h0Ci0gKgotICogcmV0dXJuczogICAgTU9a
X0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwgYW4gZXJyb3IgY29kZSBvdGhlcndp
c2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF90YWJfc2Nyb2xsX2Fycm93X3NpemUoZ2ludCogd2lk
dGgsIGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUgb2YgYSB0
b29sYmFyIGJ1dHRvbiBkcm9wZG93biBhcnJvdwotICogd2lkdGg6ICAgW09VVF0gdGhlIGRlc2ly
ZWQgd2lkdGgKLSAqIGhlaWdodDogIFtPVVRdIHRoZSBkZXNpcmVkIGhlaWdodAotICoKLSAqIHJl
dHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9y
IGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfZG93bmFycm93X3NpemUoZ2lu
dCogd2lkdGgsIGdpbnQqIGhlaWdodCk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNpemUg
b2YgYSB0b29sYmFyIHNlcGFyYXRvcgotICogc2l6ZTogICAgW09VVF0gdGhlIGRlc2lyZWQgd2lk
dGgKLSAqCi0gKiByZXR1cm5zOiBNT1pfR1RLX1NVQ0NFU1MgaWYgdGhlcmUgd2FzIG5vIGVycm9y
LCBhbiBlcnJvciBjb2RlIG90aGVyd2lzZQotICovCi1naW50IG1vel9ndGtfZ2V0X3Rvb2xiYXJf
c2VwYXJhdG9yX3dpZHRoKGdpbnQqIHNpemUpOwotCi0vKioKLSAqIEdldCB0aGUgc2l6ZSBvZiBh
IHJlZ3VsYXIgR1RLIGV4cGFuZGVyIHRoYXQgc2hvd3MvaGlkZXMgY29udGVudAotICogc2l6ZTog
ICAgW09VVF0gdGhlIHNpemUgb2YgdGhlIEdUSyBleHBhbmRlciwgc2l6ZSA9IHdpZHRoID0gaGVp
Z2h0LgotICoKLSAqIHJldHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8g
ZXJyb3IsIGFuIGVycm9yIGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfZXhw
YW5kZXJfc2l6ZShnaW50KiBzaXplKTsKLQotLyoqCi0gKiBHZXQgdGhlIHNpemUgb2YgYSB0cmVl
dmlldydzIGV4cGFuZGVyICh3ZSBjYWxsIHRoZW0gdHdpc3RpZXMpCi0gKiBzaXplOiAgICBbT1VU
XSB0aGUgc2l6ZSBvZiB0aGUgR1RLIGV4cGFuZGVyLCBzaXplID0gd2lkdGggPSBoZWlnaHQuCi0g
KgotICogcmV0dXJuczogICAgTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJvciwg
YW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF90cmVldmlld19l
eHBhbmRlcl9zaXplKGdpbnQqIHNpemUpOwotCi0vKioKLSAqIEdldCB0aGUgZGVzaXJlZCBoZWln
aHQgb2YgYSBtZW51IHNlcGFyYXRvcgotICogc2l6ZTogICAgW09VVF0gdGhlIGRlc2lyZWQgaGVp
Z2h0Ci0gKgotICogcmV0dXJuczogTU9aX0dUS19TVUNDRVNTIGlmIHRoZXJlIHdhcyBubyBlcnJv
ciwgYW4gZXJyb3IgY29kZSBvdGhlcndpc2UKLSAqLwotZ2ludCBtb3pfZ3RrX2dldF9tZW51X3Nl
cGFyYXRvcl9oZWlnaHQoZ2ludCogc2l6ZSk7Ci0KLS8qKgotICogR2V0IHRoZSBkZXNpcmVkIHNp
emUgb2YgYSBzcGxpdHRlcgotICogb3JpZW50YXRpb246ICAgW0lOXSAgR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwgb3IgR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMCi0gKiBzaXplOiAgICAgICAg
ICBbT1VUXSB3aWR0aCBvciBoZWlnaHQgb2YgdGhlIHNwbGl0dGVyIGhhbmRsZQotICoKLSAqIHJl
dHVybnM6ICAgIE1PWl9HVEtfU1VDQ0VTUyBpZiB0aGVyZSB3YXMgbm8gZXJyb3IsIGFuIGVycm9y
IGNvZGUgb3RoZXJ3aXNlCi0gKi8KLWdpbnQgbW96X2d0a19zcGxpdHRlcl9nZXRfbWV0cmljcyhn
aW50IG9yaWVudGF0aW9uLCBnaW50KiBzaXplKTsKLQotLyoqCiAgKiBSZXRyaWV2ZSBhbiBhY3R1
YWwgR1RLIHNjcm9sbGJhciB3aWRnZXQgZm9yIHN0eWxlIGFuYWx5c2lzLiBJdCB3aWxsIG5vdAog
ICogYmUgbW9kaWZpZWQuCiAgKi8KIEd0a1dpZGdldCogbW96X2d0a19nZXRfc2Nyb2xsYmFyX3dp
ZGdldCh2b2lkKTsKIAogLyoqCi0gKiBHZXQgdGhlIFlUSElDS05FU1Mgb2YgYSB0YWIgKG5vdGVi
b29rIGV4dGVuc2lvbikuCi0gKi8KLWdpbnQgbW96X2d0a19nZXRfdGFiX3RoaWNrbmVzcyh2b2lk
KTsKLQotLyoqCi0gKiBHZXQgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyIG9yIG5v
dCB0byB1c2UgaW1hZ2VzIGluIG1lbnVzLgotICogSWYgVFJVRSwgdXNlIGltYWdlcyBpbiBtZW51
cy4KLSAqLwotZ2Jvb2xlYW4gbW96X2d0a19pbWFnZXNfaW5fbWVudXModm9pZCk7Ci0KLS8qKgog
ICogUmV0cmlldmUgYW4gYWN0dWFsIEdUSyBwcm9ncmVzcyBiYXIgd2lkZ2V0IGZvciBzdHlsZSBh
bmFseXNpcy4gSXQgd2lsbCBub3QKICAqIGJlIG1vZGlmaWVkLgogICovCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>