<?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>90443</bug_id>
          
          <creation_ts>2012-07-03 03:40:27 -0700</creation_ts>
          <short_desc>Prepare for parallel image decoder.</short_desc>
          <delta_ts>2012-08-12 03:00:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>90935</blocked>
    
    <blocked>90375</blocked>
    
    <blocked>90758</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gram</cc>
    
    <cc>skyul</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>662103</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 03:40:27 -0700</bug_when>
    <thetext>The key point of this patch is to change how BitmapImage uses ImageSource.

Originally, BitmapImage retrieves the frame data from ImageSource by calling the following methods:
- NativeImagePtr createFrameAtIndex(size_t);
- float frameDurationAtIndex(size_t);
- bool frameHasAlphaAtIndex(size_t);
- bool frameIsCompleteAtIndex(size_t);
- ImageOrientation orientationAtIndex(size_t) const;

Upon each method call, ImageSource synchronously decodes the image and returns the requested information.
Because all the methods above are inherently synchronous, it is not easy to make them parallel.

To implement parallel image decoders, these methods must be asynchronous. So I merged all these methods into a single method, requestFrameAtIndex(size_t), which requests all the frame data at once.
Note that this method has no return value.

Instead, BitmapImage now implements ImageSourceObserver and passes itself to ImageSource constructor.
Once image decoding is finished or cached image is available, ImageSource notifies BitmapImage via
ImageSourceObserver::didReceiveImageFrameData(size_t, const ImageFrameData&amp;). ImageFrameData contains all the frame data including frame, duration, isAlpha, isComplete and orientation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662104</commentid>
    <comment_count>1</comment_count>
      <attachid>150573</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 03:45:18 -0700</bug_when>
    <thetext>Created attachment 150573
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662106</commentid>
    <comment_count>2</comment_count>
      <attachid>150574</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 03:53:16 -0700</bug_when>
    <thetext>Created attachment 150574
patch v.2

missing changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662107</commentid>
    <comment_count>3</comment_count>
      <attachid>150575</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 03:55:25 -0700</bug_when>
    <thetext>Created attachment 150575
patch v.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662108</commentid>
    <comment_count>4</comment_count>
      <attachid>150576</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 03:56:14 -0700</bug_when>
    <thetext>Created attachment 150576
patch v.4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662119</commentid>
    <comment_count>5</comment_count>
      <attachid>150576</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-03 04:29:12 -0700</bug_when>
    <thetext>Comment on attachment 150576
patch v.4

Attachment 150576 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13136375</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662127</commentid>
    <comment_count>6</comment_count>
      <attachid>150583</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 04:50:13 -0700</bug_when>
    <thetext>Created attachment 150583
patch v.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662133</commentid>
    <comment_count>7</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-07-03 05:04:13 -0700</bug_when>
    <thetext>patch v.5 for build fix of chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663117</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-04 12:57:06 -0700</bug_when>
    <thetext>What kind of performance data says that this will be a performance improvement? I think that this idea has been considered and rejected in the past.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663123</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-07-04 13:03:17 -0700</bug_when>
    <thetext>Sorry, I see some explanation in bug 90375 now. This needs to be announced on webkit-dev in addition to normal review though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663164</commentid>
    <comment_count>10</comment_count>
    <who name="Kwang Yul Seo">skyul</who>
    <bug_when>2012-07-04 14:21:58 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Sorry, I see some explanation in bug 90375 now. This needs to be announced on webkit-dev in addition to normal review though.

Sure. I will announce this on webkit-dev.

Dungsung and I are writing up the design document so that reviewers can understand the overall architecture before they review the patches line by line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690158</commentid>
    <comment_count>11</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-08-08 04:56:38 -0700</bug_when>
    <thetext>We are rewriting the preparation patches for async image decoding, so this bug is of no use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690418</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-08 09:46:49 -0700</bug_when>
    <thetext>WONTFIX is not the correct resolution unless we agree that something is a bug, but refuse to ever fix it, see &lt;https://bugs.webkit.org/page.cgi?id=fields.html#status&gt;. Changing to INVALID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691118</commentid>
    <comment_count>13</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-08-08 19:38:52 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; WONTFIX is not the correct resolution unless we agree that something is a bug, but refuse to ever fix it, see &lt;https://bugs.webkit.org/page.cgi?id=fields.html#status&gt;. Changing to INVALID.

Thanks for your instruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693199</commentid>
    <comment_count>14</comment_count>
      <attachid>150583</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-12 03:00:33 -0700</bug_when>
    <thetext>Comment on attachment 150583
patch v.5

Cleared review? from attachment 150583 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150573</attachid>
            <date>2012-07-03 03:45:18 -0700</date>
            <delta_ts>2012-07-03 03:53:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-Prepare-for-parallel-image-decoder.patch</filename>
            <type>text/plain</type>
            <size>33602</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSA0MjY0ZjE3M2FmMTFhZDZjYTViNTk0MDk1ZDRjNGE1YzJjZTgzNDBlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgOCBNYXkgMjAxMiAxMzoyMzozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0NDMKClRoZSBrZXkgcG9pbnQgb2YgdGhpcyBwYXRjaCBp
cyB0byBjaGFuZ2UgaG93IEJpdG1hcEltYWdlIHVzZXMgSW1hZ2VTb3VyY2UuCgpPcmlnaW5hbGx5
LCBCaXRtYXBJbWFnZSByZXRyaWV2ZXMgdGhlIGZyYW1lIGRhdGEgZnJvbSBJbWFnZVNvdXJjZSBi
eSBjYWxsaW5nIHRoZQpmb2xsb3dpbmcgbWV0aG9kczoKLSBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUF0SW5kZXgoc2l6ZV90KTsKLSBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
OwotIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsKLSBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KTsKLSBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OwoKVXBvbiBlYWNoIG1ldGhvZCBjYWxsLCBJbWFnZVNvdXJjZSBzeW5j
aHJvbm91c2x5IGRlY29kZXMgdGhlIGltYWdlIGFuZCByZXR1cm5zCnRoZSByZXF1ZXN0ZWQgaW5m
b3JtYXRpb24uIEJlY2F1c2UgYWxsIHRoZSBtZXRob2RzIGFib3ZlIGFyZSBpbmhlcmVudGx5CnN5
bmNocm9ub3VzLCBpdCBpcyBub3QgZWFzeSB0byBtYWtlIHRoZW0gcGFyYWxsZWwuCgpUbyBpbXBs
ZW1lbnQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIHRoZXNlIG1ldGhvZHMgbXVzdCBiZSBhc3lu
Y2hyb25vdXMuIFNvIEkKbWVyZ2VkIGFsbCB0aGVzZSBtZXRob2RzIGludG8gYSBzaW5nbGUgbWV0
aG9kLCByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCksCndoaWNoIHJlcXVlc3RzIGFsbCB0aGUg
ZnJhbWUgZGF0YSBhdCBvbmNlLiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaGFzIG5vIHJldHVybgp2
YWx1ZS4KCkluc3RlYWQsIEJpdG1hcEltYWdlIG5vdyBpbXBsZW1lbnRzIEltYWdlU291cmNlT2Jz
ZXJ2ZXIgYW5kIHBhc3NlcyBpdHNlbGYgdG8KSW1hZ2VTb3VyY2UgY29uc3RydWN0b3IuIE9uY2Ug
aW1hZ2UgZGVjb2RpbmcgaXMgZmluaXNoZWQgb3IgY2FjaGVkIGltYWdlIGlzCmF2YWlsYWJsZSwg
SW1hZ2VTb3VyY2Ugbm90aWZpZXMgQml0bWFwSW1hZ2UgdmlhCkltYWdlU291cmNlT2JzZXJ2ZXI6
OmRpZFJlY2VpdmVJbWFnZUZyYW1lRGF0YShzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiku
CkltYWdlRnJhbWVEYXRhIGNvbnRhaW5zIGFsbCB0aGUgZnJhbWUgZGF0YSBpbmNsdWRpbmcgZnJh
bWUsIGR1cmF0aW9uLCBpc0FscGhhLAppc0NvbXBsZXRlIGFuZCBvcmllbnRhdGlvbi4KLS0tCiBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAgICAgICAgICAgICB8ICAgIDEg
KwogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
ICAxICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiAg
ICAgICB8ICAgIDQgKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiAgIHwgICAgNCArKwogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwICAgfCAgIDY3ICsrKysrKysrKystLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggICAgIHwgICAxNyArKysrLQogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwICAgfCAgIDY4ICsrKysr
KysrKysrKy0tLS0tLS0tCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5oICAgICB8ICAgNTcgKysrKysrKysrKysrKystLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlU291cmNlT2JzZXJ2ZXIuaCAgICAgICAgfCAgIDQ0ICsrKysrKysrKysrKysKIC4uLi9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcCAgIHwgICAgMSArCiAu
Li4vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAgICAgICB8ICAgIDcg
Ky0KIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcCAgIHwg
ICAgMyArLQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5jcHAg
ICAgfCAgICAxICsKIC4uLi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNl
Q0cuY3BwIHwgICAzOCArKysrKysrKystLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9J
bWFnZU9wZW5WRy5jcHAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlUXQuY3BwICAgIHwgICAgMSArCiAuLi4vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHQzRFNraWEuY3BwICAgICAgICB8ICAgIDkgKystCiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcCAgICB8ICAgIDEgKwogMTkgZmlsZXMgY2hh
bmdlZCwgMjQ3IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIu
aAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM1ZWMyZWMuLmRiOTNiNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzM1Myw2ICszMzUzLDcgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9y
aWVudGF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZl
ci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXgg
N2I5NmI3Ni4uOWU3OWVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMjkzLDYgKzIyOTMsNyBAQCBIRUFE
RVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
U291cmNlLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggMTA1NGUwNy4uOWE1ZTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
Mzg1LDYgKzM4NSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VPYnNl
cnZlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9u
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL0ludFJlY3QuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCmluZGV4IGQxMmRiNTYuLjMzMWI3OTYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTMxMCw2ICsyOTMxMCwxMCBAQAogCQkJ
CQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cZ3JhcGhpY3NcSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW50UG9p
bnQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZGQzNThjLi5lYzUwNWE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00
NzkwLDYgKzQ3OTAsNyBAQAogCQlCMjc1MzU2RjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDEw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJQjI3NTM1NzAwQjA1MzgxNDAw
MkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjc1MzU0MjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjc1MzU3MTBCMDUzODE0MDAy
Q0U2NEYgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUIyNzUzNTcx
MEIwNTM4MTQwMDJDRTY0RSAvKiBJbWFnZVNvdXJjZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MzBCMDUzODE0MDAyQ0U2NEUg
LyogSW1hZ2VTb3VyY2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUIyNzUzNTcyMEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDQw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NzMwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJl
Y3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3
NTM1NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuY3BwICovOyB9OwogCQlCMjc1MzU3NDBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDYwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTE5NTcs
NiArMTE5NTgsNyBAQAogCQlCMjc1MzU0MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NDIwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjc1MzU0MzBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlU291cmNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RSAvKiBJbWFn
ZVNvdXJjZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFn
ZVNvdXJjZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTQ0
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW50UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1
NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjc1MzU0NjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTk2NDUsNiArMTk2NDcsNyBAQAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMwMDFGQkE0MSAvKiBJ
bWFnZU9yaWVudGF0aW9uLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAwRTc1M0RFIC8qIElt
YWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJ
bWFnZVNvdXJjZS5oICovLAorCQkJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RSAvKiBJbWFnZVNv
dXJjZU9ic2VydmVyLmggKi8sCiAJCQkJQjI3NTM1NDQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBv
aW50LmggKi8sCiAJCQkJRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIwIC8qIEludFBvaW50SGFzaC5o
ICovLAogCQkJCUIyNzUzNTQ1MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0LmNwcCAqLywKQEAg
LTIzMzYyLDYgKzIzMzY1LDcgQEAKIAkJCQkyRDVBNTkzMTE1MjUyNUQwMDAzNkVFNTEgLyogSW1h
Z2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkyOTFFNEIxMzQxNzJDODAwRTc1
M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI3NTM1NzEw
QjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMjc1
MzU3MTBCMDUzODE0MDAyQ0U2NEUgLyogSW1hZ2VTb3VyY2VPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJbXBsaWNpdEFuaW1h
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREIyM0MyQ0MwQTUwOEQyOTAwMjQ4OUVCIC8qIElu
ZGVudE91dGRlbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4YmM5NzIyLi4zZWI5NDg5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2Uu
Y3BwCkBAIC00NSw2ICs0NSw3IEBAIHN0YXRpYyBpbnQgZnJhbWVCeXRlcyhjb25zdCBJbnRTaXpl
JiBmcmFtZVNpemUpCiAKIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFnZU9ic2VydmVyKiBv
YnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9zb3VyY2UodGhpcykKICAg
ICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQogICAgICwgbV9mcmFtZVRp
bWVyKDApCkBAIC0xMjYsNDAgKzEyNyw2IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRlc3Ryb3lNZXRh
ZGF0YUFuZE5vdGlmeShpbnQgZnJhbWVzQ2xlYXJlZCkKICAgICAgICAgaW1hZ2VPYnNlcnZlcigp
LT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRlcyk7CiB9CiAKLXZvaWQgQml0bWFw
SW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4KQotewotICAgIHNpemVfdCBudW1GcmFtZXMg
PSBmcmFtZUNvdW50KCk7Ci0gICAgQVNTRVJUKG1fZGVjb2RlZFNpemUgPT0gMCB8fCBudW1GcmFt
ZXMgPiAxKTsKLSAgICAKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQotICAg
ICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7Ci0KLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9m
cmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKG51bUZy
YW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAgICBjaGVja0ZvclNv
bGlkQ29sb3IoKTsKLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0aW9uID0gbV9zb3Vy
Y2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXZl
TWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29tcGxldGUgPSBtX3Nv
dXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAocmVwZXRpdGlvbkNv
dW50KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFtZXNbaW5kZXhdLm1f
ZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRleCk7Ci0gICAgbV9m
cmFtZXNbaW5kZXhdLm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0FscGhhQXRJbmRleChp
bmRleCk7Ci0KLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/IG1fc291cmNlLmZy
YW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogbV9zaXplKTsKLSAgICBpZiAoZnJhbWVTaXplICE9IG1f
c2l6ZSkKLSAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7Ci0gICAgaWYgKG1f
ZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7Ci0gICAgICAgIGludCBkZWx0YUJ5dGVzID0gZnJhbWVC
eXRlcyhmcmFtZVNpemUpOwotICAgICAgICBtX2RlY29kZWRTaXplICs9IGRlbHRhQnl0ZXM7Ci0g
ICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3VtZSB0aGUgcGFydGlh
bGx5IGRlY29kZWQgZGF0YSB1c2VkCi0gICAgICAgIC8vIHRvIGRldGVybWluZSBpbWFnZSBwcm9w
ZXJ0aWVzLgotICAgICAgICBkZWx0YUJ5dGVzIC09IG1fZGVjb2RlZFByb3BlcnRpZXNTaXplOwot
ICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7Ci0gICAgICAgIGlmIChpbWFnZU9i
c2VydmVyKCkpCi0gICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdl
ZCh0aGlzLCBkZWx0YUJ5dGVzKTsKLSAgICB9Ci19Ci0KIHZvaWQgQml0bWFwSW1hZ2U6OmRpZERl
Y29kZVByb3BlcnRpZXMoKSBjb25zdAogewogICAgIGlmIChtX2RlY29kZWRTaXplKQpAQCAtMjkx
LDYgKzI1OCwzOCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlzQ2FjaGVkKHNpemVf
dCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVG
cmFtZShzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IG51bUZyYW1lcyA9IGZyYW1lQ291bnQo
KTsKKyAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQorICAgICAgICBtX2ZyYW1l
cy5ncm93KG51bUZyYW1lcyk7CisKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJhbWVBdEluZGV4KGlu
ZGV4KTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleChzaXpl
X3QgaW5kZXgsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1lRGF0YSkKK3sKKyAgICBt
X2ZyYW1lc1tpbmRleF0uc2V0RnJvbUltYWdlRnJhbWVEYXRhKGltYWdlRnJhbWVEYXRhKTsKKwor
ICAgIHNpemVfdCBudW1GcmFtZXMgPSBmcmFtZUNvdW50KCk7CisgICAgaWYgKG51bUZyYW1lcyA9
PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBjaGVja0ZvclNvbGlkQ29s
b3IoKTsKKworICAgIGNvbnN0IEludFNpemUgZnJhbWVTaXplKGluZGV4ID8gbV9zb3VyY2UuZnJh
bWVTaXplQXRJbmRleChpbmRleCkgOiBtX3NpemUpOworICAgIGlmIChmcmFtZVNpemUgIT0gbV9z
aXplKQorICAgICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsKKyAgICBpZiAobV9m
cmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAgICAgICAgaW50IGRlbHRhQnl0ZXMgPSBmcmFtZUJ5
dGVzKGZyYW1lU2l6ZSk7CisgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKKyAg
ICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFs
bHkgZGVjb2RlZCBkYXRhIHVzZWQKKyAgICAgICAgLy8gdG8gZGV0ZXJtaW5lIGltYWdlIHByb3Bl
cnRpZXMuCisgICAgICAgIGRlbHRhQnl0ZXMgLT0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7Cisg
ICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID0gMDsKKyAgICAgICAgaWYgKGltYWdlT2Jz
ZXJ2ZXIoKSkKKyAgICAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2Vk
KHRoaXMsIGRlbHRhQnl0ZXMpOworICAgIH0KK30KKwogTmF0aXZlSW1hZ2VQdHIgQml0bWFwSW1h
Z2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFlbnN1cmVGcmFtZUlz
Q2FjaGVkKGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRt
YXBJbWFnZS5oCmluZGV4IDY0YzgxYzcuLmI0N2VjYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0
aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkludFNp
emUuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgyLDYgKzgzLDE3IEBAIHB1YmxpYzoKICAg
ICAgICAgY2xlYXIodHJ1ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRGcm9tSW1hZ2VGcmFtZURh
dGEoY29uc3QgSW1hZ2VGcmFtZURhdGEmIGRhdGEpCisgICAgeworICAgICAgICBBU1NFUlQoIW1f
ZnJhbWUpOworICAgICAgICBtX2ZyYW1lID0gZGF0YS5tX2ZyYW1lOworICAgICAgICBtX29yaWVu
dGF0aW9uID0gZGF0YS5tX29yaWVudGF0aW9uOworICAgICAgICBtX2R1cmF0aW9uID0gZGF0YS5t
X2R1cmF0aW9uOworICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGRhdGEubV9oYXZlTWV0YWRhdGE7
CisgICAgICAgIG1faXNDb21wbGV0ZSA9IGRhdGEubV9pc0NvbXBsZXRlOworICAgICAgICBtX2hh
c0FscGhhID0gZGF0YS5tX2hhc0FscGhhOworICAgIH0KKwogICAgIC8vIENsZWFyIHRoZSBjYWNo
ZWQgaW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkgdGhlIG1ldGFkYXRh
LgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGltYWdlIGRhdGEgdG8g
Y2xlYXIuCiAgICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwpAQCAtOTgsNyArMTEw
LDcgQEAgcHVibGljOgogLy8gQml0bWFwSW1hZ2UgQ2xhc3MKIC8vID09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotY2xhc3MgQml0bWFwSW1hZ2UgOiBw
dWJsaWMgSW1hZ2UgeworY2xhc3MgQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2UsIHB1YmxpYyBJ
bWFnZVNvdXJjZU9ic2VydmVyIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJhdGVkSW1hZ2U7CiAg
ICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAgIGZyaWVuZCBjbGFz
cyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKQEAgLTE3OSw2ICsxOTEsOSBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKTsKICNlbmRpZgogCisgICAgLy8gSW1hZ2VT
b3VyY2VPYnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNp
emVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZVNpemUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc1ZWQ1YTEuLjA5YTk4NmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTMsNiArMyw3IEBA
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJAY29sbGFib3JhLmNv
LnVrPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDcgQEAKICNpbmNsdWRl
ICJJbWFnZURlY29kZXIuaCIKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNs
dWRlICJJbWFnZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDQsMTUgQEAgdW5zaWduZWQgSW1hZ2VT
b3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEwMjQ7CiAKIEltYWdl
U291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKICAgICA6IG1fZGVjb2RlcigwKQorICAgICwgbV9vYnNlcnZlcigwKQorICAg
ICwgbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKKyAgICAsIG1fZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCit7Cit9CisKK0ltYWdlU291cmNl
OjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZU9ic2VydmVyKiBvYnNlcnZlciwgSW1hZ2VTb3VyY2U6
OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBtX2RlY29kZXIoMCkK
KyAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCiAgICAgLCBtX2FscGhhT3B0aW9uKGFscGhhT3B0
aW9uKQogICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKIHsKQEAgLTEzNywzNCArMTQ4LDQ0IEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6
ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1fZGVjb2Rlci0+ZnJh
bWVDb3VudCgpIDogMDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgpCit2b2lkIEltYWdlU291cmNlOjpyZXF1ZXN0RnJhbWVB
dEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9vYnNlcnZlcik7CisgICAgSW1h
Z2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOwor
ICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGltYWdlRnJhbWVE
YXRhKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURhdGEoKTsKIAogICAgIEltYWdlRnJhbWUqIGJ1
ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICBpZiAoIWJ1
ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURhdGEoKTsKKworICAgIElt
YWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhOwogCiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2Vz
IGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhhdmUgYW4KICAgICAv
LyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAoc2l6ZSgpLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzaXplKCkuaXNFbXB0eSgpKSB7Cisg
ICAgICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiBG
b3Igc29tZSBwb3J0cywgdGhlIGRhdGEKKyAgICAgICAgLy8gaXMgYWxyZWFkeSBpbiBhIG5hdGl2
ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVmY291bnQuCisgICAg
ICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBidWZmZXItPmFzTmV3TmF0aXZlSW1hZ2UoKTsK
KyAgICB9CisKKyAgICBpbWFnZUZyYW1lRGF0YS5tX29yaWVudGF0aW9uID0gb3JpZW50YXRpb25B
dEluZGV4KGJ1ZmZlcik7CisgICAgaW1hZ2VGcmFtZURhdGEubV9oYXZlTWV0YWRhdGEgPSB0cnVl
OworICAgIGltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSA9IGZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoYnVmZmVyKTsKKyAgICBpZiAocmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUp
CisgICAgICAgIGltYWdlRnJhbWVEYXRhLm1fZHVyYXRpb24gPSBmcmFtZUR1cmF0aW9uQXRJbmRl
eChidWZmZXIpOworICAgIGltYWdlRnJhbWVEYXRhLm1faGFzQWxwaGEgPSBmcmFtZUhhc0FscGhh
QXRJbmRleChidWZmZXIpOwogCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIgY29udGVudHMgYXMg
YSBuYXRpdmUgaW1hZ2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKLSAgICAvLyBpcyBhbHJl
YWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNyZW1lbnRzIGl0cyBy
ZWZjb3VudC4KLSAgICByZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdlKCk7CisgICAgcmV0
dXJuIGltYWdlRnJhbWVEYXRhOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlv
bkF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxvYXQgSW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25B
dEluZGV4KEltYWdlRnJhbWUqIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2RlY29kZXItPmZyYW1l
QnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVmZmVyLT5zdGF0dXMo
KSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4gMDsKLQogICAgIC8v
IE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1ha2UgYW4gaW1hZ2Ug
Zmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KICAgICAvLyBXZSBmb2xsb3cgRmlyZWZveCdz
IGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFueSBmcmFtZXMgdGhh
dCBzcGVjaWZ5CiAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2VlIDxyZGFyOi8vcHJv
YmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+CkBAIC0xNzUsMTQg
KzE5NiwxNCBAQCBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90
IGluZGV4KQogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotSW1hZ2VPcmllbnRhdGlvbiBJbWFn
ZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK0ltYWdlT3Jp
ZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChJbWFnZUZyYW1lKikgY29u
c3QKIHsKICAgICAvLyBUaGUgSlBFRyBhbmQgVElGRiBkZWNvZGVycyBuZWVkIHRvIGJlIHRhdWdo
dCBob3cgdG8gcmVhZCBFWElGLCBYTVAsIG9yIElQVEMgZGF0YS4KICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIH0KIAotYm9vbCBJbWFn
ZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQorYm9vbCBJbWFnZVNv
dXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoSW1hZ2VGcmFtZSogYnVmZmVyKQogewogICAgIC8v
IFdoZW4gYSBmcmFtZSBoYXMgbm90IGZpbmlzaGVkIGRlY29kaW5nLCBhbHdheXMgbWFyayBpdCBh
cyBoYXZpbmcgYWxwaGEuCiAgICAgLy8gUG9ydHMgdGhhdCBjaGVjayB0aGUgcmVzdWx0IG9mIHRo
aXMgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZWlyCkBAIC0xOTAsMTcgKzIxMSwxMiBAQCBib29s
IEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgLy8g
YmxhY2suCiAgICAgLy8gVE9ETzogUGVyaGFwcyB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgZWFjaCBp
bmRpdmlkdWFsIGRlY29kZXIgcmV0dXJucyB0cnVlCiAgICAgLy8gaW4gdGhpcyBjYXNlLgotICAg
IHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkKLSAgICAgICAgfHwgbV9kZWNv
ZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpLT5oYXNBbHBoYSgpOworICAgIHJldHVybiAh
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChidWZmZXIpIHx8IGJ1ZmZlci0+aGFzQWxwaGEoKTsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgp
Citib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KEltYWdlRnJhbWUqIGJ1
ZmZlcikKIHsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5k
ZXgpOwotICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1l
OjpGcmFtZUNvbXBsZXRlOworICAgIHJldHVybiBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJh
bWU6OkZyYW1lQ29tcGxldGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGVkNjI1YmMuLjUxMDVjMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApAQCAtMSw2ICsxLDcg
QEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAwOCBU
b3JjaCBNb2JpbGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTU3LDcgKzU4LDExIEBAIGNsYXNzIE5hdGl2ZUltYWdlU2tpYTsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCisjaWYgIVVTRShDRykKK2NsYXNzIEltYWdlRnJhbWU7CisjZW5kaWYKIGNsYXNzIElt
YWdlT3JpZW50YXRpb247CitjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyOwogY2xhc3MgSW50UG9p
bnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAtOTQsNiArOTksMzQg
QEAgdHlwZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgogI2VuZGlmCiAKKy8v
ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSW1h
Z2VGcmFtZURhdGEgQ2xhc3MKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQorCitzdHJ1Y3QgSW1hZ2VGcmFtZURhdGEgeworcHVibGljOgorICAgIElt
YWdlRnJhbWVEYXRhKCkKKyAgICAgICAgOiBtX2ZyYW1lKDApCisgICAgICAgICwgbV9vcmllbnRh
dGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgLCBtX2R1cmF0aW9uKDApCisg
ICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCisgICAgICAgICwgbV9pc0NvbXBsZXRlKGZh
bHNlKQorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKKyAgICB7CisgICAgfQorCisgICAgTmF0
aXZlSW1hZ2VQdHIgbV9mcmFtZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247
CisgICAgZmxvYXQgbV9kdXJhdGlvbjsKKyAgICBib29sIG1faGF2ZU1ldGFkYXRhIDogMTsKKyAg
ICBib29sIG1faXNDb21wbGV0ZSA6IDE7CisgICAgYm9vbCBtX2hhc0FscGhhIDogMTsKK307CisK
Ky8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8v
IEJpdG1hcEltYWdlIENsYXNzCisvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisKIC8vIFJpZ2h0IG5vdyBHSUZzIGFyZSB0aGUgb25seSByZWNvZ25p
emVkIGltYWdlIGZvcm1hdCB0aGF0IHN1cHBvcnRzIGFuaW1hdGlvbi4KIC8vIFRoZSBhbmltYXRp
b24gc3lzdGVtIGFuZCB0aGUgY29uc3RhbnRzIGJlbG93IGFyZSBkZXNpZ25lZCB3aXRoIHRoaXMg
aW4gbWluZC4KIC8vIEdJRnMgaGF2ZSBhbiBvcHRpb25hbCAxNi1iaXQgdW5zaWduZWQgbG9vcCBj
b3VudCB0aGF0IGRlc2NyaWJlcyBob3cgYW4KQEAgLTEzMiw3ICsxNjUsOCBAQCBwdWJsaWM6CiAg
ICAgfTsKICNlbmRpZgogCi0gICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24g
PSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVBcHBsaWVkKTsKKyAgICBJ
bWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQpOworICAgIEltYWdl
U291cmNlKEltYWdlU291cmNlT2JzZXJ2ZXIqLCBBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVsdGlw
bGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZUFw
cGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMgdGhlIEltYWdlU291
cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNvZGVkIGZyYW1lCkBA
IC0xODAsMTIgKzIxNCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlcnMgc2hvdWxkIG5vdCBj
YWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIgaW5kZXg7CiAgICAg
Ly8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hl
dGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhhLgotICAgIGJvb2wg
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJh
bWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRp
b25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyAgICB2
b2lkIHJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBJbWFnZUZyYW1lRGF0YSBjcmVh
dGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKIAogI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RPV05f
U0FNUExJTkcpCiAgICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRlY29kZWRJbWFnZSgp
IHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9CkBAIC0xOTMsNyArMjIzLDIw
IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFVTRShDRykKKyAgICBmbG9hdCBm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55
IGFscGhhLgorICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0
aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgorICAgIEltYWdlT3Jp
ZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ug
b3JpZW50YXRpb24KKyNlbHNlCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoSW1hZ2VG
cmFtZSopOworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoSW1hZ2VGcmFtZSopOworICAg
IGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChJbWFnZUZyYW1lKik7CisgICAgSW1hZ2VPcmll
bnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFtZSopIGNvbnN0OworI2VuZGlmCisK
ICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBtX2RlY29kZXI7CisgICAgSW1hZ2VTb3VyY2VPYnNl
cnZlciogbV9vYnNlcnZlcjsKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0aW9uOwogICAgIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb247CiAj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmFmNzA4YwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2ZXIuaApA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbWFnZVNvdXJjZU9ic2Vy
dmVyX2gKKyNkZWZpbmUgSW1hZ2VTb3VyY2VPYnNlcnZlcl9oCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CisKKy8vIEludGVyZmFjZSBmb3Igbm90aWZpY2F0
aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gSW1hZ2VTb3VyY2UsIGluY2x1ZGluZyBkZWNvZGluZy4K
K2NsYXNzIEltYWdlU291cmNlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKSA9IDA7
CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5JbWFnZVNvdXJjZU9ic2VydmVyKCkgeyB9Cit9
OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBlOWZhNWJlLi42Njdk
MDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9C
aXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNDIsNiArNDIsNyBAQCBQYXNzUmVmUHRy
PEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFj
ZSkKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlQ2Fpcm8qIG5hdGl2ZUlt
YWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQorICAg
ICwgbV9zb3VyY2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1l
cygwKQogICAgICwgbV9mcmFtZVRpbWVyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwCmluZGV4IGFjMjkyZDMuLjA0YzhhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fp
cm8uY3BwCkBAIC0xNTcsOSArMTU3LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldElt
YWdlRGF0YShJbWFnZSogaW1hZ2UsIHVuc2lnbmVkIGludCBmb3JtYXQsIHVuc2lnbmVkCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlOwogICAgIGlmIChpbWFnZS0+ZGF0
YSgpKSB7CiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKLSAg
ICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5mcmFtZUlzQ29tcGxl
dGVBdEluZGV4KDApKQorICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VDYWlybz4gbmF0
aXZlSW1hZ2UgPSBhZG9wdFB0cihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CisgICAg
ICAgIEltYWdlRnJhbWVEYXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNvZGVyLmNyZWF0ZUZy
YW1lQXRJbmRleCgwKTsKKyAgICAgICAgaWYgKCFpbWFnZUltYWdlRnJhbWVEYXRhLm1faXNDb21w
bGV0ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgT3duUHRyPE5hdGl2ZUlt
YWdlQ2Fpcm8+IG5hdGl2ZUltYWdlID0gYWRvcHRQdHIoaW1hZ2VJbWFnZUZyYW1lRGF0YS5tX2Zy
YW1lKTsKICAgICAgICAgaW1hZ2VTdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnN1cmZhY2UoKTsKICAg
ICB9IGVsc2UgewogICAgICAgICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JD
dXJyZW50RnJhbWUoKS0+c3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAppbmRleCBlMDQ0
YjhkLi4zZmQ4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMTA3LDcgKzEwNyw4IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAg
ICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAgICAgICAgaWYgKCFk
ZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ZGVjb2RlZEltYWdlLmFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOworICAg
ICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVB
dEluZGV4KDApOworICAgICAgICBkZWNvZGVkSW1hZ2UuYWRvcHRDRihpbWFnZUZyYW1lRGF0YS5t
X2ZyYW1lKTsKICAgICAgICAgY2dJbWFnZSA9IGRlY29kZWRJbWFnZS5nZXQoKTsKICAgICB9IGVs
c2UKICAgICAgICAgY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VD
Ry5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApp
bmRleCBmZWQ5MTFhLi5mZmNmOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtNzAsNiArNzAsNyBAQCBib29sIEZyYW1lRGF0YTo6
Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoQ0dJ
bWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9i
c2VydmVyKQorICAgICwgbV9zb3VyY2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAg
ICAgLCBtX2ZyYW1lcygwKQogICAgICwgbV9mcmFtZVRpbWVyKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNHLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCmluZGV4IDQz
MzUzNjUuLjRiZTgyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
SW1hZ2VTb3VyY2VDRy5oIgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1
ZGUgIkltYWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRQb2ludC5oIgogI2luY2x1
ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCkBAIC03MiwxMiAr
NzMsMjEgQEAgdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8pCiAKIEltYWdlU291
cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIElt
YWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKICAgICA6IG1fZGVjb2RlcigwKQorICAgICwgbV9vYnNlcnZlcigwKQogICAgIC8v
IEZJWE1FOiBtX3ByZW11bHRpcGx5QWxwaGEgaXMgaWdub3JlZCBpbiBjZyBhdCB0aGUgbW9tZW50
LgogICAgICwgbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1fZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiB9CiAKK0ltYWdl
U291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZU9ic2VydmVyKiBvYnNlcnZlciwgSW1hZ2VT
b3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBtX2RlY29k
ZXIoMCkKKyAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2FscGhhT3B0aW9uKGFs
cGhhT3B0aW9uKQorICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKK3sKK30KKwogSW1hZ2VTb3VyY2U6On5JbWFnZVNvdXJjZSgpCiB7
CiAgICAgY2xlYXIodHJ1ZSk7CkBAIC0yOTksMjQgKzMwOSw0MiBAQCBzaXplX3QgSW1hZ2VTb3Vy
Y2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIgPyBDR0ltYWdlU291
cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNHSW1hZ2VSZWYgSW1hZ2VTb3VyY2U6
OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCit2b2lkIEltYWdlU291cmNlOjpyZXF1
ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9vYnNlcnZlcik7
CisgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5kZXgo
aW5kZXgpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgsIGlt
YWdlRnJhbWVEYXRhKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0ZUZy
YW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFpbml0aWFsaXplZCgpKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVEYXRhKCk7CisKKyAgICBJ
bWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YTsKIAogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBpbWFnZShBZG9wdENGLCBDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdEluZGV4KG1fZGVjb2Rl
ciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhTa2lwTWV0YWRhdGEpKSk7CiAgICAgQ0ZTdHJp
bmdSZWYgaW1hZ2VVVEkgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2RlY29kZXIpOwogICAgIHN0
YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGljLnhiaXRtYXAtaW1h
Z2UiKTsKICAgICBpZiAoIWltYWdlVVRJIHx8ICFDRkVxdWFsKGltYWdlVVRJLCB4Ym1VVEkpKQot
ICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICBpbWFnZUZyYW1lRGF0YS5t
X2ZyYW1lID0gaW1hZ2UubGVha1JlZigpOwogICAgIAogICAgIC8vIElmIGl0IGlzIGFuIHhibSBp
bWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIgdGhlbSB0cmFuc3Bh
cmVudC4KICAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7MjU1LCAyNTUsICAy
NTUsIDI1NSwgMjU1LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBtYXNrZWRJbWFn
ZShBZG9wdENGLCBDR0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1hZ2UuZ2V0KCksIG1h
c2tpbmdDb2xvcnMpKTsKICAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAgICByZXR1cm4gaW1h
Z2UubGVha1JlZigpOworICAgICAgICBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1lID0gaW1hZ2UubGVh
a1JlZigpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9IG1hc2tlZEltYWdlLmxlYWtS
ZWYoKTsKKworICAgIGltYWdlRnJhbWVEYXRhLm1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkF0
SW5kZXgoaW5kZXgpOworICAgIGltYWdlRnJhbWVEYXRhLm1faGF2ZU1ldGFkYXRhID0gdHJ1ZTsK
KyAgICBpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgPSBmcmFtZUlzQ29tcGxldGVBdEluZGV4
KGluZGV4KTsKKyAgICBpZiAocmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1hdGlvbk5vbmUpCisg
ICAgICAgIGltYWdlRnJhbWVEYXRhLm1fZHVyYXRpb24gPSBmcmFtZUR1cmF0aW9uQXRJbmRleChp
bmRleCk7CisgICAgaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYSA9IGZyYW1lSGFzQWxwaGFBdElu
ZGV4KGluZGV4KTsKIAotICAgIHJldHVybiBtYXNrZWRJbWFnZS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIGltYWdlRnJhbWVEYXRhOwogfQogCiBib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCmluZGV4IDk1MTA4ODIuLmViODA2
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9J
bWFnZU9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bnZnL0ltYWdlT3BlblZHLmNwcApAQCAtNTIsNiArNTIsNyBAQCBib29sIEZyYW1lRGF0YTo6Y2xl
YXIoYm9vbCBjbGVhck1ldGFkYXRhKQogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoVGlsZWRJ
bWFnZU9wZW5WRyogdGlsZWRJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2ZXIpCiAgICAgOiBJ
bWFnZShvYnNlcnZlcikKKyAgICAsIG1fc291cmNlKHRoaXMpCiAgICAgLCBtX3NpemUodGlsZWRJ
bWFnZS0+c2l6ZSgpKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDEp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCmlu
ZGV4IGUwOThlMDkuLmRhZjAwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAgdm9pZCBJbWFnZTo6ZHJh
d1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIHRpbGVSZWN0
LCBjb25zdAogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUVBpeG1hcCogcGl4bWFwLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9zb3Vy
Y2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQogICAg
ICwgbV9mcmFtZVRpbWVyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAKaW5kZXggMDE5
MDM3Yy4uNzY5ZjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNwcApAQCAtNjAsMTAg
KzYwLDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1h
Z2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGUgPyBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVkIDogSW1hZ2VTb3Vy
Y2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CiAgICAgICAgIC8vIEF0dGVtcHQgdG8g
Z2V0IHJhdyB1bnByZW11bHRpcGxpZWQgaW1hZ2UgZGF0YSAKICAgICAgICAgZGVjb2Rlci5zZXRE
YXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwotICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3Vu
dCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCisgICAgICAgIGlmICgh
ZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGhhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleCgwKTsKLSAgICAgICAgcGl4
ZWxzID0gYWRvcHRQdHIoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkpOworICAgICAgICBJ
bWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4
KDApOworICAgICAgICBpZiAoIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaGFzQWxwaGEgPSBpbWFnZUZyYW1lRGF0YS5tX2hh
c0FscGhhOworICAgICAgICBwaXhlbHMgPSBhZG9wdFB0cihpbWFnZUZyYW1lRGF0YS5tX2ZyYW1l
KTsKICAgICAgICAgaWYgKCFwaXhlbHMuZ2V0KCkgfHwgIXBpeGVscy0+aXNEYXRhQ29tcGxldGUo
KSB8fCAhcGl4ZWxzLT5iaXRtYXAoKS53aWR0aCgpIHx8ICFwaXhlbHMtPmJpdG1hcCgpLmhlaWdo
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTa0JpdG1hcDo6Q29uZmln
IHNraWFDb25maWcgPSBwaXhlbHMtPmJpdG1hcCgpLmNvbmZpZygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcAppbmRleCA1NGJiZGJiLi43NDY1
NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFn
ZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4
LmNwcApAQCAtODIsNiArODIsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRm
b3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdl
KGNvbnN0IHd4Qml0bWFwJiBiaXRtYXApCiAgICAgOiBJbWFnZSgwKQorICAgICwgbV9zb3VyY2Uo
dGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQogICAgICwg
bV9mcmFtZVRpbWVyKDApCi0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150574</attachid>
            <date>2012-07-03 03:53:16 -0700</date>
            <delta_ts>2012-07-03 03:55:25 -0700</delta_ts>
            <desc>patch v.2</desc>
            <filename>0001-A-RenderBox-can-render-an-image-in-retained-mode-and.patch</filename>
            <type>text/plain</type>
            <size>25469</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBkNDkzMTUzM2EyNDliNjYwNDJiYjkwZDEyNjMyNDM3MWM3MWY0YjAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMzEgTWF5IDIwMTIgMTY6MzE6MjEgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBBIFJlbmRlckJveCBjYW4gcmVuZGVyIGFuIGltYWdlIGluIHJldGFpbmVkIG1vZGUsIGFuZAog
cmV0YWluZCBtb2RlIHJlbmRlcmluZyBjYW4gbWFrZSBhc3luY3Jvbm91cyBkZWNvZGluZwogcG9z
c2libGUuCgpCYWNrZ3JvdW5kIGltYWdlLCBib2FyZGVyIGltYWdlLCBhbmQgbWFzayBpbWFnZSBv
ZiBhIFJlbmRlckJveCBjYW4gYmUKcmVuZGVyZWQgaW4gcmV0YWluZWQgbW9kZSwgYmVjYXVzZSBh
IFJlbmRlckJveCBpcyBjbGllbnQgb2YgQ2FjaGVkSW1hZ2UuCkEgbWFya2VyIGltYWdlIG9mIGEg
UmVuZGVyTGlzdE1hcmtlciBjYW4gYmUgcmVuZGVyZWQgaW4gcmF0YWluZWQgbW9kZSwgYWxzby4K
LS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgODkgKysrKysrKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZS5jcHAgIHwgICAxNSArKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwICAgICAgICAgfCAgICA5ICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAgICB8ICAgMTMgKy0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwICB8ICAgMjQgKysrLS0t
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgICAgICB8ICAg
IDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAg
IHwgICAgNyArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAg
ICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcCAgICAgICB8ICAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxs
TGF5ZXIuaCAgICAgICAgIHwgICAgNCArLQogMTEgZmlsZXMgY2hhbmdlZCwgMTQ3IGluc2VydGlv
bnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Nzc2NTZjLi5mZTdmNGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTItMDctMDMgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgUHJlcGFyZSBmb3IgcGFyYWxsZWwg
aW1hZ2UgZGVjb2Rlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNDQzCisKKyAgICAgICAgVGhlIGtleSBwb2ludCBvZiB0aGlzIHBhdGNoIGlzIHRv
IGNoYW5nZSBob3cgQml0bWFwSW1hZ2UgdXNlcyBJbWFnZVNvdXJjZS4KKworICAgICAgICBPcmln
aW5hbGx5LCBCaXRtYXBJbWFnZSByZXRyaWV2ZXMgdGhlIGZyYW1lIGRhdGEgZnJvbSBJbWFnZVNv
dXJjZSBieSBjYWxsaW5nIHRoZQorICAgICAgICBmb2xsb3dpbmcgbWV0aG9kczoKKyAgICAgICAg
LSBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgICAgICAtIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBib29sIGZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OworCisgICAgICAgIFVwb24gZWFjaCBtZXRob2QgY2FsbCwgSW1h
Z2VTb3VyY2Ugc3luY2hyb25vdXNseSBkZWNvZGVzIHRoZSBpbWFnZSBhbmQgcmV0dXJucworICAg
ICAgICB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uLiBCZWNhdXNlIGFsbCB0aGUgbWV0aG9kcyBh
Ym92ZSBhcmUgaW5oZXJlbnRseQorICAgICAgICBzeW5jaHJvbm91cywgaXQgaXMgbm90IGVhc3kg
dG8gbWFrZSB0aGVtIHBhcmFsbGVsLgorCisgICAgICAgIFRvIGltcGxlbWVudCBwYXJhbGxlbCBp
bWFnZSBkZWNvZGVycywgdGhlc2UgbWV0aG9kcyBtdXN0IGJlIGFzeW5jaHJvbm91cy4gU28gSQor
ICAgICAgICBtZXJnZWQgYWxsIHRoZXNlIG1ldGhvZHMgaW50byBhIHNpbmdsZSBtZXRob2QsIHJl
cXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90KSwKKyAgICAgICAgd2hpY2ggcmVxdWVzdHMgYWxsIHRo
ZSBmcmFtZSBkYXRhIGF0IG9uY2UuIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBoYXMgbm8gcmV0dXJu
CisgICAgICAgIHZhbHVlLgorCisgICAgICAgIEluc3RlYWQsIEJpdG1hcEltYWdlIG5vdyBpbXBs
ZW1lbnRzIEltYWdlU291cmNlT2JzZXJ2ZXIgYW5kIHBhc3NlcyBpdHNlbGYgdG8KKyAgICAgICAg
SW1hZ2VTb3VyY2UgY29uc3RydWN0b3IuIE9uY2UgaW1hZ2UgZGVjb2RpbmcgaXMgZmluaXNoZWQg
b3IgY2FjaGVkIGltYWdlIGlzCisgICAgICAgIGF2YWlsYWJsZSwgSW1hZ2VTb3VyY2Ugbm90aWZp
ZXMgQml0bWFwSW1hZ2UgdmlhCisgICAgICAgIEltYWdlU291cmNlT2JzZXJ2ZXI6OmRpZFJlY2Vp
dmVJbWFnZUZyYW1lRGF0YShzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJikuCisgICAgICAg
IEltYWdlRnJhbWVEYXRhIGNvbnRhaW5zIGFsbCB0aGUgZnJhbWUgZGF0YSBpbmNsdWRpbmcgZnJh
bWUsIGR1cmF0aW9uLCBpc0FscGhhLAorICAgICAgICBpc0NvbXBsZXRlIGFuZCBvcmllbnRhdGlv
bi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLSBleGlzdGluZyBpbWFnZSB0ZXN0cyBjb3ZlciB0aGVzZSBjYXNlcy4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpzZXRG
cm9tSW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoRnJhbWVEYXRhKToKKyAgICAgICAgKEJpdG1h
cEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKEltYWdlU291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbWFnZVNvdXJjZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlT2JzZXJ2ZXI6On5JbWFnZVNvdXJjZU9ic2VydmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXF1ZXN0RnJh
bWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0
SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
eC9JbWFnZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisKIDIwMTItMDYtMjcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFBlcmZvcm1hbmNlOiBPcHRpbWl6ZSBEcm9tYWVvL2RvbS1xdWVyeS5odG1sIGJ5
IGNhY2hpbmcgTm9kZVJhcmVEYXRhIG9uIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAK
aW5kZXggNzgzNDZiYy4uYTcyYzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcApAQCAtMjcs
NiArMjcsOCBAQAogI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAKICNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUg
IlN0eWxlSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNCArMTg0LDE3
IEBAIEltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSogaW1h
Z2UpCiAgICAgcmV0dXJuIGltYWdlOwogfQogCitib29sIGlzRGVjb2RlZENvbXBsZXRlbHlJZkJp
dG1hcEltYWdlQXNXZWxsQXNJc0xvYWRlZChTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmIChzdHlsZUltYWdlICYmICFzdHlsZUlt
YWdlLT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3R5bGVJ
bWFnZSAmJiAoc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpIHx8IHN0eWxlSW1hZ2UtPmlzQ2Fj
aGVkSW1hZ2VTZXQoKSkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlSW1h
Z2UtPmltYWdlKGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4ocmVuZGVyZXIpLCBJbnRTaXplKCkp
OworICAgICAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAh
dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZS5nZXQoKSktPmN1cnJlbnRGcmFtZUlzQ29t
cGxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oCmluZGV4IDgwOTY1OGYuLjQ1YTIwZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuaApAQCAtMzEsNiArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBCaXRtYXBJbWFnZTsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFN0eWxl
SW1hZ2U7CiAKIGNsYXNzIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlIDogcHVibGljIEltYWdlIHsK
IHB1YmxpYzoKQEAgLTc3LDYgKzc5LDcgQEAgcHJpdmF0ZToKIAogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKIEltYWdlKiB0b1JldGFp
bmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworYm9vbCBpc0RlY29kZWRDb21w
bGV0ZWx5SWZCaXRtYXBJbWFnZUFzV2VsbEFzSXNMb2FkZWQoU3R5bGVJbWFnZSosIGNvbnN0IFJl
bmRlck9iamVjdCopOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAppbmRleCBkYzQ1MDAxLi5kMmM2YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW5saW5lRmxvd0JveC5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2Uu
aCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTI1MCw4ICsxMjUxLDggQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYKICAgICAgICAgICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJ
bWFnZSA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlckltYWdlKCk7CiAgICAgICAgICAgICBT
dHlsZUltYWdlKiBib3JkZXJJbWFnZVNvdXJjZSA9IGJvcmRlckltYWdlLmltYWdlKCk7CiAgICAg
ICAgICAgICBib29sIGhhc0JvcmRlckltYWdlID0gYm9yZGVySW1hZ2VTb3VyY2UgJiYgYm9yZGVy
SW1hZ2VTb3VyY2UtPmNhblJlbmRlcihyZW5kZXJlcigpLCBzdHlsZVRvVXNlLT5lZmZlY3RpdmVa
b29tKCkpOwotICAgICAgICAgICAgaWYgKGhhc0JvcmRlckltYWdlICYmICFib3JkZXJJbWFnZVNv
dXJjZS0+aXNMb2FkZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47IC8vIERvbid0IHBhaW50
IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgorICAgICAgICAg
ICAgaWYgKGhhc0JvcmRlckltYWdlICYmICFpc0RlY29kZWRDb21wbGV0ZWx5SWZCaXRtYXBJbWFn
ZUFzV2VsbEFzSXNMb2FkZWQoYm9yZGVySW1hZ2VTb3VyY2UsIGJveE1vZGVsT2JqZWN0KCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcGFpbnQgYW55dGhpbmcgd2hpbGUgd2Ug
d2FpdCBmb3IgdGhlIGltYWdlIHRvIGRlY29kZSBjb21wbGV0ZWx5LgogCiAgICAgICAgICAgICAv
LyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2UgZWl0aGVyIGhhdmUgbm8gYm9yZGVyIGltYWdl
IG9yIHdlIGFyZSB0aGUgb25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiAgSW4gdGhvc2UKICAgICAg
ICAgICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUgY2FsbCB0byBkcmF3IGlzIHJlcXVpcmVkLgpA
QCAtMTMyNSwxMCArMTMyNiwxMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIHBhaW50
RmlsbExheWVycyhwYWludEluZm8sIENvbG9yKCksIHJlbmRlcmVyKCktPnN0eWxlKCktPm1hc2tM
YXllcnMoKSwgcGFpbnRSZWN0LCBjb21wb3NpdGVPcCk7CiAgICAgCiAgICAgYm9vbCBoYXNCb3hJ
bWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNhblJlbmRlcihyZW5kZXJlcigp
LCByZW5kZXJlcigpLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwotICAgIGlmICghaGFzQm94
SW1hZ2UgfHwgIW1hc2tCb3hJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgIGlmICghaGFzQm94SW1h
Z2UgfHwgIWlzRGVjb2RlZENvbXBsZXRlbHlJZkJpdG1hcEltYWdlQXNXZWxsQXNJc0xvYWRlZCht
YXNrQm94SW1hZ2UsIGJveE1vZGVsT2JqZWN0KCkpKSB7CiAgICAgICAgIGlmIChwdXNoVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKLSAgICAgICAgcmV0dXJuOyAvLyBEb24ndCBwYWludCBhbnl0aGluZyB3aGls
ZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gbG9hZC4KKyAgICAgICAgcmV0dXJuOyAvLyBEb24n
dCBwYWludCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gZGVjb2RlIGNv
bXBsZXRlbHkuCiAgICAgfQogCiAgICAgLy8gVGhlIHNpbXBsZSBjYXNlIGlzIHdoZXJlIHdlIGFy
ZSB0aGUgb25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiAgSW4gdGhvc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNTI0MDgyZS4uNGQ4Y2Y4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKQEAgLTc5NSw3ICs3OTYsNyBAQCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3Jh
cGhpY3NDbwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsK
IAotICAgIGlmICghc3R5bGUtPmhhc0JhY2tncm91bmQoKSB8fCAhc3R5bGUtPmhhc0JvcmRlcigp
IHx8ICFzdHlsZS0+aGFzQm9yZGVyUmFkaXVzKCkgfHwgYm9yZGVySW1hZ2VJc0xvYWRlZEFuZENh
bkJlUmVuZGVyZWQoKSkKKyAgICBpZiAoIXN0eWxlLT5oYXNCYWNrZ3JvdW5kKCkgfHwgIXN0eWxl
LT5oYXNCb3JkZXIoKSB8fCAhc3R5bGUtPmhhc0JvcmRlclJhZGl1cygpIHx8IGJvcmRlckltYWdl
Q2FuQmVSZW5kZXJlZEFuZElzRGVjb2RlZENvbXBsZXRlbHkoKSkKICAgICAgICAgcmV0dXJuIEJh
Y2tncm91bmRCbGVlZE5vbmU7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4dC0+
Z2V0Q1RNKCk7CkBAIC04OTcsMjYgKzg5OCwyNiBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNr
SW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQog
ICAgIGJvb2wgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzID0gdmlldygpLT5mcmFtZVZpZXcoKSAm
JiB2aWV3KCktPmZyYW1lVmlldygpLT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKIAotICAgIGJvb2wgYWxsTWFza0ltYWdlc0xvYWRlZCA9
IHRydWU7CisgICAgYm9vbCBhbGxNYXNrSW1hZ2VzRGVjb2RlZENvbXBsZXRlbHkgPSB0cnVlOwog
ICAgIAogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
KSB7CiAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lMYXllciA9IHRydWU7CiAgICAgICAgIFN0eWxl
SW1hZ2UqIG1hc2tCb3hJbWFnZSA9IHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLmltYWdlKCk7CiAg
ICAgICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycyA9IHN0eWxlKCktPm1hc2tMYXllcnMo
KTsKIAotICAgICAgICAvLyBEb24ndCByZW5kZXIgYSBtYXNrZWQgZWxlbWVudCB1bnRpbCBhbGwg
dGhlIG1hc2sgaW1hZ2VzIGhhdmUgbG9hZGVkLCB0byBwcmV2ZW50IGEgZmxhc2ggb2YgdW5tYXNr
ZWQgY29udGVudC4KKyAgICAgICAgLy8gRG9uJ3QgcmVuZGVyIGEgbWFza2VkIGVsZW1lbnQgdW50
aWwgYWxsIHRoZSBtYXNrIGltYWdlcyBoYXZlIGRlY29kZWQgY29tcGxldGVseSwgdG8gcHJldmVu
dCBhIGZsYXNoIG9mIHVubWFza2VkIGNvbnRlbnQuCiAgICAgICAgIGlmIChtYXNrQm94SW1hZ2Up
Ci0gICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tCb3hJbWFnZS0+aXNMb2Fk
ZWQoKTsKKyAgICAgICAgICAgIGFsbE1hc2tJbWFnZXNEZWNvZGVkQ29tcGxldGVseSAmPSBpc0Rl
Y29kZWRDb21wbGV0ZWx5SWZCaXRtYXBJbWFnZUFzV2VsbEFzSXNMb2FkZWQobWFza0JveEltYWdl
LCB0aGlzKTsKIAogICAgICAgICBpZiAobWFza0xheWVycykKLSAgICAgICAgICAgIGFsbE1hc2tJ
bWFnZXNMb2FkZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9hZGVkKCk7CisgICAgICAgICAg
ICBhbGxNYXNrSW1hZ2VzRGVjb2RlZENvbXBsZXRlbHkgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJl
RGVjb2RlZENvbXBsZXRlbHkodGhpcyk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgIGNvbXBv
c2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICB9CiAKLSAgICBpZiAoYWxsTWFza0lt
YWdlc0xvYWRlZCkgeworICAgIGlmIChhbGxNYXNrSW1hZ2VzRGVjb2RlZENvbXBsZXRlbHkpIHsK
ICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS0+bWFz
a0xheWVycygpLCBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIGNvbXBvc2l0ZU9wKTsK
ICAgICAgICAgcGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0
LCBzdHlsZSgpLCBzdHlsZSgpLT5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CmluZGV4IGEzNWEyMDYuLmEwNzI5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRl
ICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIK
QEAgLTcyNiw2ICs3MjcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgQ29sb3Ig
YmdDb2xvciA9IGNvbG9yOwogICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFn
ZSgpOworCiAgICAgYm9vbCBzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSA9IGJnSW1hZ2UgJiYg
YmdJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAg
CiAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gZmFsc2U7CkBAIC05MjEsNyArOTIz
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
Y2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRP
YmplY3QgOiB0aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2Ut
PmltYWdlKGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAg
ICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1
YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkp
OwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxl
KCktPmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQ
aGFzZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCAKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdU
aWxlZEltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKGltYWdlLmdldCgp
KSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCBnZW9tZXRyeS5y
ZWxhdGl2ZVBoYXNlKCksIGdlb21ldHJ5LnRpbGVTaXplKCksCiAgICAgICAgICAgICAgICAgY29t
cG9zaXRlT3AsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEy
MjYsNyArMTIyOCw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNl
SW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgaWYgKCFzdHlsZUlt
YWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXN0eWxlSW1hZ2UtPmlzTG9h
ZGVkKCkpCisgICAgaWYgKCFpc0RlY29kZWRDb21wbGV0ZWx5SWZCaXRtYXBJbWFnZUFzV2VsbEFz
SXNMb2FkZWQoc3R5bGVJbWFnZSwgdGhpcykpCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBOZXZl
ciBwYWludCBhIG5pbmUtcGllY2UgaW1hZ2UgaW5jcmVtZW50YWxseSwgYnV0IGRvbid0IHBhaW50
IHRoZSBmYWxsYmFjayBib3JkZXJzIGVpdGhlci4KIAogICAgIGlmICghc3R5bGVJbWFnZS0+Y2Fu
UmVuZGVyKHRoaXMsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkpKQpAQCAtMTMxMCwxOSArMTMxMiwx
OSBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAvLyBUaGUgdG9wIGxlZnQgY29y
bmVyIHJlY3QgaXMgKHR4LCB0eSwgbGVmdFdpZHRoLCB0b3BXaWR0aCkKICAgICAgICAgLy8gVGhl
IHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91ciBz
bGljZSwgYW5kIGlzICgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJh
d1RvcCkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC5sb2NhdGlvbigpLCBJbnRTaXpl
KGxlZnRXaWR0aCwgdG9wV2lkdGgpKSwKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0ltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKGltYWdlLmdldCgpKSwg
Y29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFnZVJlY3QubG9jYXRpb24oKSwgSW50U2l6ZShs
ZWZ0V2lkdGgsIHRvcFdpZHRoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMYXlvdXRSZWN0KDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpLCBvcCk7CiAKICAgICAg
ICAgLy8gVGhlIGJvdHRvbSBsZWZ0IGNvcm5lciByZWN0IGlzICh0eCwgdHkgKyBoIC0gYm90dG9t
V2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVz
ZSBmcm9tIHdpdGhpbiB0aGUgaW1hZ2UgaXMgKDAsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2Us
IGxlZnRTbGljZSwgYm90b21TbGljZSkKICAgICAgICAgaWYgKGRyYXdCb3R0b20pCi0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwg
SW50UmVjdChib3JkZXJJbWFnZVJlY3QueCgpLCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90
dG9tV2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpLAorICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2UodG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUoaW1h
Z2UuZ2V0KCkpLCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC54KCksIGJvcmRl
ckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0KDAsIGlt
YWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpLCBvcCk7CiAK
ICAgICAgICAgLy8gUGFpbnQgdGhlIGxlZnQgZWRnZS4KICAgICAgICAgLy8gSGF2ZSB0byBzY2Fs
ZSBhbmQgdGlsZSBpbnRvIHRoZSBib3JkZXIgcmVjdC4KICAgICAgICAgaWYgKHNvdXJjZUhlaWdo
dCA+IDApCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC54KCksIGJvcmRlcklt
YWdlUmVjdC55KCkgKyB0b3BXaWR0aCwgbGVmdFdpZHRoLAorICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3VGlsZWRJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJs
ZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0LngoKSwg
Ym9yZGVySW1hZ2VSZWN0LnkoKSArIHRvcFdpZHRoLCBsZWZ0V2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uSGVpZ2h0KSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCgwLCB0b3BTbGlj
ZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdFNpemUobGVmdFNpZGVTY2FsZSwgbGVmdFNpZGVTY2FsZSks
IEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgb3ApOwpAQCAtMTMz
MywxOCArMTMzNSwxOCBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVj
ZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAvLyBUaGUg
dG9wIHJpZ2h0IGNvcm5lciByZWN0IGlzICh0eCArIHcgLSByaWdodFdpZHRoLCB0eSwgcmlnaHRX
aWR0aCwgdG9wV2lkdGgpCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0
aGUgaW1hZ2UgaXMgb2J0YWluZWQgZnJvbSBvdXIgc2xpY2UsIGFuZCBpcyAoaW1hZ2VXaWR0aCAt
IHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJhd1Rv
cCkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCBi
b3JkZXJJbWFnZVJlY3QueSgpLCByaWdodFdpZHRoLCB0b3BXaWR0aCksCisgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3Nz
aWJsZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0Lm1h
eFgoKSAtIHJpZ2h0V2lkdGgsIGJvcmRlckltYWdlUmVjdC55KCksIHJpZ2h0V2lkdGgsIHRvcFdp
ZHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3Qo
aW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKSwgb3ApOwog
CiAgICAgICAgIC8vIFRoZSBib3R0b20gcmlnaHQgY29ybmVyIHJlY3QgaXMgKHR4ICsgdyAtIHJp
Z2h0V2lkdGgsIHR5ICsgaCAtIGJvdHRvbVdpZHRoLCByaWdodFdpZHRoLCBib3R0b21XaWR0aCkK
ICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyAoaW1h
Z2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xp
Y2UsIGJvdHRvbVNsaWNlKQogICAgICAgICBpZiAoZHJhd0JvdHRvbSkKLSAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0
KGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCBib3JkZXJJbWFnZVJlY3QubWF4
WSgpIC0gYm90dG9tV2lkdGgsIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRoKSwKKyAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBv
c3NpYmxlKGltYWdlLmdldCgpKSwgY29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFnZVJlY3Qu
bWF4WCgpIC0gcmlnaHRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRo
LCByaWdodFdpZHRoLCBib3R0b21XaWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMYXlvdXRSZWN0KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCBpbWFnZUhlaWdo
dCAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21TbGljZSksIG9wKTsKIAogICAgICAg
ICAvLyBQYWludCB0aGUgcmlnaHQgZWRnZS4KICAgICAgICAgaWYgKHNvdXJjZUhlaWdodCA+IDAp
Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRo
LCBib3JkZXJJbWFnZVJlY3QueSgpICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsCisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2VJZlBvc3NpYmxlKGltYWdlLmdldCgpKSwgY29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFn
ZVJlY3QubWF4WCgpIC0gcmlnaHRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0LnkoKSArIHRvcFdpZHRo
LCByaWdodFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkhlaWdodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEludFJlY3QoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIHRvcFNsaWNlLCByaWdo
dFNsaWNlLCBzb3VyY2VIZWlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGbG9hdFNpemUocmlnaHRTaWRlU2NhbGUsIHJpZ2h0U2lkZVNjYWxlKSwKQEAg
LTEzNTMsMTMgKzEzNTUsMTMgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5l
UGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKIAogICAgIC8vIFBh
aW50IHRoZSB0b3AgZWRnZS4KICAgICBpZiAoZHJhd1RvcCAmJiBzb3VyY2VXaWR0aCA+IDApCi0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9y
U3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0LngoKSArIGxlZnRXaWR0aCwgYm9yZGVySW1h
Z2VSZWN0LnkoKSwgZGVzdGluYXRpb25XaWR0aCwgdG9wV2lkdGgpLAorICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3Np
YmxlKGltYWdlLmdldCgpKSwgY29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFnZVJlY3QueCgp
ICsgbGVmdFdpZHRoLCBib3JkZXJJbWFnZVJlY3QueSgpLCBkZXN0aW5hdGlvbldpZHRoLCB0b3BX
aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdChs
ZWZ0U2xpY2UsIDAsIHNvdXJjZVdpZHRoLCB0b3BTbGljZSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxl
KSwgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CiAKICAg
ICAvLyBQYWludCB0aGUgYm90dG9tIGVkZ2UuCiAgICAgaWYgKGRyYXdCb3R0b20gJiYgc291cmNl
V2lkdGggPiAwKQotICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC54KCkgKyBsZWZ0V2lk
dGgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3Nz
aWJsZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0Lngo
KSArIGxlZnRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uV2lkdGgsIGJv
dHRvbVdpZHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRS
ZWN0KGxlZnRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgc291cmNlV2lkdGgsIGJv
dHRvbVNsaWNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9h
dFNpemUoYm90dG9tU2lkZVNjYWxlLCBib3R0b21TaWRlU2NhbGUpLApAQCAtMTM4Nyw3ICsxMzg5
LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgaWYgKHZSdWxlID09IFN0cmV0
Y2hJbWFnZVJ1bGUpCiAgICAgICAgICAgICBtaWRkbGVTY2FsZUZhY3Rvci5zZXRIZWlnaHQoZGVz
dGluYXRpb25IZWlnaHQgLyBzb3VyY2VIZWlnaHQpOwogICAgICAgICAKLSAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcElt
YWdlSWZQb3NzaWJsZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsCiAgICAgICAgICAgICBJbnRS
ZWN0KGJvcmRlckltYWdlUmVjdC54KCkgKyBsZWZ0V2lkdGgsIGJvcmRlckltYWdlUmVjdC55KCkg
KyB0b3BXaWR0aCwgZGVzdGluYXRpb25XaWR0aCwgZGVzdGluYXRpb25IZWlnaHQpLAogICAgICAg
ICAgICAgSW50UmVjdChsZWZ0U2xpY2UsIHRvcFNsaWNlLCBzb3VyY2VXaWR0aCwgc291cmNlSGVp
Z2h0KSwKICAgICAgICAgICAgIG1pZGRsZVNjYWxlRmFjdG9yLCAoSW1hZ2U6OlRpbGVSdWxlKWhS
dWxlLCAoSW1hZ2U6OlRpbGVSdWxlKXZSdWxlLCBvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMGQyZjQ4ZC4uMTg5OWZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIu
aCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAt
MTEzMCw3ICsxMTMxLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgaWYgKHN0
eWxlKCktPmhpZ2hsaWdodCgpICE9IG51bGxBdG9tICYmICFwYWludEluZm8uY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQocGFpbnRP
ZmZzZXQsIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0cnVlKTsKICNlbmRpZgotICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywgbWFya2VyLnNpemUoKSkuZ2V0KCks
IHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2UtPmltYWdlKHRo
aXMsIG1hcmtlci5zaXplKCkpLmdldCgpKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBtYXJrZXIp
OwogICAgICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAg
ICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGZhMmViNDUuLjYzODZiN2YgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb250ZW50
RGF0YS5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKQEAgLTc5OCwxMiArNzk5LDEyIEBAIHN0
YXRpYyBib29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBGaWxsTGF5ZXIqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRl
ck9iamVjdDo6Ym9yZGVySW1hZ2VJc0xvYWRlZEFuZENhbkJlUmVuZGVyZWQoKSBjb25zdAorYm9v
bCBSZW5kZXJPYmplY3Q6OmJvcmRlckltYWdlQ2FuQmVSZW5kZXJlZEFuZElzRGVjb2RlZENvbXBs
ZXRlbHkoKSBjb25zdAogewogICAgIEFTU0VSVChzdHlsZSgpLT5oYXNCb3JkZXIoKSk7CiAKICAg
ICBTdHlsZUltYWdlKiBib3JkZXJJbWFnZSA9IHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2Uo
KTsKLSAgICByZXR1cm4gYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UtPmNhblJlbmRlcih0aGlz
LCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICYmIGJvcmRlckltYWdlLT5pc0xvYWRlZCgpOwor
ICAgIHJldHVybiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgJiYgaXNEZWNvZGVkQ29tcGxldGVseUlmQml0bWFwSW1h
Z2VBc1dlbGxBc0lzTG9hZGVkKGJvcmRlckltYWdlLCB0aGlzKTsKIH0KIAogYm9vbCBSZW5kZXJP
YmplY3Q6Om11c3RSZXBhaW50QmFja2dyb3VuZE9yQm9yZGVyKCkgY29uc3QKQEAgLTgxOSw3ICs4
MjAsNyBAQCBib29sIFJlbmRlck9iamVjdDo6bXVzdFJlcGFpbnRCYWNrZ3JvdW5kT3JCb3JkZXIo
KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgCiAgICAgLy8gT3VyIGZpbGwgbGF5
ZXJzIGFyZSBvay4gIExldCdzIGNoZWNrIGJvcmRlci4KLSAgICBpZiAoc3R5bGUoKS0+aGFzQm9y
ZGVyKCkgJiYgYm9yZGVySW1hZ2VJc0xvYWRlZEFuZENhbkJlUmVuZGVyZWQoKSkKKyAgICBpZiAo
c3R5bGUoKS0+aGFzQm9yZGVyKCkgJiYgYm9yZGVySW1hZ2VDYW5CZVJlbmRlcmVkQW5kSXNEZWNv
ZGVkQ29tcGxldGVseSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAzZjAxZTkwLi5m
MWZkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01MTQs
NyArNTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5oYXNMYXllcigpOyB9CiAgICAgCiAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLnBhaW50QmFja2dyb3VuZCgpOyB9Ci0gICAg
Ym9vbCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVSZW5kZXJlZCgpIGNvbnN0OworICAgIGJv
b2wgYm9yZGVySW1hZ2VDYW5CZVJlbmRlcmVkQW5kSXNEZWNvZGVkQ29tcGxldGVseSgpIGNvbnN0
OwogICAgIGJvb2wgbXVzdFJlcGFpbnRCYWNrZ3JvdW5kT3JCb3JkZXIoKSBjb25zdDsKICAgICBi
b29sIGhhc0JhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5oYXNCYWNrZ3JvdW5k
KCk7IH0KICAgICBib29sIG5lZWRzTGF5b3V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggMTk1YTA1Yy4uNTY5NTMxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTIyLDYgKzIy
LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKIAorI2lu
Y2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNGaWxsTGF5ZXIgewpAQCAtMjY5LDEx
ICsyNzIsMTEgQEAgYm9vbCBGaWxsTGF5ZXI6OmNvbnRhaW5zSW1hZ2UoU3R5bGVJbWFnZSogcykg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVM
b2FkZWQoKSBjb25zdAorYm9vbCBGaWxsTGF5ZXI6OmltYWdlc0FyZURlY29kZWRDb21wbGV0ZWx5
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgY29uc3QgRmlsbExheWVyKiBj
dXJyOwogICAgIGZvciAoY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0KCkpIHsK
LSAgICAgICAgaWYgKGN1cnItPm1faW1hZ2UgJiYgIWN1cnItPm1faW1hZ2UtPmlzTG9hZGVkKCkp
CisgICAgICAgIGlmIChjdXJyLT5tX2ltYWdlICYmICFpc0RlY29kZWRDb21wbGV0ZWx5SWZCaXRt
YXBJbWFnZUFzV2VsbEFzSXNMb2FkZWQoY3Vyci0+bV9pbWFnZS5nZXQoKSwgcmVuZGVyZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IDdmMWNlYjEuLmViN2JlZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM0LDYgKzM0LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJPYmplY3Q7CisKIHN0cnVjdCBGaWxs
U2l6ZSB7CiAgICAgRmlsbFNpemUoKQogICAgICAgICA6IHR5cGUoU2l6ZUxlbmd0aCkKQEAgLTEy
OCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBjb250YWluc0ltYWdlKFN0
eWxlSW1hZ2UqKSBjb25zdDsKLSAgICBib29sIGltYWdlc0FyZUxvYWRlZCgpIGNvbnN0OworICAg
IGJvb2wgaW1hZ2VzQXJlRGVjb2RlZENvbXBsZXRlbHkoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAK
ICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QKICAgICB7Ci0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150575</attachid>
            <date>2012-07-03 03:55:25 -0700</date>
            <delta_ts>2012-07-03 03:56:14 -0700</delta_ts>
            <desc>patch v.3</desc>
            <filename>0001-A-RenderBox-can-render-an-image-in-retained-mode-and.patch</filename>
            <type>text/plain</type>
            <size>25469</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBkNDkzMTUzM2EyNDliNjYwNDJiYjkwZDEyNjMyNDM3MWM3MWY0YjAzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFRodSwgMzEgTWF5IDIwMTIgMTY6MzE6MjEgKzA5MDAKU3ViamVjdDogW1BBVENI
XSBBIFJlbmRlckJveCBjYW4gcmVuZGVyIGFuIGltYWdlIGluIHJldGFpbmVkIG1vZGUsIGFuZAog
cmV0YWluZCBtb2RlIHJlbmRlcmluZyBjYW4gbWFrZSBhc3luY3Jvbm91cyBkZWNvZGluZwogcG9z
c2libGUuCgpCYWNrZ3JvdW5kIGltYWdlLCBib2FyZGVyIGltYWdlLCBhbmQgbWFzayBpbWFnZSBv
ZiBhIFJlbmRlckJveCBjYW4gYmUKcmVuZGVyZWQgaW4gcmV0YWluZWQgbW9kZSwgYmVjYXVzZSBh
IFJlbmRlckJveCBpcyBjbGllbnQgb2YgQ2FjaGVkSW1hZ2UuCkEgbWFya2VyIGltYWdlIG9mIGEg
UmVuZGVyTGlzdE1hcmtlciBjYW4gYmUgcmVuZGVyZWQgaW4gcmF0YWluZWQgbW9kZSwgYWxzby4K
LS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgODkgKysrKysrKysrKysrKysrKysrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5l
ZE1vZGVCaXRtYXBJbWFnZS5jcHAgIHwgICAxNSArKysrCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3Mv
UmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuaCAgICB8ICAgIDMgKwogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL0lubGluZUZsb3dCb3guY3BwICAgICAgICAgfCAgICA5ICstCiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCAgICAgICAgICAgICB8ICAgMTMgKy0tCiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwICB8ICAgMjQgKysrLS0t
CiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgICAgICB8ICAg
IDMgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwICAgICAgICAg
IHwgICAgNyArLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oICAgICAg
ICAgICAgfCAgICAyICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVy
LmNwcCAgICAgICB8ICAgIDcgKy0KIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxs
TGF5ZXIuaCAgICAgICAgIHwgICAgNCArLQogMTEgZmlsZXMgY2hhbmdlZCwgMTQ3IGluc2VydGlv
bnMoKyksIDI5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2Nzc2NTZjLi5mZTdmNGY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsOTIgQEAKKzIwMTItMDctMDMgIEh1YW5nIERvbmdzdW5nICA8
bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgUHJlcGFyZSBmb3IgcGFyYWxsZWwg
aW1hZ2UgZGVjb2Rlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkwNDQzCisKKyAgICAgICAgVGhlIGtleSBwb2ludCBvZiB0aGlzIHBhdGNoIGlzIHRv
IGNoYW5nZSBob3cgQml0bWFwSW1hZ2UgdXNlcyBJbWFnZVNvdXJjZS4KKworICAgICAgICBPcmln
aW5hbGx5LCBCaXRtYXBJbWFnZSByZXRyaWV2ZXMgdGhlIGZyYW1lIGRhdGEgZnJvbSBJbWFnZVNv
dXJjZSBieSBjYWxsaW5nIHRoZQorICAgICAgICBmb2xsb3dpbmcgbWV0aG9kczoKKyAgICAgICAg
LSBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBm
bG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgICAgICAtIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBib29sIGZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OworCisgICAgICAgIFVwb24gZWFjaCBtZXRob2QgY2FsbCwgSW1h
Z2VTb3VyY2Ugc3luY2hyb25vdXNseSBkZWNvZGVzIHRoZSBpbWFnZSBhbmQgcmV0dXJucworICAg
ICAgICB0aGUgcmVxdWVzdGVkIGluZm9ybWF0aW9uLiBCZWNhdXNlIGFsbCB0aGUgbWV0aG9kcyBh
Ym92ZSBhcmUgaW5oZXJlbnRseQorICAgICAgICBzeW5jaHJvbm91cywgaXQgaXMgbm90IGVhc3kg
dG8gbWFrZSB0aGVtIHBhcmFsbGVsLgorCisgICAgICAgIFRvIGltcGxlbWVudCBwYXJhbGxlbCBp
bWFnZSBkZWNvZGVycywgdGhlc2UgbWV0aG9kcyBtdXN0IGJlIGFzeW5jaHJvbm91cy4gU28gSQor
ICAgICAgICBtZXJnZWQgYWxsIHRoZXNlIG1ldGhvZHMgaW50byBhIHNpbmdsZSBtZXRob2QsIHJl
cXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90KSwKKyAgICAgICAgd2hpY2ggcmVxdWVzdHMgYWxsIHRo
ZSBmcmFtZSBkYXRhIGF0IG9uY2UuIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBoYXMgbm8gcmV0dXJu
CisgICAgICAgIHZhbHVlLgorCisgICAgICAgIEluc3RlYWQsIEJpdG1hcEltYWdlIG5vdyBpbXBs
ZW1lbnRzIEltYWdlU291cmNlT2JzZXJ2ZXIgYW5kIHBhc3NlcyBpdHNlbGYgdG8KKyAgICAgICAg
SW1hZ2VTb3VyY2UgY29uc3RydWN0b3IuIE9uY2UgaW1hZ2UgZGVjb2RpbmcgaXMgZmluaXNoZWQg
b3IgY2FjaGVkIGltYWdlIGlzCisgICAgICAgIGF2YWlsYWJsZSwgSW1hZ2VTb3VyY2Ugbm90aWZp
ZXMgQml0bWFwSW1hZ2UgdmlhCisgICAgICAgIEltYWdlU291cmNlT2JzZXJ2ZXI6OmRpZFJlY2Vp
dmVJbWFnZUZyYW1lRGF0YShzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJikuCisgICAgICAg
IEltYWdlRnJhbWVEYXRhIGNvbnRhaW5zIGFsbCB0aGUgZnJhbWUgZGF0YSBpbmNsdWRpbmcgZnJh
bWUsIGR1cmF0aW9uLCBpc0FscGhhLAorICAgICAgICBpc0NvbXBsZXRlIGFuZCBvcmllbnRhdGlv
bi4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBu
ZXcgdGVzdHMgLSBleGlzdGluZyBpbWFnZSB0ZXN0cyBjb3ZlciB0aGVzZSBjYXNlcy4KKworICAg
ICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFn
ZTo6Y2FjaGVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVEYXRhOjpzZXRG
cm9tSW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoRnJhbWVEYXRhKToKKyAgICAgICAgKEJpdG1h
cEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1lQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleCk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSW1hZ2VGcmFtZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VGcmFtZURh
dGE6OkltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKEltYWdlU291cmNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChJbWFnZVNvdXJjZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlT2JzZXJ2ZXI6On5JbWFnZVNvdXJjZU9ic2VydmVyKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJp
dG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpJbWFnZVNvdXJjZSk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpyZXF1ZXN0RnJh
bWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0
SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
eC9JbWFnZVd4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFn
ZSk6CisKIDIwMTItMDYtMjcgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFBlcmZvcm1hbmNlOiBPcHRpbWl6ZSBEcm9tYWVvL2RvbS1xdWVyeS5odG1sIGJ5
IGNhY2hpbmcgTm9kZVJhcmVEYXRhIG9uIERvY3VtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5jcHAK
aW5kZXggNzgzNDZiYy4uYTcyYzZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmNwcApAQCAtMjcs
NiArMjcsOCBAQAogI2luY2x1ZGUgIlJldGFpbmVkTW9kZUJpdG1hcEltYWdlLmgiCiAKICNpbmNs
dWRlICJCaXRtYXBJbWFnZS5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUg
IlN0eWxlSW1hZ2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xODIsNCArMTg0LDE3
IEBAIEltYWdlKiB0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSogaW1h
Z2UpCiAgICAgcmV0dXJuIGltYWdlOwogfQogCitib29sIGlzRGVjb2RlZENvbXBsZXRlbHlJZkJp
dG1hcEltYWdlQXNXZWxsQXNJc0xvYWRlZChTdHlsZUltYWdlKiBzdHlsZUltYWdlLCBjb25zdCBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmIChzdHlsZUltYWdlICYmICFzdHlsZUlt
YWdlLT5pc0xvYWRlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3R5bGVJ
bWFnZSAmJiAoc3R5bGVJbWFnZS0+aXNDYWNoZWRJbWFnZSgpIHx8IHN0eWxlSW1hZ2UtPmlzQ2Fj
aGVkSW1hZ2VTZXQoKSkpIHsKKyAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IHN0eWxlSW1h
Z2UtPmltYWdlKGNvbnN0X2Nhc3Q8UmVuZGVyT2JqZWN0Kj4ocmVuZGVyZXIpLCBJbnRTaXplKCkp
OworICAgICAgICBpZiAoaW1hZ2UuZ2V0KCkgJiYgaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSAmJiAh
dG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZShpbWFnZS5nZXQoKSktPmN1cnJlbnRGcmFtZUlzQ29t
cGxldGUoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1JldGFpbmVkTW9kZUJpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZS5oCmluZGV4IDgwOTY1OGYuLjQ1YTIwZWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1JldGFpbmVkTW9kZUJp
dG1hcEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUmV0YWlu
ZWRNb2RlQml0bWFwSW1hZ2UuaApAQCAtMzEsNiArMzEsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBCaXRtYXBJbWFnZTsKK2NsYXNzIFJlbmRlck9iamVjdDsKK2NsYXNzIFN0eWxl
SW1hZ2U7CiAKIGNsYXNzIFJldGFpbmVkTW9kZUJpdG1hcEltYWdlIDogcHVibGljIEltYWdlIHsK
IHB1YmxpYzoKQEAgLTc3LDYgKzc5LDcgQEAgcHJpdmF0ZToKIAogUmV0YWluZWRNb2RlQml0bWFw
SW1hZ2UqIHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2UoSW1hZ2UqKTsKIEltYWdlKiB0b1JldGFp
bmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJsZShJbWFnZSopOworYm9vbCBpc0RlY29kZWRDb21w
bGV0ZWx5SWZCaXRtYXBJbWFnZUFzV2VsbEFzSXNMb2FkZWQoU3R5bGVJbWFnZSosIGNvbnN0IFJl
bmRlck9iamVjdCopOwogCiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93
Qm94LmNwcAppbmRleCBkYzQ1MDAxLi5kMmM2YmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiSW5saW5lRmxvd0JveC5oIgogCisjaW5jbHVkZSAiQml0bWFwSW1hZ2Uu
aCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMTI1MCw4ICsxMjUxLDggQEAgdm9pZCBJbmxp
bmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25z
dCBMYXlvdXRQb2ludCYKICAgICAgICAgICAgIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBib3JkZXJJ
bWFnZSA9IHJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlckltYWdlKCk7CiAgICAgICAgICAgICBT
dHlsZUltYWdlKiBib3JkZXJJbWFnZVNvdXJjZSA9IGJvcmRlckltYWdlLmltYWdlKCk7CiAgICAg
ICAgICAgICBib29sIGhhc0JvcmRlckltYWdlID0gYm9yZGVySW1hZ2VTb3VyY2UgJiYgYm9yZGVy
SW1hZ2VTb3VyY2UtPmNhblJlbmRlcihyZW5kZXJlcigpLCBzdHlsZVRvVXNlLT5lZmZlY3RpdmVa
b29tKCkpOwotICAgICAgICAgICAgaWYgKGhhc0JvcmRlckltYWdlICYmICFib3JkZXJJbWFnZVNv
dXJjZS0+aXNMb2FkZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm47IC8vIERvbid0IHBhaW50
IGFueXRoaW5nIHdoaWxlIHdlIHdhaXQgZm9yIHRoZSBpbWFnZSB0byBsb2FkLgorICAgICAgICAg
ICAgaWYgKGhhc0JvcmRlckltYWdlICYmICFpc0RlY29kZWRDb21wbGV0ZWx5SWZCaXRtYXBJbWFn
ZUFzV2VsbEFzSXNMb2FkZWQoYm9yZGVySW1hZ2VTb3VyY2UsIGJveE1vZGVsT2JqZWN0KCkpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsgLy8gRG9uJ3QgcGFpbnQgYW55dGhpbmcgd2hpbGUgd2Ug
d2FpdCBmb3IgdGhlIGltYWdlIHRvIGRlY29kZSBjb21wbGV0ZWx5LgogCiAgICAgICAgICAgICAv
LyBUaGUgc2ltcGxlIGNhc2UgaXMgd2hlcmUgd2UgZWl0aGVyIGhhdmUgbm8gYm9yZGVyIGltYWdl
IG9yIHdlIGFyZSB0aGUgb25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiAgSW4gdGhvc2UKICAgICAg
ICAgICAgIC8vIGNhc2VzIG9ubHkgYSBzaW5nbGUgY2FsbCB0byBkcmF3IGlzIHJlcXVpcmVkLgpA
QCAtMTMyNSwxMCArMTMyNiwxMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50TWFzayhQYWlu
dEluZm8mIHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2ZmcwogICAgIHBhaW50
RmlsbExheWVycyhwYWludEluZm8sIENvbG9yKCksIHJlbmRlcmVyKCktPnN0eWxlKCktPm1hc2tM
YXllcnMoKSwgcGFpbnRSZWN0LCBjb21wb3NpdGVPcCk7CiAgICAgCiAgICAgYm9vbCBoYXNCb3hJ
bWFnZSA9IG1hc2tCb3hJbWFnZSAmJiBtYXNrQm94SW1hZ2UtPmNhblJlbmRlcihyZW5kZXJlcigp
LCByZW5kZXJlcigpLT5zdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpOwotICAgIGlmICghaGFzQm94
SW1hZ2UgfHwgIW1hc2tCb3hJbWFnZS0+aXNMb2FkZWQoKSkgeworICAgIGlmICghaGFzQm94SW1h
Z2UgfHwgIWlzRGVjb2RlZENvbXBsZXRlbHlJZkJpdG1hcEltYWdlQXNXZWxsQXNJc0xvYWRlZCht
YXNrQm94SW1hZ2UsIGJveE1vZGVsT2JqZWN0KCkpKSB7CiAgICAgICAgIGlmIChwdXNoVHJhbnNw
YXJlbmN5TGF5ZXIpCiAgICAgICAgICAgICBwYWludEluZm8uY29udGV4dC0+ZW5kVHJhbnNwYXJl
bmN5TGF5ZXIoKTsKLSAgICAgICAgcmV0dXJuOyAvLyBEb24ndCBwYWludCBhbnl0aGluZyB3aGls
ZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gbG9hZC4KKyAgICAgICAgcmV0dXJuOyAvLyBEb24n
dCBwYWludCBhbnl0aGluZyB3aGlsZSB3ZSB3YWl0IGZvciB0aGUgaW1hZ2UgdG8gZGVjb2RlIGNv
bXBsZXRlbHkuCiAgICAgfQogCiAgICAgLy8gVGhlIHNpbXBsZSBjYXNlIGlzIHdoZXJlIHdlIGFy
ZSB0aGUgb25seSBib3ggZm9yIHRoaXMgb2JqZWN0LiAgSW4gdGhvc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNTI0MDgyZS4uNGQ4Y2Y4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdl
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJDaHJvbWVDbGllbnQuaCIKQEAgLTc5NSw3ICs3OTYsNyBAQCBCYWNrZ3JvdW5kQmxlZWRB
dm9pZGFuY2UgUmVuZGVyQm94OjpkZXRlcm1pbmVCYWNrZ3JvdW5kQmxlZWRBdm9pZGFuY2UoR3Jh
cGhpY3NDbwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlID0gdGhpcy0+c3R5bGUoKTsK
IAotICAgIGlmICghc3R5bGUtPmhhc0JhY2tncm91bmQoKSB8fCAhc3R5bGUtPmhhc0JvcmRlcigp
IHx8ICFzdHlsZS0+aGFzQm9yZGVyUmFkaXVzKCkgfHwgYm9yZGVySW1hZ2VJc0xvYWRlZEFuZENh
bkJlUmVuZGVyZWQoKSkKKyAgICBpZiAoIXN0eWxlLT5oYXNCYWNrZ3JvdW5kKCkgfHwgIXN0eWxl
LT5oYXNCb3JkZXIoKSB8fCAhc3R5bGUtPmhhc0JvcmRlclJhZGl1cygpIHx8IGJvcmRlckltYWdl
Q2FuQmVSZW5kZXJlZEFuZElzRGVjb2RlZENvbXBsZXRlbHkoKSkKICAgICAgICAgcmV0dXJuIEJh
Y2tncm91bmRCbGVlZE5vbmU7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtID0gY29udGV4dC0+
Z2V0Q1RNKCk7CkBAIC04OTcsMjYgKzg5OCwyNiBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRNYXNr
SW1hZ2VzKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRSZWN0JiBwYQog
ICAgIGJvb2wgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzID0gdmlldygpLT5mcmFtZVZpZXcoKSAm
JiB2aWV3KCktPmZyYW1lVmlldygpLT5wYWludEJlaGF2aW9yKCkgJiBQYWludEJlaGF2aW9yRmxh
dHRlbkNvbXBvc2l0aW5nTGF5ZXJzOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9w
ID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKIAotICAgIGJvb2wgYWxsTWFza0ltYWdlc0xvYWRlZCA9
IHRydWU7CisgICAgYm9vbCBhbGxNYXNrSW1hZ2VzRGVjb2RlZENvbXBsZXRlbHkgPSB0cnVlOwog
ICAgIAogICAgIGlmICghY29tcG9zaXRlZE1hc2sgfHwgZmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJz
KSB7CiAgICAgICAgIHB1c2hUcmFuc3BhcmVuY3lMYXllciA9IHRydWU7CiAgICAgICAgIFN0eWxl
SW1hZ2UqIG1hc2tCb3hJbWFnZSA9IHN0eWxlKCktPm1hc2tCb3hJbWFnZSgpLmltYWdlKCk7CiAg
ICAgICAgIGNvbnN0IEZpbGxMYXllciogbWFza0xheWVycyA9IHN0eWxlKCktPm1hc2tMYXllcnMo
KTsKIAotICAgICAgICAvLyBEb24ndCByZW5kZXIgYSBtYXNrZWQgZWxlbWVudCB1bnRpbCBhbGwg
dGhlIG1hc2sgaW1hZ2VzIGhhdmUgbG9hZGVkLCB0byBwcmV2ZW50IGEgZmxhc2ggb2YgdW5tYXNr
ZWQgY29udGVudC4KKyAgICAgICAgLy8gRG9uJ3QgcmVuZGVyIGEgbWFza2VkIGVsZW1lbnQgdW50
aWwgYWxsIHRoZSBtYXNrIGltYWdlcyBoYXZlIGRlY29kZWQgY29tcGxldGVseSwgdG8gcHJldmVu
dCBhIGZsYXNoIG9mIHVubWFza2VkIGNvbnRlbnQuCiAgICAgICAgIGlmIChtYXNrQm94SW1hZ2Up
Ci0gICAgICAgICAgICBhbGxNYXNrSW1hZ2VzTG9hZGVkICY9IG1hc2tCb3hJbWFnZS0+aXNMb2Fk
ZWQoKTsKKyAgICAgICAgICAgIGFsbE1hc2tJbWFnZXNEZWNvZGVkQ29tcGxldGVseSAmPSBpc0Rl
Y29kZWRDb21wbGV0ZWx5SWZCaXRtYXBJbWFnZUFzV2VsbEFzSXNMb2FkZWQobWFza0JveEltYWdl
LCB0aGlzKTsKIAogICAgICAgICBpZiAobWFza0xheWVycykKLSAgICAgICAgICAgIGFsbE1hc2tJ
bWFnZXNMb2FkZWQgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJlTG9hZGVkKCk7CisgICAgICAgICAg
ICBhbGxNYXNrSW1hZ2VzRGVjb2RlZENvbXBsZXRlbHkgJj0gbWFza0xheWVycy0+aW1hZ2VzQXJl
RGVjb2RlZENvbXBsZXRlbHkodGhpcyk7CiAKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNl
dENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVEZXN0aW5hdGlvbkluKTsKICAgICAgICAgcGFp
bnRJbmZvLmNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CiAgICAgICAgIGNvbXBv
c2l0ZU9wID0gQ29tcG9zaXRlU291cmNlT3ZlcjsKICAgICB9CiAKLSAgICBpZiAoYWxsTWFza0lt
YWdlc0xvYWRlZCkgeworICAgIGlmIChhbGxNYXNrSW1hZ2VzRGVjb2RlZENvbXBsZXRlbHkpIHsK
ICAgICAgICAgcGFpbnRGaWxsTGF5ZXJzKHBhaW50SW5mbywgQ29sb3IoKSwgc3R5bGUoKS0+bWFz
a0xheWVycygpLCBwYWludFJlY3QsIEJhY2tncm91bmRCbGVlZE5vbmUsIGNvbXBvc2l0ZU9wKTsK
ICAgICAgICAgcGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgcGFpbnRSZWN0
LCBzdHlsZSgpLCBzdHlsZSgpLT5tYXNrQm94SW1hZ2UoKSwgY29tcG9zaXRlT3ApOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3Bw
CmluZGV4IGEzNWEyMDYuLmEwNzI5M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAKKyNpbmNsdWRl
ICJCaXRtYXBJbWFnZS5oIgogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKICNpbmNsdWRl
ICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIK
QEAgLTcyNiw2ICs3MjcsNyBAQCB2b2lkIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludEZpbGxM
YXllckV4dGVuZGVkKGNvbnN0IFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjbwogCiAgICAgQ29sb3Ig
YmdDb2xvciA9IGNvbG9yOwogICAgIFN0eWxlSW1hZ2UqIGJnSW1hZ2UgPSBiZ0xheWVyLT5pbWFn
ZSgpOworCiAgICAgYm9vbCBzaG91bGRQYWludEJhY2tncm91bmRJbWFnZSA9IGJnSW1hZ2UgJiYg
YmdJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAg
CiAgICAgYm9vbCBmb3JjZUJhY2tncm91bmRUb1doaXRlID0gZmFsc2U7CkBAIC05MjEsNyArOTIz
LDcgQEAgdm9pZCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZChj
b25zdCBQYWludEluZm8mIHBhaW50SW5mbywgY28KICAgICAgICAgICAgIFJlbmRlck9iamVjdCog
Y2xpZW50Rm9yQmFja2dyb3VuZEltYWdlID0gYmFja2dyb3VuZE9iamVjdCA/IGJhY2tncm91bmRP
YmplY3QgOiB0aGlzOwogICAgICAgICAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IGJnSW1hZ2Ut
PmltYWdlKGNsaWVudEZvckJhY2tncm91bmRJbWFnZSwgZ2VvbWV0cnkudGlsZVNpemUoKSk7CiAg
ICAgICAgICAgICBib29sIHVzZUxvd1F1YWxpdHlTY2FsaW5nID0gc2hvdWxkUGFpbnRBdExvd1F1
YWxpdHkoY29udGV4dCwgaW1hZ2UuZ2V0KCksIGJnTGF5ZXIsIGdlb21ldHJ5LnRpbGVTaXplKCkp
OwotICAgICAgICAgICAgY29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxl
KCktPmNvbG9yU3BhY2UoKSwgZ2VvbWV0cnkuZGVzdFJlY3QoKSwgZ2VvbWV0cnkucmVsYXRpdmVQ
aGFzZSgpLCBnZW9tZXRyeS50aWxlU2l6ZSgpLCAKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdU
aWxlZEltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKGltYWdlLmdldCgp
KSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBnZW9tZXRyeS5kZXN0UmVjdCgpLCBnZW9tZXRyeS5y
ZWxhdGl2ZVBoYXNlKCksIGdlb21ldHJ5LnRpbGVTaXplKCksCiAgICAgICAgICAgICAgICAgY29t
cG9zaXRlT3AsIHVzZUxvd1F1YWxpdHlTY2FsaW5nKTsKICAgICAgICAgfQogICAgIH0KQEAgLTEy
MjYsNyArMTIyOCw3IEBAIGJvb2wgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50TmluZVBpZWNl
SW1hZ2UoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsCiAgICAgaWYgKCFzdHlsZUlt
YWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoIXN0eWxlSW1hZ2UtPmlzTG9h
ZGVkKCkpCisgICAgaWYgKCFpc0RlY29kZWRDb21wbGV0ZWx5SWZCaXRtYXBJbWFnZUFzV2VsbEFz
SXNMb2FkZWQoc3R5bGVJbWFnZSwgdGhpcykpCiAgICAgICAgIHJldHVybiB0cnVlOyAvLyBOZXZl
ciBwYWludCBhIG5pbmUtcGllY2UgaW1hZ2UgaW5jcmVtZW50YWxseSwgYnV0IGRvbid0IHBhaW50
IHRoZSBmYWxsYmFjayBib3JkZXJzIGVpdGhlci4KIAogICAgIGlmICghc3R5bGVJbWFnZS0+Y2Fu
UmVuZGVyKHRoaXMsIHN0eWxlLT5lZmZlY3RpdmVab29tKCkpKQpAQCAtMTMxMCwxOSArMTMxMiwx
OSBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVjZUltYWdlKEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAvLyBUaGUgdG9wIGxlZnQgY29y
bmVyIHJlY3QgaXMgKHR4LCB0eSwgbGVmdFdpZHRoLCB0b3BXaWR0aCkKICAgICAgICAgLy8gVGhl
IHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyBvYnRhaW5lZCBmcm9tIG91ciBz
bGljZSwgYW5kIGlzICgwLCAwLCBsZWZ0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJh
d1RvcCkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC5sb2NhdGlvbigpLCBJbnRTaXpl
KGxlZnRXaWR0aCwgdG9wV2lkdGgpKSwKKyAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJh
d0ltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKGltYWdlLmdldCgpKSwg
Y29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFnZVJlY3QubG9jYXRpb24oKSwgSW50U2l6ZShs
ZWZ0V2lkdGgsIHRvcFdpZHRoKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBMYXlvdXRSZWN0KDAsIDAsIGxlZnRTbGljZSwgdG9wU2xpY2UpLCBvcCk7CiAKICAgICAg
ICAgLy8gVGhlIGJvdHRvbSBsZWZ0IGNvcm5lciByZWN0IGlzICh0eCwgdHkgKyBoIC0gYm90dG9t
V2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVz
ZSBmcm9tIHdpdGhpbiB0aGUgaW1hZ2UgaXMgKDAsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2Us
IGxlZnRTbGljZSwgYm90b21TbGljZSkKICAgICAgICAgaWYgKGRyYXdCb3R0b20pCi0gICAgICAg
ICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwg
SW50UmVjdChib3JkZXJJbWFnZVJlY3QueCgpLCBib3JkZXJJbWFnZVJlY3QubWF4WSgpIC0gYm90
dG9tV2lkdGgsIGxlZnRXaWR0aCwgYm90dG9tV2lkdGgpLAorICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3SW1hZ2UodG9SZXRhaW5lZE1vZGVCaXRtYXBJbWFnZUlmUG9zc2libGUoaW1h
Z2UuZ2V0KCkpLCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC54KCksIGJvcmRl
ckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwgbGVmdFdpZHRoLCBib3R0b21XaWR0aCks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRSZWN0KDAsIGlt
YWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIGxlZnRTbGljZSwgYm90dG9tU2xpY2UpLCBvcCk7CiAK
ICAgICAgICAgLy8gUGFpbnQgdGhlIGxlZnQgZWRnZS4KICAgICAgICAgLy8gSGF2ZSB0byBzY2Fs
ZSBhbmQgdGlsZSBpbnRvIHRoZSBib3JkZXIgcmVjdC4KICAgICAgICAgaWYgKHNvdXJjZUhlaWdo
dCA+IDApCi0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC54KCksIGJvcmRlcklt
YWdlUmVjdC55KCkgKyB0b3BXaWR0aCwgbGVmdFdpZHRoLAorICAgICAgICAgICAgZ3JhcGhpY3ND
b250ZXh0LT5kcmF3VGlsZWRJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3NzaWJs
ZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0LngoKSwg
Ym9yZGVySW1hZ2VSZWN0LnkoKSArIHRvcFdpZHRoLCBsZWZ0V2lkdGgsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uSGVpZ2h0KSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdCgwLCB0b3BTbGlj
ZSwgbGVmdFNsaWNlLCBzb3VyY2VIZWlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBGbG9hdFNpemUobGVmdFNpZGVTY2FsZSwgbGVmdFNpZGVTY2FsZSks
IEltYWdlOjpTdHJldGNoVGlsZSwgKEltYWdlOjpUaWxlUnVsZSl2UnVsZSwgb3ApOwpAQCAtMTMz
MywxOCArMTMzNSwxOCBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpwYWludE5pbmVQaWVj
ZUltYWdlKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogICAgICAgICAvLyBUaGUg
dG9wIHJpZ2h0IGNvcm5lciByZWN0IGlzICh0eCArIHcgLSByaWdodFdpZHRoLCB0eSwgcmlnaHRX
aWR0aCwgdG9wV2lkdGgpCiAgICAgICAgIC8vIFRoZSByZWN0IHRvIHVzZSBmcm9tIHdpdGhpbiB0
aGUgaW1hZ2UgaXMgb2J0YWluZWQgZnJvbSBvdXIgc2xpY2UsIGFuZCBpcyAoaW1hZ2VXaWR0aCAt
IHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKQogICAgICAgICBpZiAoZHJhd1Rv
cCkKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBj
b2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCBi
b3JkZXJJbWFnZVJlY3QueSgpLCByaWdodFdpZHRoLCB0b3BXaWR0aCksCisgICAgICAgICAgICBn
cmFwaGljc0NvbnRleHQtPmRyYXdJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3Nz
aWJsZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0Lm1h
eFgoKSAtIHJpZ2h0V2lkdGgsIGJvcmRlckltYWdlUmVjdC55KCksIHJpZ2h0V2lkdGgsIHRvcFdp
ZHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dFJlY3Qo
aW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIDAsIHJpZ2h0U2xpY2UsIHRvcFNsaWNlKSwgb3ApOwog
CiAgICAgICAgIC8vIFRoZSBib3R0b20gcmlnaHQgY29ybmVyIHJlY3QgaXMgKHR4ICsgdyAtIHJp
Z2h0V2lkdGgsIHR5ICsgaCAtIGJvdHRvbVdpZHRoLCByaWdodFdpZHRoLCBib3R0b21XaWR0aCkK
ICAgICAgICAgLy8gVGhlIHJlY3QgdG8gdXNlIGZyb20gd2l0aGluIHRoZSBpbWFnZSBpcyAoaW1h
Z2VXaWR0aCAtIHJpZ2h0U2xpY2UsIGltYWdlSGVpZ2h0IC0gYm90dG9tU2xpY2UsIHJpZ2h0U2xp
Y2UsIGJvdHRvbVNsaWNlKQogICAgICAgICBpZiAoZHJhd0JvdHRvbSkKLSAgICAgICAgICAgIGdy
YXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0
KGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRoLCBib3JkZXJJbWFnZVJlY3QubWF4
WSgpIC0gYm90dG9tV2lkdGgsIHJpZ2h0V2lkdGgsIGJvdHRvbVdpZHRoKSwKKyAgICAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+ZHJhd0ltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBv
c3NpYmxlKGltYWdlLmdldCgpKSwgY29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFnZVJlY3Qu
bWF4WCgpIC0gcmlnaHRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRo
LCByaWdodFdpZHRoLCBib3R0b21XaWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBMYXlvdXRSZWN0KGltYWdlV2lkdGggLSByaWdodFNsaWNlLCBpbWFnZUhlaWdo
dCAtIGJvdHRvbVNsaWNlLCByaWdodFNsaWNlLCBib3R0b21TbGljZSksIG9wKTsKIAogICAgICAg
ICAvLyBQYWludCB0aGUgcmlnaHQgZWRnZS4KICAgICAgICAgaWYgKHNvdXJjZUhlaWdodCA+IDAp
Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdlLmdldCgp
LCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC5tYXhYKCkgLSByaWdodFdpZHRo
LCBib3JkZXJJbWFnZVJlY3QueSgpICsgdG9wV2lkdGgsIHJpZ2h0V2lkdGgsCisgICAgICAgICAg
ICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1h
Z2VJZlBvc3NpYmxlKGltYWdlLmdldCgpKSwgY29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFn
ZVJlY3QubWF4WCgpIC0gcmlnaHRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0LnkoKSArIHRvcFdpZHRo
LCByaWdodFdpZHRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXN0aW5hdGlvbkhlaWdodCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEludFJlY3QoaW1hZ2VXaWR0aCAtIHJpZ2h0U2xpY2UsIHRvcFNsaWNlLCByaWdo
dFNsaWNlLCBzb3VyY2VIZWlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBGbG9hdFNpemUocmlnaHRTaWRlU2NhbGUsIHJpZ2h0U2lkZVNjYWxlKSwKQEAg
LTEzNTMsMTMgKzEzNTUsMTMgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5l
UGllY2VJbWFnZShHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKIAogICAgIC8vIFBh
aW50IHRoZSB0b3AgZWRnZS4KICAgICBpZiAoZHJhd1RvcCAmJiBzb3VyY2VXaWR0aCA+IDApCi0g
ICAgICAgIGdyYXBoaWNzQ29udGV4dC0+ZHJhd1RpbGVkSW1hZ2UoaW1hZ2UuZ2V0KCksIGNvbG9y
U3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0LngoKSArIGxlZnRXaWR0aCwgYm9yZGVySW1h
Z2VSZWN0LnkoKSwgZGVzdGluYXRpb25XaWR0aCwgdG9wV2lkdGgpLAorICAgICAgICBncmFwaGlj
c0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3Np
YmxlKGltYWdlLmdldCgpKSwgY29sb3JTcGFjZSwgSW50UmVjdChib3JkZXJJbWFnZVJlY3QueCgp
ICsgbGVmdFdpZHRoLCBib3JkZXJJbWFnZVJlY3QueSgpLCBkZXN0aW5hdGlvbldpZHRoLCB0b3BX
aWR0aCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50UmVjdChs
ZWZ0U2xpY2UsIDAsIHNvdXJjZVdpZHRoLCB0b3BTbGljZSksCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmxvYXRTaXplKHRvcFNpZGVTY2FsZSwgdG9wU2lkZVNjYWxl
KSwgKEltYWdlOjpUaWxlUnVsZSloUnVsZSwgSW1hZ2U6OlN0cmV0Y2hUaWxlLCBvcCk7CiAKICAg
ICAvLyBQYWludCB0aGUgYm90dG9tIGVkZ2UuCiAgICAgaWYgKGRyYXdCb3R0b20gJiYgc291cmNl
V2lkdGggPiAwKQotICAgICAgICBncmFwaGljc0NvbnRleHQtPmRyYXdUaWxlZEltYWdlKGltYWdl
LmdldCgpLCBjb2xvclNwYWNlLCBJbnRSZWN0KGJvcmRlckltYWdlUmVjdC54KCkgKyBsZWZ0V2lk
dGgsIGJvcmRlckltYWdlUmVjdC5tYXhZKCkgLSBib3R0b21XaWR0aCwKKyAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcEltYWdlSWZQb3Nz
aWJsZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsIEludFJlY3QoYm9yZGVySW1hZ2VSZWN0Lngo
KSArIGxlZnRXaWR0aCwgYm9yZGVySW1hZ2VSZWN0Lm1heFkoKSAtIGJvdHRvbVdpZHRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uV2lkdGgsIGJv
dHRvbVdpZHRoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRS
ZWN0KGxlZnRTbGljZSwgaW1hZ2VIZWlnaHQgLSBib3R0b21TbGljZSwgc291cmNlV2lkdGgsIGJv
dHRvbVNsaWNlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9h
dFNpemUoYm90dG9tU2lkZVNjYWxlLCBib3R0b21TaWRlU2NhbGUpLApAQCAtMTM4Nyw3ICsxMzg5
LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFpbnROaW5lUGllY2VJbWFnZShHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwKICAgICAgICAgaWYgKHZSdWxlID09IFN0cmV0
Y2hJbWFnZVJ1bGUpCiAgICAgICAgICAgICBtaWRkbGVTY2FsZUZhY3Rvci5zZXRIZWlnaHQoZGVz
dGluYXRpb25IZWlnaHQgLyBzb3VyY2VIZWlnaHQpOwogICAgICAgICAKLSAgICAgICAgZ3JhcGhp
Y3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZShpbWFnZS5nZXQoKSwgY29sb3JTcGFjZSwKKyAgICAg
ICAgZ3JhcGhpY3NDb250ZXh0LT5kcmF3VGlsZWRJbWFnZSh0b1JldGFpbmVkTW9kZUJpdG1hcElt
YWdlSWZQb3NzaWJsZShpbWFnZS5nZXQoKSksIGNvbG9yU3BhY2UsCiAgICAgICAgICAgICBJbnRS
ZWN0KGJvcmRlckltYWdlUmVjdC54KCkgKyBsZWZ0V2lkdGgsIGJvcmRlckltYWdlUmVjdC55KCkg
KyB0b3BXaWR0aCwgZGVzdGluYXRpb25XaWR0aCwgZGVzdGluYXRpb25IZWlnaHQpLAogICAgICAg
ICAgICAgSW50UmVjdChsZWZ0U2xpY2UsIHRvcFNsaWNlLCBzb3VyY2VXaWR0aCwgc291cmNlSGVp
Z2h0KSwKICAgICAgICAgICAgIG1pZGRsZVNjYWxlRmFjdG9yLCAoSW1hZ2U6OlRpbGVSdWxlKWhS
dWxlLCAoSW1hZ2U6OlRpbGVSdWxlKXZSdWxlLCBvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGlzdE1hcmtlci5jcHAKaW5kZXggMGQyZjQ4ZC4uMTg5OWZhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpc3RNYXJrZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0TWFya2VyLmNwcApAQCAtMjUsNiAr
MjUsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlckxpc3RNYXJrZXIu
aCIKIAorI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgpAQCAt
MTEzMCw3ICsxMTMxLDcgQEAgdm9pZCBSZW5kZXJMaXN0TWFya2VyOjpwYWludChQYWludEluZm8m
IHBhaW50SW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2UKICAgICAgICAgaWYgKHN0
eWxlKCktPmhpZ2hsaWdodCgpICE9IG51bGxBdG9tICYmICFwYWludEluZm8uY29udGV4dC0+cGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICAgICAgcGFpbnRDdXN0b21IaWdobGlnaHQocGFpbnRP
ZmZzZXQsIHN0eWxlKCktPmhpZ2hsaWdodCgpLCB0cnVlKTsKICNlbmRpZgotICAgICAgICBjb250
ZXh0LT5kcmF3SW1hZ2UobV9pbWFnZS0+aW1hZ2UodGhpcywgbWFya2VyLnNpemUoKSkuZ2V0KCks
IHN0eWxlKCktPmNvbG9yU3BhY2UoKSwgbWFya2VyKTsKKyAgICAgICAgY29udGV4dC0+ZHJhd0lt
YWdlKHRvUmV0YWluZWRNb2RlQml0bWFwSW1hZ2VJZlBvc3NpYmxlKG1faW1hZ2UtPmltYWdlKHRo
aXMsIG1hcmtlci5zaXplKCkpLmdldCgpKSwgc3R5bGUoKS0+Y29sb3JTcGFjZSgpLCBtYXJrZXIp
OwogICAgICAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBTZWxlY3Rpb25Ob25lKSB7CiAgICAg
ICAgICAgICBMYXlvdXRSZWN0IHNlbFJlY3QgPSBsb2NhbFNlbGVjdGlvblJlY3QoKTsKICAgICAg
ICAgICAgIHNlbFJlY3QubW92ZUJ5KGJveE9yaWdpbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGZhMmViNDUuLjYzODZiN2YgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisjaW5jbHVk
ZSAiQml0bWFwSW1hZ2UuaCIKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNsdWRlICJDb250ZW50
RGF0YS5oIgogI2luY2x1ZGUgIkN1cnNvckxpc3QuaCIKQEAgLTc5OCwxMiArNzk5LDEyIEBAIHN0
YXRpYyBib29sIG11c3RSZXBhaW50RmlsbExheWVycyhjb25zdCBSZW5kZXJPYmplY3QqIHJlbmRl
cmVyLCBjb25zdCBGaWxsTGF5ZXIqCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIFJlbmRl
ck9iamVjdDo6Ym9yZGVySW1hZ2VJc0xvYWRlZEFuZENhbkJlUmVuZGVyZWQoKSBjb25zdAorYm9v
bCBSZW5kZXJPYmplY3Q6OmJvcmRlckltYWdlQ2FuQmVSZW5kZXJlZEFuZElzRGVjb2RlZENvbXBs
ZXRlbHkoKSBjb25zdAogewogICAgIEFTU0VSVChzdHlsZSgpLT5oYXNCb3JkZXIoKSk7CiAKICAg
ICBTdHlsZUltYWdlKiBib3JkZXJJbWFnZSA9IHN0eWxlKCktPmJvcmRlckltYWdlKCkuaW1hZ2Uo
KTsKLSAgICByZXR1cm4gYm9yZGVySW1hZ2UgJiYgYm9yZGVySW1hZ2UtPmNhblJlbmRlcih0aGlz
LCBzdHlsZSgpLT5lZmZlY3RpdmVab29tKCkpICYmIGJvcmRlckltYWdlLT5pc0xvYWRlZCgpOwor
ICAgIHJldHVybiBib3JkZXJJbWFnZSAmJiBib3JkZXJJbWFnZS0+Y2FuUmVuZGVyKHRoaXMsIHN0
eWxlKCktPmVmZmVjdGl2ZVpvb20oKSkgJiYgaXNEZWNvZGVkQ29tcGxldGVseUlmQml0bWFwSW1h
Z2VBc1dlbGxBc0lzTG9hZGVkKGJvcmRlckltYWdlLCB0aGlzKTsKIH0KIAogYm9vbCBSZW5kZXJP
YmplY3Q6Om11c3RSZXBhaW50QmFja2dyb3VuZE9yQm9yZGVyKCkgY29uc3QKQEAgLTgxOSw3ICs4
MjAsNyBAQCBib29sIFJlbmRlck9iamVjdDo6bXVzdFJlcGFpbnRCYWNrZ3JvdW5kT3JCb3JkZXIo
KSBjb25zdAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgCiAgICAgLy8gT3VyIGZpbGwgbGF5
ZXJzIGFyZSBvay4gIExldCdzIGNoZWNrIGJvcmRlci4KLSAgICBpZiAoc3R5bGUoKS0+aGFzQm9y
ZGVyKCkgJiYgYm9yZGVySW1hZ2VJc0xvYWRlZEFuZENhbkJlUmVuZGVyZWQoKSkKKyAgICBpZiAo
c3R5bGUoKS0+aGFzQm9yZGVyKCkgJiYgYm9yZGVySW1hZ2VDYW5CZVJlbmRlcmVkQW5kSXNEZWNv
ZGVkQ29tcGxldGVseSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBmYWxz
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCAzZjAxZTkwLi5m
MWZkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC01MTQs
NyArNTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGF5ZXIoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5oYXNMYXllcigpOyB9CiAgICAgCiAgICAgYm9vbCBoYXNCb3hEZWNvcmF0aW9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLnBhaW50QmFja2dyb3VuZCgpOyB9Ci0gICAg
Ym9vbCBib3JkZXJJbWFnZUlzTG9hZGVkQW5kQ2FuQmVSZW5kZXJlZCgpIGNvbnN0OworICAgIGJv
b2wgYm9yZGVySW1hZ2VDYW5CZVJlbmRlcmVkQW5kSXNEZWNvZGVkQ29tcGxldGVseSgpIGNvbnN0
OwogICAgIGJvb2wgbXVzdFJlcGFpbnRCYWNrZ3JvdW5kT3JCb3JkZXIoKSBjb25zdDsKICAgICBi
b29sIGhhc0JhY2tncm91bmQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5oYXNCYWNrZ3JvdW5k
KCk7IH0KICAgICBib29sIG5lZWRzTGF5b3V0KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKaW5kZXggMTk1YTA1Yy4uNTY5NTMxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5jcHAKQEAgLTIyLDYgKzIy
LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGaWxsTGF5ZXIuaCIKIAorI2lu
Y2x1ZGUgIkJpdG1hcEltYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IFNhbWVTaXplQXNGaWxsTGF5ZXIgewpAQCAtMjY5LDEx
ICsyNzIsMTEgQEAgYm9vbCBGaWxsTGF5ZXI6OmNvbnRhaW5zSW1hZ2UoU3R5bGVJbWFnZSogcykg
Y29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgRmlsbExheWVyOjppbWFnZXNBcmVM
b2FkZWQoKSBjb25zdAorYm9vbCBGaWxsTGF5ZXI6OmltYWdlc0FyZURlY29kZWRDb21wbGV0ZWx5
KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIGNvbnN0CiB7CiAgICAgY29uc3QgRmlsbExheWVyKiBj
dXJyOwogICAgIGZvciAoY3VyciA9IHRoaXM7IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0KCkpIHsK
LSAgICAgICAgaWYgKGN1cnItPm1faW1hZ2UgJiYgIWN1cnItPm1faW1hZ2UtPmlzTG9hZGVkKCkp
CisgICAgICAgIGlmIChjdXJyLT5tX2ltYWdlICYmICFpc0RlY29kZWRDb21wbGV0ZWx5SWZCaXRt
YXBJbWFnZUFzV2VsbEFzSXNMb2FkZWQoY3Vyci0+bV9pbWFnZS5nZXQoKSwgcmVuZGVyZXIpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5oCmluZGV4IDdmMWNlYjEuLmViN2JlZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgKQEAgLTM0LDYgKzM0LDggQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBSZW5kZXJPYmplY3Q7CisKIHN0cnVjdCBGaWxs
U2l6ZSB7CiAgICAgRmlsbFNpemUoKQogICAgICAgICA6IHR5cGUoU2l6ZUxlbmd0aCkKQEAgLTEy
OCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgYm9vbCBjb250YWluc0ltYWdlKFN0
eWxlSW1hZ2UqKSBjb25zdDsKLSAgICBib29sIGltYWdlc0FyZUxvYWRlZCgpIGNvbnN0OworICAg
IGJvb2wgaW1hZ2VzQXJlRGVjb2RlZENvbXBsZXRlbHkoUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAK
ICAgICBib29sIGhhc0ltYWdlKCkgY29uc3QKICAgICB7Ci0tIAoxLjcuOS41Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150576</attachid>
            <date>2012-07-03 03:56:14 -0700</date>
            <delta_ts>2012-07-03 04:50:13 -0700</delta_ts>
            <desc>patch v.4</desc>
            <filename>0001-Prepare-for-parallel-image-decoder.patch</filename>
            <type>text/plain</type>
            <size>38003</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBlYzcxMTg3ODc5MjI2Mjc1YzZjNWYxODM4NjAwMjQzOGU4MTgyYjgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgOCBNYXkgMjAxMiAxMzoyMzozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0NDMKClRoZSBrZXkgcG9pbnQgb2YgdGhpcyBwYXRjaCBp
cyB0byBjaGFuZ2UgaG93IEJpdG1hcEltYWdlIHVzZXMgSW1hZ2VTb3VyY2UuCgpPcmlnaW5hbGx5
LCBCaXRtYXBJbWFnZSByZXRyaWV2ZXMgdGhlIGZyYW1lIGRhdGEgZnJvbSBJbWFnZVNvdXJjZSBi
eSBjYWxsaW5nIHRoZQpmb2xsb3dpbmcgbWV0aG9kczoKLSBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUF0SW5kZXgoc2l6ZV90KTsKLSBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
OwotIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsKLSBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KTsKLSBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OwoKVXBvbiBlYWNoIG1ldGhvZCBjYWxsLCBJbWFnZVNvdXJjZSBzeW5j
aHJvbm91c2x5IGRlY29kZXMgdGhlIGltYWdlIGFuZCByZXR1cm5zCnRoZSByZXF1ZXN0ZWQgaW5m
b3JtYXRpb24uIEJlY2F1c2UgYWxsIHRoZSBtZXRob2RzIGFib3ZlIGFyZSBpbmhlcmVudGx5CnN5
bmNocm9ub3VzLCBpdCBpcyBub3QgZWFzeSB0byBtYWtlIHRoZW0gcGFyYWxsZWwuCgpUbyBpbXBs
ZW1lbnQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIHRoZXNlIG1ldGhvZHMgbXVzdCBiZSBhc3lu
Y2hyb25vdXMuIFNvIEkKbWVyZ2VkIGFsbCB0aGVzZSBtZXRob2RzIGludG8gYSBzaW5nbGUgbWV0
aG9kLCByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCksCndoaWNoIHJlcXVlc3RzIGFsbCB0aGUg
ZnJhbWUgZGF0YSBhdCBvbmNlLiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaGFzIG5vIHJldHVybgp2
YWx1ZS4KCkluc3RlYWQsIEJpdG1hcEltYWdlIG5vdyBpbXBsZW1lbnRzIEltYWdlU291cmNlT2Jz
ZXJ2ZXIgYW5kIHBhc3NlcyBpdHNlbGYgdG8KSW1hZ2VTb3VyY2UgY29uc3RydWN0b3IuIE9uY2Ug
aW1hZ2UgZGVjb2RpbmcgaXMgZmluaXNoZWQgb3IgY2FjaGVkIGltYWdlIGlzCmF2YWlsYWJsZSwg
SW1hZ2VTb3VyY2Ugbm90aWZpZXMgQml0bWFwSW1hZ2UgdmlhCkltYWdlU291cmNlT2JzZXJ2ZXI6
OmRpZFJlY2VpdmVJbWFnZUZyYW1lRGF0YShzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiku
CkltYWdlRnJhbWVEYXRhIGNvbnRhaW5zIGFsbCB0aGUgZnJhbWUgZGF0YSBpbmNsdWRpbmcgZnJh
bWUsIGR1cmF0aW9uLCBpc0FscGhhLAppc0NvbXBsZXRlIGFuZCBvcmllbnRhdGlvbi4KLS0tCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODkg
KysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAgIDQgKwogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwICAgfCAgIDY3ICsrKysrKysrLS0tLS0t
LQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgICAgfCAg
IDE3ICsrKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCAgIHwgICA2OCArKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmggICAgIHwgICA1NyArKysrKysrKysrKy0tCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oICAgICAgICB8ICAgNDQgKysrKysrKysrKwog
Li4uL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwICAgfCAgICAx
ICsKIC4uLi9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCAgICAgIHwg
ICAgNyArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
ICAgfCAgICAzICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNH
LmNwcCAgICB8ICAgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAgfCAgIDM4ICsrKysrKystLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwICAgIHwgICAgMSArCiAuLi4vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHQzRFNraWEuY3BwICAgICAgICB8ICAgIDkgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwICAgIHwgICAgMSArCiAyMCBmaWxlcyBj
aGFuZ2VkLCAzMzYgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZl
ci5oCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDY3NzY1NmMuLmZlN2Y0ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw5MiBAQAorMjAxMi0wNy0wMyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAw
Lm5ldD4KKworICAgICAgICBQcmVwYXJlIGZvciBwYXJhbGxlbCBpbWFnZSBkZWNvZGVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0NDMKKworICAg
ICAgICBUaGUga2V5IHBvaW50IG9mIHRoaXMgcGF0Y2ggaXMgdG8gY2hhbmdlIGhvdyBCaXRtYXBJ
bWFnZSB1c2VzIEltYWdlU291cmNlLgorCisgICAgICAgIE9yaWdpbmFsbHksIEJpdG1hcEltYWdl
IHJldHJpZXZlcyB0aGUgZnJhbWUgZGF0YSBmcm9tIEltYWdlU291cmNlIGJ5IGNhbGxpbmcgdGhl
CisgICAgICAgIGZvbGxvd2luZyBtZXRob2RzOgorICAgICAgICAtIE5hdGl2ZUltYWdlUHRyIGNy
ZWF0ZUZyYW1lQXRJbmRleChzaXplX3QpOworICAgICAgICAtIGZsb2F0IGZyYW1lRHVyYXRpb25B
dEluZGV4KHNpemVfdCk7CisgICAgICAgIC0gYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpOworICAgICAgICAtIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOworICAg
ICAgICAtIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7
CisKKyAgICAgICAgVXBvbiBlYWNoIG1ldGhvZCBjYWxsLCBJbWFnZVNvdXJjZSBzeW5jaHJvbm91
c2x5IGRlY29kZXMgdGhlIGltYWdlIGFuZCByZXR1cm5zCisgICAgICAgIHRoZSByZXF1ZXN0ZWQg
aW5mb3JtYXRpb24uIEJlY2F1c2UgYWxsIHRoZSBtZXRob2RzIGFib3ZlIGFyZSBpbmhlcmVudGx5
CisgICAgICAgIHN5bmNocm9ub3VzLCBpdCBpcyBub3QgZWFzeSB0byBtYWtlIHRoZW0gcGFyYWxs
ZWwuCisKKyAgICAgICAgVG8gaW1wbGVtZW50IHBhcmFsbGVsIGltYWdlIGRlY29kZXJzLCB0aGVz
ZSBtZXRob2RzIG11c3QgYmUgYXN5bmNocm9ub3VzLiBTbyBJCisgICAgICAgIG1lcmdlZCBhbGwg
dGhlc2UgbWV0aG9kcyBpbnRvIGEgc2luZ2xlIG1ldGhvZCwgcmVxdWVzdEZyYW1lQXRJbmRleChz
aXplX3QpLAorICAgICAgICB3aGljaCByZXF1ZXN0cyBhbGwgdGhlIGZyYW1lIGRhdGEgYXQgb25j
ZS4gTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGhhcyBubyByZXR1cm4KKyAgICAgICAgdmFsdWUuCisK
KyAgICAgICAgSW5zdGVhZCwgQml0bWFwSW1hZ2Ugbm93IGltcGxlbWVudHMgSW1hZ2VTb3VyY2VP
YnNlcnZlciBhbmQgcGFzc2VzIGl0c2VsZiB0bworICAgICAgICBJbWFnZVNvdXJjZSBjb25zdHJ1
Y3Rvci4gT25jZSBpbWFnZSBkZWNvZGluZyBpcyBmaW5pc2hlZCBvciBjYWNoZWQgaW1hZ2UgaXMK
KyAgICAgICAgYXZhaWxhYmxlLCBJbWFnZVNvdXJjZSBub3RpZmllcyBCaXRtYXBJbWFnZSB2aWEK
KyAgICAgICAgSW1hZ2VTb3VyY2VPYnNlcnZlcjo6ZGlkUmVjZWl2ZUltYWdlRnJhbWVEYXRhKHNp
emVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKS4KKyAgICAgICAgSW1hZ2VGcmFtZURhdGEgY29u
dGFpbnMgYWxsIHRoZSBmcmFtZSBkYXRhIGluY2x1ZGluZyBmcmFtZSwgZHVyYXRpb24sIGlzQWxw
aGEsCisgICAgICAgIGlzQ29tcGxldGUgYW5kIG9yaWVudGF0aW9uLgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAtIGV4aXN0aW5n
IGltYWdlIHRlc3RzIGNvdmVyIHRoZXNlIGNhc2VzLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
bGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvQml0bWFwSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1h
cEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OmRpZFJlY2Vp
dmVGcmFtZUF0SW5kZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZURhdGE6OnNldEZyb21JbWFnZUZyYW1lRGF0YSk6
CisgICAgICAgIChGcmFtZURhdGEpOgorICAgICAgICAoQml0bWFwSW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpJbWFnZVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlU291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlU291cmNlOjpjcmVhdGVGcmFtZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VTb3VyY2U6OmZyYW1lRHVyYXRpb25BdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VT
b3VyY2U6OmZyYW1lSGFzQWxwaGFBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlU291
cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFnZUZyYW1l
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lRGF0YTo6SW1hZ2VGcmFtZURhdGEp
OgorICAgICAgICAoSW1hZ2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlT2JzZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KEltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2VPYnNl
cnZlcjo6fkltYWdlU291cmNlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1h
Z2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHQzRENhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDNEOjpnZXRJbWFnZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6
OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0
M0RTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFn
ZURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKwogMjAxMi0wNi0yNyAg
S2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUGVyZm9ybWFu
Y2U6IE9wdGltaXplIERyb21hZW8vZG9tLXF1ZXJ5Lmh0bWwgYnkgY2FjaGluZyBOb2RlUmFyZURh
dGEgb24gRG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDM1ZWMyZWMu
LmRiOTNiNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0K
KysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzM1Myw2ICszMzUz
LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZU9yaWVudGF0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2VPYnNlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2gu
aCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggN2I5NmI3Ni4uOWU3OWVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMjkzLDYgKzIy
OTMsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9yaWVudGF0aW9uLmggXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlU291cmNlLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
T2JzZXJ2ZXIuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0lu
dFJlY3QuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMTA1NGUwNy4uOWE1ZTQwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzg1LDYgKzM4NSw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VPYnNlcnZlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZU9yaWVudGF0aW9uLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UG9pbnRIYXNoLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL0ludFJlY3QuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGQxMmRiNTYuLjMzMWI3OTYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTMxMCw2ICsyOTMx
MCwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgorCQkJCQk+CisJ
CQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cZ3Jh
cGhpY3NcSW50UG9pbnQuaCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyZGQzNThjLi5lYzUw
NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC00NzkwLDYgKzQ3OTAsNyBAQAogCQlCMjc1MzU2RjBCMDUzODE0MDAyQ0U2NEYg
LyogSW1hZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjI3NTM1NDEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmNwcCAqLzsgfTsKIAkJQjI3NTM1
NzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjc1MzU3
MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFn
ZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUIyNzUzNTcxMEIwNTM4MTQwMDJDRTY0RSAvKiBJbWFnZVNvdXJjZU9ic2VydmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MzBCMDUz
ODE0MDAyQ0U2NEUgLyogSW1hZ2VTb3VyY2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyNzUzNTcyMEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRQb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQjI3NTM1NDQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NzMwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFJlY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQjI3NTM1NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuY3BwICovOyB9Owog
CQlCMjc1MzU3NDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDYwQjA1MzgxNDAwMkNFNjRGIC8q
IEludFJlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTE5NTcsNiArMTE5NTgsNyBAQAogCQlCMjc1MzU0MTBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NDIwQjA1MzgxNDAwMkNFNjRG
IC8qIEltYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0MzBCMDUzODE0MDAyQ0U2NEYgLyog
SW1hZ2VTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlU291
cmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIyNzUzNTQzMEIwNTM4MTQwMDJD
RTY0RSAvKiBJbWFnZVNvdXJjZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVNvdXJjZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIyNzUzNTQ0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRQb2ludC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW50UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjI3NTM1NDUwQjA1MzgxNDAwMkNFNjRGIC8qIEludFJlY3QuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEludFJlY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMjc1MzU0NjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50UmVjdC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTk2NDUsNiArMTk2NDcsNyBAQAogCQkJCUE4NzQ4RDY2MTJDQzM3NjMw
MDFGQkE0MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggKi8sCiAJCQkJNDkyOTFFNEExMzQxNzJDODAw
RTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovLAogCQkJCUIyNzUzNTQzMEIwNTM4MTQw
MDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5oICovLAorCQkJCUIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0
RSAvKiBJbWFnZVNvdXJjZU9ic2VydmVyLmggKi8sCiAJCQkJQjI3NTM1NDQwQjA1MzgxNDAwMkNF
NjRGIC8qIEludFBvaW50LmggKi8sCiAJCQkJRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIwIC8qIElu
dFBvaW50SGFzaC5oICovLAogCQkJCUIyNzUzNTQ1MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0
LmNwcCAqLywKQEAgLTIzMzYyLDYgKzIzMzY1LDcgQEAKIAkJCQkyRDVBNTkzMTE1MjUyNUQwMDAz
NkVFNTEgLyogSW1hZ2VPcmllbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDkyOTFFNEIx
MzQxNzJDODAwRTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQjI3NTM1NzEwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEUgLyogSW1hZ2VTb3VyY2VPYnNlcnZlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNEIzNDgwOTQwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291
cmNlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxNkZFMTE4MEU2RTFEQTcwMEJGNjA4OCAvKiBJ
bXBsaWNpdEFuaW1hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREIyM0MyQ0MwQTUwOEQyOTAw
MjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAppbmRleCA4YmM5
NzIyLi4zZWI5NDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9CaXRtYXBJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Qml0bWFwSW1hZ2UuY3BwCkBAIC00NSw2ICs0NSw3IEBAIHN0YXRpYyBpbnQgZnJhbWVCeXRlcyhj
b25zdCBJbnRTaXplJiBmcmFtZVNpemUpCiAKIEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9zb3Vy
Y2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQogICAg
ICwgbV9mcmFtZVRpbWVyKDApCkBAIC0xMjYsNDAgKzEyNyw2IEBAIHZvaWQgQml0bWFwSW1hZ2U6
OmRlc3Ryb3lNZXRhZGF0YUFuZE5vdGlmeShpbnQgZnJhbWVzQ2xlYXJlZCkKICAgICAgICAgaW1h
Z2VPYnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRlcyk7CiB9CiAK
LXZvaWQgQml0bWFwSW1hZ2U6OmNhY2hlRnJhbWUoc2l6ZV90IGluZGV4KQotewotICAgIHNpemVf
dCBudW1GcmFtZXMgPSBmcmFtZUNvdW50KCk7Ci0gICAgQVNTRVJUKG1fZGVjb2RlZFNpemUgPT0g
MCB8fCBudW1GcmFtZXMgPiAxKTsKLSAgICAKLSAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVt
RnJhbWVzKQotICAgICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7Ci0KLSAgICBtX2ZyYW1l
c1tpbmRleF0ubV9mcmFtZSA9IG1fc291cmNlLmNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7Ci0g
ICAgaWYgKG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQotICAgICAg
ICBjaGVja0ZvclNvbGlkQ29sb3IoKTsKLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX29yaWVudGF0
aW9uID0gbV9zb3VyY2Uub3JpZW50YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tp
bmRleF0ubV9oYXZlTWV0YWRhdGEgPSB0cnVlOwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2lzQ29t
cGxldGUgPSBtX3NvdXJjZS5mcmFtZUlzQ29tcGxldGVBdEluZGV4KGluZGV4KTsKLSAgICBpZiAo
cmVwZXRpdGlvbkNvdW50KGZhbHNlKSAhPSBjQW5pbWF0aW9uTm9uZSkKLSAgICAgICAgbV9mcmFt
ZXNbaW5kZXhdLm1fZHVyYXRpb24gPSBtX3NvdXJjZS5mcmFtZUR1cmF0aW9uQXRJbmRleChpbmRl
eCk7Ci0gICAgbV9mcmFtZXNbaW5kZXhdLm1faGFzQWxwaGEgPSBtX3NvdXJjZS5mcmFtZUhhc0Fs
cGhhQXRJbmRleChpbmRleCk7Ci0KLSAgICBjb25zdCBJbnRTaXplIGZyYW1lU2l6ZShpbmRleCA/
IG1fc291cmNlLmZyYW1lU2l6ZUF0SW5kZXgoaW5kZXgpIDogbV9zaXplKTsKLSAgICBpZiAoZnJh
bWVTaXplICE9IG1fc2l6ZSkKLSAgICAgICAgbV9oYXNVbmlmb3JtRnJhbWVTaXplID0gZmFsc2U7
Ci0gICAgaWYgKG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKSB7Ci0gICAgICAgIGludCBkZWx0YUJ5
dGVzID0gZnJhbWVCeXRlcyhmcmFtZVNpemUpOwotICAgICAgICBtX2RlY29kZWRTaXplICs9IGRl
bHRhQnl0ZXM7Ci0gICAgICAgIC8vIFRoZSBmdWxseS1kZWNvZGVkIGZyYW1lIHdpbGwgc3Vic3Vt
ZSB0aGUgcGFydGlhbGx5IGRlY29kZWQgZGF0YSB1c2VkCi0gICAgICAgIC8vIHRvIGRldGVybWlu
ZSBpbWFnZSBwcm9wZXJ0aWVzLgotICAgICAgICBkZWx0YUJ5dGVzIC09IG1fZGVjb2RlZFByb3Bl
cnRpZXNTaXplOwotICAgICAgICBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZSA9IDA7Ci0gICAgICAg
IGlmIChpbWFnZU9ic2VydmVyKCkpCi0gICAgICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29k
ZWRTaXplQ2hhbmdlZCh0aGlzLCBkZWx0YUJ5dGVzKTsKLSAgICB9Ci19Ci0KIHZvaWQgQml0bWFw
SW1hZ2U6OmRpZERlY29kZVByb3BlcnRpZXMoKSBjb25zdAogewogICAgIGlmIChtX2RlY29kZWRT
aXplKQpAQCAtMjkxLDYgKzI1OCwzOCBAQCBib29sIEJpdG1hcEltYWdlOjplbnN1cmVGcmFtZUlz
Q2FjaGVkKHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBCaXRtYXBJ
bWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IG51bUZyYW1lcyA9
IGZyYW1lQ291bnQoKTsKKyAgICBpZiAobV9mcmFtZXMuc2l6ZSgpIDwgbnVtRnJhbWVzKQorICAg
ICAgICBtX2ZyYW1lcy5ncm93KG51bUZyYW1lcyk7CisKKyAgICBtX3NvdXJjZS5yZXF1ZXN0RnJh
bWVBdEluZGV4KGluZGV4KTsKK30KKwordm9pZCBCaXRtYXBJbWFnZTo6ZGlkUmVjZWl2ZUZyYW1l
QXRJbmRleChzaXplX3QgaW5kZXgsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiBpbWFnZUZyYW1lRGF0
YSkKK3sKKyAgICBtX2ZyYW1lc1tpbmRleF0uc2V0RnJvbUltYWdlRnJhbWVEYXRhKGltYWdlRnJh
bWVEYXRhKTsKKworICAgIHNpemVfdCBudW1GcmFtZXMgPSBmcmFtZUNvdW50KCk7CisgICAgaWYg
KG51bUZyYW1lcyA9PSAxICYmIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lKQorICAgICAgICBjaGVj
a0ZvclNvbGlkQ29sb3IoKTsKKworICAgIGNvbnN0IEludFNpemUgZnJhbWVTaXplKGluZGV4ID8g
bV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleChpbmRleCkgOiBtX3NpemUpOworICAgIGlmIChmcmFt
ZVNpemUgIT0gbV9zaXplKQorICAgICAgICBtX2hhc1VuaWZvcm1GcmFtZVNpemUgPSBmYWxzZTsK
KyAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKKyAgICAgICAgaW50IGRlbHRhQnl0
ZXMgPSBmcmFtZUJ5dGVzKGZyYW1lU2l6ZSk7CisgICAgICAgIG1fZGVjb2RlZFNpemUgKz0gZGVs
dGFCeXRlczsKKyAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQgZnJhbWUgd2lsbCBzdWJzdW1l
IHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKKyAgICAgICAgLy8gdG8gZGV0ZXJtaW5l
IGltYWdlIHByb3BlcnRpZXMuCisgICAgICAgIGRlbHRhQnl0ZXMgLT0gbV9kZWNvZGVkUHJvcGVy
dGllc1NpemU7CisgICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNTaXplID0gMDsKKyAgICAgICAg
aWYgKGltYWdlT2JzZXJ2ZXIoKSkKKyAgICAgICAgICAgIGltYWdlT2JzZXJ2ZXIoKS0+ZGVjb2Rl
ZFNpemVDaGFuZ2VkKHRoaXMsIGRlbHRhQnl0ZXMpOworICAgIH0KK30KKwogTmF0aXZlSW1hZ2VQ
dHIgQml0bWFwSW1hZ2U6OmZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFl
bnN1cmVGcmFtZUlzQ2FjaGVkKGluZGV4KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9CaXRtYXBJbWFnZS5oCmluZGV4IDY0YzgxYzcuLmI0N2VjYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJJ
bWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkludFNpemUuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTgyLDYgKzgzLDE3IEBA
IHB1YmxpYzoKICAgICAgICAgY2xlYXIodHJ1ZSk7CiAgICAgfQogCisgICAgdm9pZCBzZXRGcm9t
SW1hZ2VGcmFtZURhdGEoY29uc3QgSW1hZ2VGcmFtZURhdGEmIGRhdGEpCisgICAgeworICAgICAg
ICBBU1NFUlQoIW1fZnJhbWUpOworICAgICAgICBtX2ZyYW1lID0gZGF0YS5tX2ZyYW1lOworICAg
ICAgICBtX29yaWVudGF0aW9uID0gZGF0YS5tX29yaWVudGF0aW9uOworICAgICAgICBtX2R1cmF0
aW9uID0gZGF0YS5tX2R1cmF0aW9uOworICAgICAgICBtX2hhdmVNZXRhZGF0YSA9IGRhdGEubV9o
YXZlTWV0YWRhdGE7CisgICAgICAgIG1faXNDb21wbGV0ZSA9IGRhdGEubV9pc0NvbXBsZXRlOwor
ICAgICAgICBtX2hhc0FscGhhID0gZGF0YS5tX2hhc0FscGhhOworICAgIH0KKwogICAgIC8vIENs
ZWFyIHRoZSBjYWNoZWQgaW1hZ2UgZGF0YSBvbiB0aGUgZnJhbWUsIGFuZCAob3B0aW9uYWxseSkg
dGhlIG1ldGFkYXRhLgogICAgIC8vIFJldHVybnMgd2hldGhlciB0aGVyZSB3YXMgY2FjaGVkIGlt
YWdlIGRhdGEgdG8gY2xlYXIuCiAgICAgYm9vbCBjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpOwpA
QCAtOTgsNyArMTEwLDcgQEAgcHVibGljOgogLy8gQml0bWFwSW1hZ2UgQ2xhc3MKIC8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotY2xhc3MgQml0
bWFwSW1hZ2UgOiBwdWJsaWMgSW1hZ2UgeworY2xhc3MgQml0bWFwSW1hZ2UgOiBwdWJsaWMgSW1h
Z2UsIHB1YmxpYyBJbWFnZVNvdXJjZU9ic2VydmVyIHsKICAgICBmcmllbmQgY2xhc3MgR2VuZXJh
dGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIENyb3NzZmFkZUdlbmVyYXRlZEltYWdlOwogICAg
IGZyaWVuZCBjbGFzcyBHZW5lcmF0b3JHZW5lcmF0ZWRJbWFnZTsKQEAgLTE3OSw2ICsxOTEsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKTsKICNlbmRpZgogCisg
ICAgLy8gSW1hZ2VTb3VyY2VPYnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJh
bWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFtZURhdGEmKTsKKwogcHJpdmF0ZToKICAg
ICB2b2lkIHVwZGF0ZVNpemUoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDc1ZWQ1YTEuLjA5YTk4NmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAg
LTMsNiArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQWxwIFRva2VyIDxhbHAudG9rZXJA
Y29sbGFib3JhLmNvLnVrPgogICogQ29weXJpZ2h0IChDKSAyMDA4LCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMDkgVG9yY2ggTW9iaWxl
LCBJbmMKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRp
b24uaCIKKyNpbmNsdWRlICJJbWFnZVNvdXJjZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDIsNiArNDQsMTUgQEAgdW5z
aWduZWQgSW1hZ2VTb3VyY2U6OnNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlID0gMTAyNCAqIDEw
MjQ7CiAKIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fZGVjb2RlcigwKQorICAgICwgbV9vYnNl
cnZlcigwKQorICAgICwgbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKKyAgICAsIG1fZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCit7Cit9CisK
K0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZU9ic2VydmVyKiBvYnNlcnZlciwg
SW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6R2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBt
X2RlY29kZXIoMCkKKyAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCiAgICAgLCBtX2FscGhhT3B0
aW9uKGFscGhhT3B0aW9uKQogICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKQEAgLTEzNywzNCArMTQ4LDQ0IEBAIHNpemVfdCBJ
bWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fZGVjb2RlciA/IG1f
ZGVjb2Rlci0+ZnJhbWVDb3VudCgpIDogMDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCit2b2lkIEltYWdlU291cmNlOjpy
ZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQobV9vYnNlcnZl
cik7CisgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVGcmFtZUF0SW5k
ZXgoaW5kZXgpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoaW5kZXgs
IGltYWdlRnJhbWVEYXRhKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3VyY2U6OmNyZWF0
ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFtX2RlY29kZXIpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURhdGEoKTsKIAogICAgIElt
YWdlRnJhbWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsK
ICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1l
RW1wdHkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gSW1hZ2VGcmFtZURhdGEo
KTsKKworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRhOwogCiAgICAgLy8gWmVyby1o
ZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gIElmIHdlIGhh
dmUgYW4KICAgICAvLyBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KLSAgICBpZiAo
c2l6ZSgpLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKCFzaXplKCkuaXNF
bXB0eSgpKSB7CisgICAgICAgIC8vIFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0
aXZlIGltYWdlLiBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKKyAgICAgICAgLy8gaXMgYWxyZWFk
eSBpbiBhIG5hdGl2ZSBjb250YWluZXIsIGFuZCB0aGlzIGp1c3QgaW5jcmVtZW50cyBpdHMgcmVm
Y291bnQuCisgICAgICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBidWZmZXItPmFzTmV3TmF0
aXZlSW1hZ2UoKTsKKyAgICB9CisKKyAgICBpbWFnZUZyYW1lRGF0YS5tX29yaWVudGF0aW9uID0g
b3JpZW50YXRpb25BdEluZGV4KGJ1ZmZlcik7CisgICAgaW1hZ2VGcmFtZURhdGEubV9oYXZlTWV0
YWRhdGEgPSB0cnVlOworICAgIGltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0ZSA9IGZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoYnVmZmVyKTsKKyAgICBpZiAocmVwZXRpdGlvbkNvdW50KCkgIT0gY0Fu
aW1hdGlvbk5vbmUpCisgICAgICAgIGltYWdlRnJhbWVEYXRhLm1fZHVyYXRpb24gPSBmcmFtZUR1
cmF0aW9uQXRJbmRleChidWZmZXIpOworICAgIGltYWdlRnJhbWVEYXRhLm1faGFzQWxwaGEgPSBm
cmFtZUhhc0FscGhhQXRJbmRleChidWZmZXIpOwogCi0gICAgLy8gUmV0dXJuIHRoZSBidWZmZXIg
Y29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2UuICBGb3Igc29tZSBwb3J0cywgdGhlIGRhdGEKLSAg
ICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBpbmNy
ZW1lbnRzIGl0cyByZWZjb3VudC4KLSAgICByZXR1cm4gYnVmZmVyLT5hc05ld05hdGl2ZUltYWdl
KCk7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOwogfQogCi1mbG9hdCBJbWFnZVNvdXJjZTo6
ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQorZmxvYXQgSW1hZ2VTb3VyY2U6OmZy
YW1lRHVyYXRpb25BdEluZGV4KEltYWdlRnJhbWUqIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fZGVj
b2RlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2Rl
Y29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgaWYgKCFidWZmZXIgfHwgYnVm
ZmVyLT5zdGF0dXMoKSA9PSBJbWFnZUZyYW1lOjpGcmFtZUVtcHR5KQotICAgICAgICByZXR1cm4g
MDsKLQogICAgIC8vIE1hbnkgYW5ub3lpbmcgYWRzIHNwZWNpZnkgYSAwIGR1cmF0aW9uIHRvIG1h
a2UgYW4gaW1hZ2UgZmxhc2ggYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4KICAgICAvLyBXZSBmb2xs
b3cgRmlyZWZveCdzIGJlaGF2aW9yIGFuZCB1c2UgYSBkdXJhdGlvbiBvZiAxMDAgbXMgZm9yIGFu
eSBmcmFtZXMgdGhhdCBzcGVjaWZ5CiAgICAgLy8gYSBkdXJhdGlvbiBvZiA8PSAxMCBtcy4gU2Vl
IDxyZGFyOi8vcHJvYmxlbS83Njg5MzAwPiBhbmQgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzYwODI+
CkBAIC0xNzUsMTQgKzE5NiwxNCBAQCBmbG9hdCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBkdXJhdGlvbjsKIH0KIAotSW1hZ2VPcmll
bnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50YXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkgY29u
c3QKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleChJbWFn
ZUZyYW1lKikgY29uc3QKIHsKICAgICAvLyBUaGUgSlBFRyBhbmQgVElGRiBkZWNvZGVycyBuZWVk
IHRvIGJlIHRhdWdodCBob3cgdG8gcmVhZCBFWElGLCBYTVAsIG9yIElQVEMgZGF0YS4KICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbjsKIH0K
IAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQor
Ym9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoSW1hZ2VGcmFtZSogYnVmZmVy
KQogewogICAgIC8vIFdoZW4gYSBmcmFtZSBoYXMgbm90IGZpbmlzaGVkIGRlY29kaW5nLCBhbHdh
eXMgbWFyayBpdCBhcyBoYXZpbmcgYWxwaGEuCiAgICAgLy8gUG9ydHMgdGhhdCBjaGVjayB0aGUg
cmVzdWx0IG9mIHRoaXMgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZWlyCkBAIC0xOTAsMTcgKzIx
MSwxMiBAQCBib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpCiAgICAgLy8gYmxhY2suCiAgICAgLy8gVE9ETzogUGVyaGFwcyB3ZSBzaG91bGQgZW5zdXJl
IHRoYXQgZWFjaCBpbmRpdmlkdWFsIGRlY29kZXIgcmV0dXJucyB0cnVlCiAgICAgLy8gaW4gdGhp
cyBjYXNlLgotICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkKLSAgICAg
ICAgfHwgbV9kZWNvZGVyLT5mcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpLT5oYXNBbHBoYSgpOwor
ICAgIHJldHVybiAhZnJhbWVJc0NvbXBsZXRlQXRJbmRleChidWZmZXIpIHx8IGJ1ZmZlci0+aGFz
QWxwaGEoKTsKIH0KIAotYm9vbCBJbWFnZVNvdXJjZTo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCitib29sIEltYWdlU291cmNlOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KElt
YWdlRnJhbWUqIGJ1ZmZlcikKIHsKLSAgICBpZiAoIW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoaW5kZXgpOwotICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5zdGF0dXMoKSA9
PSBJbWFnZUZyYW1lOjpGcmFtZUNvbXBsZXRlOworICAgIHJldHVybiBidWZmZXItPnN0YXR1cygp
ID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oCmluZGV4IGVkNjI1YmMuLjUxMDVjMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaApA
QCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAwOCBUb3JjaCBNb2JpbGUsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21w
YW55IDEwMCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTU3LDcgKzU4LDExIEBAIGNsYXNzIE5hdGl2ZUltYWdlU2tpYTsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVVTRShDRykKK2NsYXNzIEltYWdlRnJhbWU7CisjZW5k
aWYKIGNsYXNzIEltYWdlT3JpZW50YXRpb247CitjbGFzcyBJbWFnZVNvdXJjZU9ic2VydmVyOwog
Y2xhc3MgSW50UG9pbnQ7CiBjbGFzcyBJbnRTaXplOwogY2xhc3MgU2hhcmVkQnVmZmVyOwpAQCAt
OTQsNiArOTksMzQgQEAgdHlwZWRlZiBRUGl4bWFwKiBOYXRpdmVJbWFnZVB0cjsKICNlbmRpZgog
I2VuZGlmCiAKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQorLy8gSW1hZ2VGcmFtZURhdGEgQ2xhc3MKKy8vID09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorCitzdHJ1Y3QgSW1hZ2VGcmFtZURhdGEgeworcHVi
bGljOgorICAgIEltYWdlRnJhbWVEYXRhKCkKKyAgICAgICAgOiBtX2ZyYW1lKDApCisgICAgICAg
ICwgbV9vcmllbnRhdGlvbihEZWZhdWx0SW1hZ2VPcmllbnRhdGlvbikKKyAgICAgICAgLCBtX2R1
cmF0aW9uKDApCisgICAgICAgICwgbV9oYXZlTWV0YWRhdGEoZmFsc2UpCisgICAgICAgICwgbV9p
c0NvbXBsZXRlKGZhbHNlKQorICAgICAgICAsIG1faGFzQWxwaGEodHJ1ZSkKKyAgICB7CisgICAg
fQorCisgICAgTmF0aXZlSW1hZ2VQdHIgbV9mcmFtZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1f
b3JpZW50YXRpb247CisgICAgZmxvYXQgbV9kdXJhdGlvbjsKKyAgICBib29sIG1faGF2ZU1ldGFk
YXRhIDogMTsKKyAgICBib29sIG1faXNDb21wbGV0ZSA6IDE7CisgICAgYm9vbCBtX2hhc0FscGhh
IDogMTsKK307CisKKy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KKy8vIEJpdG1hcEltYWdlIENsYXNzCisvLyA9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKIC8vIFJpZ2h0IG5vdyBHSUZzIGFyZSB0aGUg
b25seSByZWNvZ25pemVkIGltYWdlIGZvcm1hdCB0aGF0IHN1cHBvcnRzIGFuaW1hdGlvbi4KIC8v
IFRoZSBhbmltYXRpb24gc3lzdGVtIGFuZCB0aGUgY29uc3RhbnRzIGJlbG93IGFyZSBkZXNpZ25l
ZCB3aXRoIHRoaXMgaW4gbWluZC4KIC8vIEdJRnMgaGF2ZSBhbiBvcHRpb25hbCAxNi1iaXQgdW5z
aWduZWQgbG9vcCBjb3VudCB0aGF0IGRlc2NyaWJlcyBob3cgYW4KQEAgLTEzMiw3ICsxNjUsOCBA
QCBwdWJsaWM6CiAgICAgfTsKICNlbmRpZgogCi0gICAgSW1hZ2VTb3VyY2UoQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24gPSBBbHBoYVByZW11bHRpcGxpZWQsIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID0gR2FtbWFBbmRDb2xvclByb2ZpbGVBcHBs
aWVkKTsKKyAgICBJbWFnZVNvdXJjZShBbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVsdGlwbGllZCwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENvbG9yUHJvZmlsZUFwcGxpZWQp
OworICAgIEltYWdlU291cmNlKEltYWdlU291cmNlT2JzZXJ2ZXIqLCBBbHBoYU9wdGlvbiA9IEFs
cGhhUHJlbXVsdGlwbGllZCwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFuZENv
bG9yUHJvZmlsZUFwcGxpZWQpOwogICAgIH5JbWFnZVNvdXJjZSgpOwogCiAgICAgLy8gVGVsbHMg
dGhlIEltYWdlU291cmNlIHRoYXQgdGhlIEltYWdlIG5vIGxvbmdlciBjYXJlcyBhYm91dCBkZWNv
ZGVkIGZyYW1lCkBAIC0xODAsMTIgKzIxNCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlcnMg
c2hvdWxkIG5vdCBjYWxsIHRoaXMgYWZ0ZXIgY2FsbGluZyBjbGVhcigpIHdpdGggYSBoaWdoZXIg
aW5kZXg7CiAgICAgLy8gc2VlIGNvbW1lbnRzIG9uIGNsZWFyKCkgYWJvdmUuCi0gICAgTmF0aXZl
SW1hZ2VQdHIgY3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCk7Ci0KLSAgICBmbG9hdCBmcmFtZUR1
cmF0aW9uQXRJbmRleChzaXplX3QpOwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVhbGx5IHVzZWQgYW55IGFscGhh
LgotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9y
IG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgotICAgIEltYWdlT3JpZW50YXRp
b24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8vIEVYSUYgaW1hZ2Ugb3JpZW50
YXRpb24KKyAgICB2b2lkIHJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90KTsKKyAgICBJbWFnZUZy
YW1lRGF0YSBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKIAogI2lmIEVOQUJMRShJTUFHRV9E
RUNPREVSX0RPV05fU0FNUExJTkcpCiAgICAgc3RhdGljIHVuc2lnbmVkIG1heFBpeGVsc1BlckRl
Y29kZWRJbWFnZSgpIHsgcmV0dXJuIHNfbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlOyB9CkBAIC0x
OTMsNyArMjIzLDIwIEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorI2lmIFVTRShDRykK
KyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpOworICAgIGJvb2wgZnJhbWVI
YXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsgLy8gV2hldGhlciBvciBub3QgdGhlIGZyYW1lIGFjdHVh
bGx5IHVzZWQgYW55IGFscGhhLgorICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXpl
X3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgaXMgY29tcGxldGVseSBkZWNvZGVkLgor
ICAgIEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7IC8v
IEVYSUYgaW1hZ2Ugb3JpZW50YXRpb24KKyNlbHNlCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoSW1hZ2VGcmFtZSopOworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoSW1hZ2VG
cmFtZSopOworICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChJbWFnZUZyYW1lKik7Cisg
ICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoSW1hZ2VGcmFtZSopIGNvbnN0
OworI2VuZGlmCisKICAgICBOYXRpdmVJbWFnZVNvdXJjZVB0ciBtX2RlY29kZXI7CisgICAgSW1h
Z2VTb3VyY2VPYnNlcnZlciogbV9vYnNlcnZlcjsKICAgICBBbHBoYU9wdGlvbiBtX2FscGhhT3B0
aW9uOwogICAgIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIG1fZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb247CiAjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlT2JzZXJ2
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmFmNzA4YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
T2JzZXJ2ZXIuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENv
bXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBJbWFn
ZVNvdXJjZU9ic2VydmVyX2gKKyNkZWZpbmUgSW1hZ2VTb3VyY2VPYnNlcnZlcl9oCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VGcmFtZURhdGE7CisKKy8vIEludGVyZmFjZSBm
b3Igbm90aWZpY2F0aW9uIGFib3V0IGNoYW5nZXMgdG8gYW4gSW1hZ2VTb3VyY2UsIGluY2x1ZGlu
ZyBkZWNvZGluZy4KK2NsYXNzIEltYWdlU291cmNlT2JzZXJ2ZXIgeworcHVibGljOgorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCwgY29uc3QgSW1hZ2VGcmFt
ZURhdGEmKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5JbWFnZVNvdXJjZU9ic2Vy
dmVyKCkgeyB9Cit9OworCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAppbmRleCBl
OWZhNWJlLi42NjdkMDVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJvLmNwcApAQCAtNDIsNiArNDIsNyBA
QCBQYXNzUmVmUHRyPEJpdG1hcEltYWdlPiBCaXRtYXBJbWFnZTo6Y3JlYXRlKGNhaXJvX3N1cmZh
Y2VfdCogc3VyZmFjZSkKIAogQml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKE5hdGl2ZUltYWdlQ2Fp
cm8qIG5hdGl2ZUltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9i
c2VydmVyKQorICAgICwgbV9zb3VyY2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAg
ICAgLCBtX2ZyYW1lcygwKQogICAgICwgbV9mcmFtZVRpbWVyKDApCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29u
dGV4dDNEQ2Fpcm8uY3BwCmluZGV4IGFjMjkyZDMuLjA0YzhhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNz
Q29udGV4dDNEQ2Fpcm8uY3BwCkBAIC0xNTcsOSArMTU3LDEyIEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSogaW1hZ2UsIHVuc2lnbmVkIGludCBmb3JtYXQsIHVu
c2lnbmVkCiAgICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gaW1hZ2VTdXJmYWNlOwogICAgIGlm
IChpbWFnZS0+ZGF0YSgpKSB7CiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgp
LCB0cnVlKTsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSB8fCAhZGVjb2Rlci5m
cmFtZUlzQ29tcGxldGVBdEluZGV4KDApKQorICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3Vu
dCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBPd25QdHI8TmF0aXZlSW1h
Z2VDYWlybz4gbmF0aXZlSW1hZ2UgPSBhZG9wdFB0cihkZWNvZGVyLmNyZWF0ZUZyYW1lQXRJbmRl
eCgwKSk7CisgICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlSW1hZ2VGcmFtZURhdGEgPSBkZWNv
ZGVyLmNyZWF0ZUZyYW1lQXRJbmRleCgwKTsKKyAgICAgICAgaWYgKCFpbWFnZUltYWdlRnJhbWVE
YXRhLm1faXNDb21wbGV0ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgT3du
UHRyPE5hdGl2ZUltYWdlQ2Fpcm8+IG5hdGl2ZUltYWdlID0gYWRvcHRQdHIoaW1hZ2VJbWFnZUZy
YW1lRGF0YS5tX2ZyYW1lKTsKICAgICAgICAgaW1hZ2VTdXJmYWNlID0gbmF0aXZlSW1hZ2UtPnN1
cmZhY2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpbWFnZVN1cmZhY2UgPSBpbWFnZS0+bmF0
aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKS0+c3VyZmFjZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAppbmRleCBlMDQ0YjhkLi4zZmQ4ZmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNwcApAQCAtMTA3
LDcgKzEwNyw4IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWFnZSog
aW1hZ2UsCiAgICAgICAgIGRlY29kZXIuc2V0RGF0YShpbWFnZS0+ZGF0YSgpLCB0cnVlKTsKICAg
ICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgZGVjb2RlZEltYWdlLmFkb3B0Q0YoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5k
ZXgoMCkpOworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIu
Y3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBkZWNvZGVkSW1hZ2UuYWRvcHRDRihpbWFn
ZUZyYW1lRGF0YS5tX2ZyYW1lKTsKICAgICAgICAgY2dJbWFnZSA9IGRlY29kZWRJbWFnZS5nZXQo
KTsKICAgICB9IGVsc2UKICAgICAgICAgY2dJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUNHLmNwcAppbmRleCBmZWQ5MTFhLi5mZmNmOWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcApAQCAtNzAsNiArNzAsNyBAQCBib29s
IEZyYW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogCiBCaXRtYXBJbWFnZTo6Qml0
bWFwSW1hZ2UoQ0dJbWFnZVJlZiBjZ0ltYWdlLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAg
ICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9zb3VyY2UodGhpcykKICAgICAsIG1fY3VycmVu
dEZyYW1lKDApCiAgICAgLCBtX2ZyYW1lcygwKQogICAgICwgbV9mcmFtZVRpbWVyKDApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZVNvdXJjZUNH
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cu
Y3BwCmluZGV4IDQzMzUzNjUuLjRiZTgyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlU291cmNlQ0cuY3BwCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgogCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgorI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJJbnRQb2lu
dC5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CkBAIC03MiwxMiArNzMsMjEgQEAgdm9pZCBzaGFyZWRCdWZmZXJSZWxlYXNlKHZvaWQqIGluZm8p
CiAKIEltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICA6IG1fZGVjb2RlcigwKQorICAgICwgbV9vYnNlcnZl
cigwKQogICAgIC8vIEZJWE1FOiBtX3ByZW11bHRpcGx5QWxwaGEgaXMgaWdub3JlZCBpbiBjZyBh
dCB0aGUgbW9tZW50LgogICAgICwgbV9hbHBoYU9wdGlvbihhbHBoYU9wdGlvbikKICAgICAsIG1f
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24oZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7
CiB9CiAKK0ltYWdlU291cmNlOjpJbWFnZVNvdXJjZShJbWFnZVNvdXJjZU9ic2VydmVyKiBvYnNl
cnZlciwgSW1hZ2VTb3VyY2U6OkFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBJbWFnZVNvdXJjZTo6
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisg
ICAgOiBtX2RlY29kZXIoMCkKKyAgICAsIG1fb2JzZXJ2ZXIob2JzZXJ2ZXIpCisgICAgLCBtX2Fs
cGhhT3B0aW9uKGFscGhhT3B0aW9uKQorICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bihnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK3sKK30KKwogSW1hZ2VTb3VyY2U6On5JbWFn
ZVNvdXJjZSgpCiB7CiAgICAgY2xlYXIodHJ1ZSk7CkBAIC0yOTksMjQgKzMwOSw0MiBAQCBzaXpl
X3QgSW1hZ2VTb3VyY2U6OmZyYW1lQ291bnQoKSBjb25zdAogICAgIHJldHVybiBtX2RlY29kZXIg
PyBDR0ltYWdlU291cmNlR2V0Q291bnQobV9kZWNvZGVyKSA6IDA7CiB9CiAKLUNHSW1hZ2VSZWYg
SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCit2b2lkIEltYWdl
U291cmNlOjpyZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK3sKKyAgICBBU1NFUlQo
bV9vYnNlcnZlcik7CisgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBjcmVhdGVG
cmFtZUF0SW5kZXgoaW5kZXgpOworICAgIG1fb2JzZXJ2ZXItPmRpZFJlY2VpdmVGcmFtZUF0SW5k
ZXgoaW5kZXgsIGltYWdlRnJhbWVEYXRhKTsKK30KKworSW1hZ2VGcmFtZURhdGEgSW1hZ2VTb3Vy
Y2U6OmNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFpbml0aWFs
aXplZCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIEltYWdlRnJhbWVEYXRh
KCk7CisKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YTsKIAogICAgIFJldGFpblB0
cjxDR0ltYWdlUmVmPiBpbWFnZShBZG9wdENGLCBDR0ltYWdlU291cmNlQ3JlYXRlSW1hZ2VBdElu
ZGV4KG1fZGVjb2RlciwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucyhTa2lwTWV0YWRhdGEpKSk7
CiAgICAgQ0ZTdHJpbmdSZWYgaW1hZ2VVVEkgPSBDR0ltYWdlU291cmNlR2V0VHlwZShtX2RlY29k
ZXIpOwogICAgIHN0YXRpYyBjb25zdCBDRlN0cmluZ1JlZiB4Ym1VVEkgPSBDRlNUUigicHVibGlj
LnhiaXRtYXAtaW1hZ2UiKTsKICAgICBpZiAoIWltYWdlVVRJIHx8ICFDRkVxdWFsKGltYWdlVVRJ
LCB4Ym1VVEkpKQotICAgICAgICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICBpbWFn
ZUZyYW1lRGF0YS5tX2ZyYW1lID0gaW1hZ2UubGVha1JlZigpOwogICAgIAogICAgIC8vIElmIGl0
IGlzIGFuIHhibSBpbWFnZSwgbWFzayBvdXQgYWxsIHRoZSB3aGl0ZSBhcmVhcyB0byByZW5kZXIg
dGhlbSB0cmFuc3BhcmVudC4KICAgICBjb25zdCBDR0Zsb2F0IG1hc2tpbmdDb2xvcnNbNl0gPSB7
MjU1LCAyNTUsICAyNTUsIDI1NSwgMjU1LCAyNTV9OwogICAgIFJldGFpblB0cjxDR0ltYWdlUmVm
PiBtYXNrZWRJbWFnZShBZG9wdENGLCBDR0ltYWdlQ3JlYXRlV2l0aE1hc2tpbmdDb2xvcnMoaW1h
Z2UuZ2V0KCksIG1hc2tpbmdDb2xvcnMpKTsKICAgICBpZiAoIW1hc2tlZEltYWdlKQotICAgICAg
ICByZXR1cm4gaW1hZ2UubGVha1JlZigpOworICAgICAgICBpbWFnZUZyYW1lRGF0YS5tX2ZyYW1l
ID0gaW1hZ2UubGVha1JlZigpOworCisgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9IG1hc2tl
ZEltYWdlLmxlYWtSZWYoKTsKKworICAgIGltYWdlRnJhbWVEYXRhLm1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbkF0SW5kZXgoaW5kZXgpOworICAgIGltYWdlRnJhbWVEYXRhLm1faGF2ZU1ldGFk
YXRhID0gdHJ1ZTsKKyAgICBpbWFnZUZyYW1lRGF0YS5tX2lzQ29tcGxldGUgPSBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KGluZGV4KTsKKyAgICBpZiAocmVwZXRpdGlvbkNvdW50KCkgIT0gY0FuaW1h
dGlvbk5vbmUpCisgICAgICAgIGltYWdlRnJhbWVEYXRhLm1fZHVyYXRpb24gPSBmcmFtZUR1cmF0
aW9uQXRJbmRleChpbmRleCk7CisgICAgaW1hZ2VGcmFtZURhdGEubV9oYXNBbHBoYSA9IGZyYW1l
SGFzQWxwaGFBdEluZGV4KGluZGV4KTsKIAotICAgIHJldHVybiBtYXNrZWRJbWFnZS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIGltYWdlRnJhbWVEYXRhOwogfQogCiBib29sIEltYWdlU291cmNlOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCmluZGV4IDk1
MTA4ODIuLmViODA2NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW52Zy9JbWFnZU9wZW5WRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcApAQCAtNTIsNiArNTIsNyBAQCBib29sIEZy
YW1lRGF0YTo6Y2xlYXIoYm9vbCBjbGVhck1ldGFkYXRhKQogCiBCaXRtYXBJbWFnZTo6Qml0bWFw
SW1hZ2UoVGlsZWRJbWFnZU9wZW5WRyogdGlsZWRJbWFnZSwgSW1hZ2VPYnNlcnZlciogb2JzZXJ2
ZXIpCiAgICAgOiBJbWFnZShvYnNlcnZlcikKKyAgICAsIG1fc291cmNlKHRoaXMpCiAgICAgLCBt
X3NpemUodGlsZWRJbWFnZS0+c2l6ZSgpKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAs
IG1fZnJhbWVzKDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9JbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwCmluZGV4IGUwOThlMDkuLmRhZjAwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwCkBAIC0xOTYsNiArMTk2LDcgQEAgdm9p
ZCBJbWFnZTo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJl
Y3QmIHRpbGVSZWN0LCBjb25zdAogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoUVBpeG1hcCog
cGl4bWFwLCBJbWFnZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQor
ICAgICwgbV9zb3VyY2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2Zy
YW1lcygwKQogICAgICwgbV9mcmFtZVRpbWVyKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tpYS5j
cHAKaW5kZXggMDE5MDM3Yy4uNzY5ZjI4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0M0RTa2lhLmNw
cApAQCAtNjAsMTAgKzYwLDEzIEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0
YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGUgPyBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVJZ25vcmVk
IDogSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CiAgICAgICAgIC8v
IEF0dGVtcHQgdG8gZ2V0IHJhdyB1bnByZW11bHRpcGxpZWQgaW1hZ2UgZGF0YSAKICAgICAgICAg
ZGVjb2Rlci5zZXREYXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwotICAgICAgICBpZiAoIWRlY29k
ZXIuZnJhbWVDb3VudCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCisg
ICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGhhc0FscGhhID0gZGVjb2Rlci5mcmFtZUhhc0FscGhhQXRJbmRleCgwKTsK
LSAgICAgICAgcGl4ZWxzID0gYWRvcHRQdHIoZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCkp
OworICAgICAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRl
RnJhbWVBdEluZGV4KDApOworICAgICAgICBpZiAoIWltYWdlRnJhbWVEYXRhLm1faXNDb21wbGV0
ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaGFzQWxwaGEgPSBpbWFnZUZy
YW1lRGF0YS5tX2hhc0FscGhhOworICAgICAgICBwaXhlbHMgPSBhZG9wdFB0cihpbWFnZUZyYW1l
RGF0YS5tX2ZyYW1lKTsKICAgICAgICAgaWYgKCFwaXhlbHMuZ2V0KCkgfHwgIXBpeGVscy0+aXNE
YXRhQ29tcGxldGUoKSB8fCAhcGl4ZWxzLT5iaXRtYXAoKS53aWR0aCgpIHx8ICFwaXhlbHMtPmJp
dG1hcCgpLmhlaWdodCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBTa0Jp
dG1hcDo6Q29uZmlnIHNraWFDb25maWcgPSBwaXhlbHMtPmJpdG1hcCgpLmNvbmZpZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd3gvSW1hZ2VXeC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93eC9JbWFnZVd4LmNwcAppbmRleCA1
NGJiZGJiLi43NDY1NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93eC9JbWFnZVd4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93eC9JbWFnZVd4LmNwcApAQCAtODIsNiArODIsNyBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFn
ZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3QgY2hhciAqbmFtZSkKIAogQml0bWFwSW1hZ2U6
OkJpdG1hcEltYWdlKGNvbnN0IHd4Qml0bWFwJiBiaXRtYXApCiAgICAgOiBJbWFnZSgwKQorICAg
ICwgbV9zb3VyY2UodGhpcykKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAgICAgLCBtX2ZyYW1l
cygwKQogICAgICwgbV9mcmFtZVRpbWVyKDApCi0tIAoxLjcuOS41Cgo=
</data>
<flag name="commit-queue"
          id="158852"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150583</attachid>
            <date>2012-07-03 04:50:13 -0700</date>
            <delta_ts>2012-08-12 03:00:32 -0700</delta_ts>
            <desc>patch v.5</desc>
            <filename>0001-Prepare-for-parallel-image-decoder.patch</filename>
            <type>text/plain</type>
            <size>40249</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">RnJvbSBiZjQ0M2FiY2E5M2Y4YmVmNDc2YTMyNzIwYzZhNTUyMDM5MjhmOTYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIdWFuZyBEb25nc3VuZyA8bHV4dGVsbGFAY29tcGFueTEwMC5u
ZXQ+CkRhdGU6IFR1ZSwgOCBNYXkgMjAxMiAxMzoyMzozMyArMDkwMApTdWJqZWN0OiBbUEFUQ0hd
IFByZXBhcmUgZm9yIHBhcmFsbGVsIGltYWdlIGRlY29kZXIuCiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA0NDMKClRoZSBrZXkgcG9pbnQgb2YgdGhpcyBwYXRjaCBp
cyB0byBjaGFuZ2UgaG93IEJpdG1hcEltYWdlIHVzZXMgSW1hZ2VTb3VyY2UuCgpPcmlnaW5hbGx5
LCBCaXRtYXBJbWFnZSByZXRyaWV2ZXMgdGhlIGZyYW1lIGRhdGEgZnJvbSBJbWFnZVNvdXJjZSBi
eSBjYWxsaW5nIHRoZQpmb2xsb3dpbmcgbWV0aG9kczoKLSBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUF0SW5kZXgoc2l6ZV90KTsKLSBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
OwotIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KTsKLSBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KTsKLSBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OwoKVXBvbiBlYWNoIG1ldGhvZCBjYWxsLCBJbWFnZVNvdXJjZSBzeW5j
aHJvbm91c2x5IGRlY29kZXMgdGhlIGltYWdlIGFuZCByZXR1cm5zCnRoZSByZXF1ZXN0ZWQgaW5m
b3JtYXRpb24uIEJlY2F1c2UgYWxsIHRoZSBtZXRob2RzIGFib3ZlIGFyZSBpbmhlcmVudGx5CnN5
bmNocm9ub3VzLCBpdCBpcyBub3QgZWFzeSB0byBtYWtlIHRoZW0gcGFyYWxsZWwuCgpUbyBpbXBs
ZW1lbnQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIHRoZXNlIG1ldGhvZHMgbXVzdCBiZSBhc3lu
Y2hyb25vdXMuIFNvIEkKbWVyZ2VkIGFsbCB0aGVzZSBtZXRob2RzIGludG8gYSBzaW5nbGUgbWV0
aG9kLCByZXF1ZXN0RnJhbWVBdEluZGV4KHNpemVfdCksCndoaWNoIHJlcXVlc3RzIGFsbCB0aGUg
ZnJhbWUgZGF0YSBhdCBvbmNlLiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaGFzIG5vIHJldHVybgp2
YWx1ZS4KCkluc3RlYWQsIEJpdG1hcEltYWdlIG5vdyBpbXBsZW1lbnRzIEltYWdlU291cmNlT2Jz
ZXJ2ZXIgYW5kIHBhc3NlcyBpdHNlbGYgdG8KSW1hZ2VTb3VyY2UgY29uc3RydWN0b3IuIE9uY2Ug
aW1hZ2UgZGVjb2RpbmcgaXMgZmluaXNoZWQgb3IgY2FjaGVkIGltYWdlIGlzCmF2YWlsYWJsZSwg
SW1hZ2VTb3VyY2Ugbm90aWZpZXMgQml0bWFwSW1hZ2UgdmlhCkltYWdlU291cmNlT2JzZXJ2ZXI6
OmRpZFJlY2VpdmVJbWFnZUZyYW1lRGF0YShzaXplX3QsIGNvbnN0IEltYWdlRnJhbWVEYXRhJiku
CkltYWdlRnJhbWVEYXRhIGNvbnRhaW5zIGFsbCB0aGUgZnJhbWUgZGF0YSBpbmNsdWRpbmcgZnJh
bWUsIGR1cmF0aW9uLCBpc0FscGhhLAppc0NvbXBsZXRlIGFuZCBvcmllbnRhdGlvbi4KLS0tCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgODkg
KysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
ICAgICAgICAgICAgICAgIHwgICAgMSArCiBTb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpICAgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qICAgICAgIHwgICAgNCArCiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAgIDQgKwogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwICAgfCAgIDY3ICsrKysrKysrLS0tLS0t
LQogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCAgICAgfCAg
IDE3ICsrKy0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cCAgIHwgICA2OCArKysrKysrKystLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmggICAgIHwgICA1NyArKysrKysrKysrKy0tCiAuLi4vcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oICAgICAgICB8ICAgNDQgKysrKysrKysrKwog
Li4uL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwICAgfCAgICAx
ICsKIC4uLi9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHQzRENhaXJvLmNwcCAgICAgIHwg
ICAgNyArLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
ICAgfCAgICAzICstCiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNH
LmNwcCAgICB8ICAgIDEgKwogLi4uL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VT
b3VyY2VDRy5jcHAgfCAgIDM4ICsrKysrKystLQogLi4uL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52
Zy9JbWFnZU9wZW5WRy5jcHAgICAgICAgfCAgICAxICsKIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwICAgIHwgICAgMSArCiAuLi4vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHQzRFNraWEuY3BwICAgICAgICB8ICAgIDkgKy0KIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwICAgIHwgICAgMSArCiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKwogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VDRy5jcHAgICAgICAgICAgfCAgICAzICst
CiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwICAgICAgICB8ICAg
IDMgKy0KIDIzIGZpbGVzIGNoYW5nZWQsIDM1NiBpbnNlcnRpb25zKCspLCA4MSBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZU9ic2VydmVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjc3NjU2Yy4uNzlkMDk3MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTA3LTAzICBIdWFuZyBEb25nc3VuZyAgPGx1
eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFByZXBhcmUgZm9yIHBhcmFsbGVsIGlt
YWdlIGRlY29kZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05MDQ0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoZSBrZXkgcG9pbnQgb2YgdGhpcyBwYXRjaCBpcyB0byBjaGFuZ2UgaG93IEJpdG1hcElt
YWdlIHVzZXMgSW1hZ2VTb3VyY2UuCisKKyAgICAgICAgT3JpZ2luYWxseSwgQml0bWFwSW1hZ2Ug
cmV0cmlldmVzIHRoZSBmcmFtZSBkYXRhIGZyb20gSW1hZ2VTb3VyY2UgYnkgY2FsbGluZyB0aGUK
KyAgICAgICAgZm9sbG93aW5nIG1ldGhvZHM6CisgICAgICAgIC0gTmF0aXZlSW1hZ2VQdHIgY3Jl
YXRlRnJhbWVBdEluZGV4KHNpemVfdCk7CisgICAgICAgIC0gZmxvYXQgZnJhbWVEdXJhdGlvbkF0
SW5kZXgoc2l6ZV90KTsKKyAgICAgICAgLSBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCk7CisgICAgICAgIC0gYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7CisgICAg
ICAgIC0gSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KworICAgICAgICBVcG9uIGVhY2ggbWV0aG9kIGNhbGwsIEltYWdlU291cmNlIHN5bmNocm9ub3Vz
bHkgZGVjb2RlcyB0aGUgaW1hZ2UgYW5kIHJldHVybnMKKyAgICAgICAgdGhlIHJlcXVlc3RlZCBp
bmZvcm1hdGlvbi4gQmVjYXVzZSBhbGwgdGhlIG1ldGhvZHMgYWJvdmUgYXJlIGluaGVyZW50bHkK
KyAgICAgICAgc3luY2hyb25vdXMsIGl0IGlzIG5vdCBlYXN5IHRvIG1ha2UgdGhlbSBwYXJhbGxl
bC4KKworICAgICAgICBUbyBpbXBsZW1lbnQgcGFyYWxsZWwgaW1hZ2UgZGVjb2RlcnMsIHRoZXNl
IG1ldGhvZHMgbXVzdCBiZSBhc3luY2hyb25vdXMuIFNvIEkKKyAgICAgICAgbWVyZ2VkIGFsbCB0
aGVzZSBtZXRob2RzIGludG8gYSBzaW5nbGUgbWV0aG9kLCByZXF1ZXN0RnJhbWVBdEluZGV4KHNp
emVfdCksCisgICAgICAgIHdoaWNoIHJlcXVlc3RzIGFsbCB0aGUgZnJhbWUgZGF0YSBhdCBvbmNl
LiBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaGFzIG5vIHJldHVybgorICAgICAgICB2YWx1ZS4KKwor
ICAgICAgICBJbnN0ZWFkLCBCaXRtYXBJbWFnZSBub3cgaW1wbGVtZW50cyBJbWFnZVNvdXJjZU9i
c2VydmVyIGFuZCBwYXNzZXMgaXRzZWxmIHRvCisgICAgICAgIEltYWdlU291cmNlIGNvbnN0cnVj
dG9yLiBPbmNlIGltYWdlIGRlY29kaW5nIGlzIGZpbmlzaGVkIG9yIGNhY2hlZCBpbWFnZSBpcwor
ICAgICAgICBhdmFpbGFibGUsIEltYWdlU291cmNlIG5vdGlmaWVzIEJpdG1hcEltYWdlIHZpYQor
ICAgICAgICBJbWFnZVNvdXJjZU9ic2VydmVyOjpkaWRSZWNlaXZlSW1hZ2VGcmFtZURhdGEoc2l6
ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpLgorICAgICAgICBJbWFnZUZyYW1lRGF0YSBjb250
YWlucyBhbGwgdGhlIGZyYW1lIGRhdGEgaW5jbHVkaW5nIGZyYW1lLCBkdXJhdGlvbiwgaXNBbHBo
YSwKKyAgICAgICAgaXNDb21wbGV0ZSBhbmQgb3JpZW50YXRpb24uCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzIC0gZXhpc3RpbmcgaW1hZ2UgdGVzdHMgY292ZXIgdGhlc2UgY2FzZXMuCisKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6
OmNhY2hlRnJhbWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZGlkUmVjZWl2ZUZyYW1lQXRJbmRleCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lRGF0YTo6c2V0RnJv
bUltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKEZyYW1lRGF0YSk6CisgICAgICAgIChCaXRtYXBJ
bWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJbmRleCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6Om9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKEltYWdlRnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRnJhbWVEYXRh
OjpJbWFnZUZyYW1lRGF0YSk6CisgICAgICAgIChJbWFnZVNvdXJjZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoSW1hZ2VTb3VyY2VPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZVNvdXJjZU9ic2VydmVyOjp+SW1hZ2VTb3VyY2VPYnNlcnZlcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQml0bWFwSW1hZ2VDYWlyby5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dDNEQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZUNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6SW1hZ2VTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6cmVxdWVzdEZyYW1l
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdElu
ZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2U6OkJpdG1hcEltYWdlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9HcmFwaGljc0NvbnRleHQzRFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd3gv
SW1hZ2VXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2Up
OgorCiAyMDEyLTA2LTI3ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBQZXJmb3JtYW5jZTogT3B0aW1pemUgRHJvbWFlby9kb20tcXVlcnkuaHRtbCBieSBj
YWNoaW5nIE5vZGVSYXJlRGF0YSBvbiBEb2N1bWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMzVlYzJlYy4uZGI5M2I1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CkBAIC0zMzUzLDYgKzMzNTMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZU9ic2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ludFBvaW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ludFBvaW50SGFzaC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bnRSZWN0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCA3Yjk2Yjc2Li45ZTc5ZWNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5w
cmkKQEAgLTIyOTMsNiArMjI5Myw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCBcCisgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQ
b2ludC5oIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2guaCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxMDU0ZTA3Li45
YTVlNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zODUsNiArMzg1LDcgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZU9ic2VydmVyLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlT3JpZW50YXRpb24uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VTb3VyY2UuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2VPYnNlcnZlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9J
bnRQb2ludC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9JbnRQb2ludEhhc2gu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvSW50UmVjdC5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDEyZGI1Ni4uMzMx
Yjc5NiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oK
QEAgLTI5MzEwLDYgKzI5MzEwLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbWFnZVNvdXJjZU9ic2Vy
dmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwbGF0Zm9ybVxncmFwaGljc1xJbnRQb2ludC5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDJkZDM1OGMuLmVjNTA1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ3OTAsNiArNDc5MCw3IEBACiAJCUIyNzUzNTZG
MEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuY3Bw
ICovOyB9OwogCQlCMjc1MzU3MDBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNzUzNTQyMEIwNTM4MTQwMDJD
RTY0RiAvKiBJbWFnZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUIyNzUzNTcxMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDMwQjA1Mzgx
NDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQjI3NTM1NzEwQjA1MzgxNDAwMkNFNjRFIC8qIEltYWdlU291
cmNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyNzUzNTQzMEIwNTM4MTQwMDJDRTY0RSAvKiBJbWFnZVNvdXJjZU9ic2VydmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NzIw
QjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0NDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnQu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCMjc1
MzU3MzBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50
UmVjdC5jcHAgKi87IH07CiAJCUIyNzUzNTc0MEIwNTM4MTQwMDJDRTY0RiAvKiBJbnRSZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0NjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UmVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0xMTk1Nyw2ICsxMTk1OCw3IEBACiAJCUIyNzUzNTQxMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW1hZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEltYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTQzMEIw
NTM4MTQwMDJDRTY0RiAvKiBJbWFnZVNvdXJjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjI3
NTM1NDMwQjA1MzgxNDAwMkNFNjRFIC8qIEltYWdlU291cmNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlU291cmNlT2JzZXJ2ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1NDQwQjA1MzgxNDAwMkNFNjRGIC8qIEludFBvaW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRQb2ludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCMjc1MzU0NTBCMDUzODE0MDAyQ0U2NEYgLyogSW50UmVj
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50UmVjdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTQ2MEIwNTM4MTQwMDJDRTY0RiAv
KiBJbnRSZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRSZWN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTY0NSw2ICsxOTY0Nyw3IEBACiAJCQkJ
QTg3NDhENjYxMkNDMzc2MzAwMUZCQTQxIC8qIEltYWdlT3JpZW50YXRpb24uaCAqLywKIAkJCQk0
OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmggKi8sCiAJCQkJ
QjI3NTM1NDMwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlU291cmNlLmggKi8sCisJCQkJQjI3NTM1
NDMwQjA1MzgxNDAwMkNFNjRFIC8qIEltYWdlU291cmNlT2JzZXJ2ZXIuaCAqLywKIAkJCQlCMjc1
MzU0NDBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnQuaCAqLywKIAkJCQlFNDYyQTRBMDExM0U3
MUJFMDA0QTQyMjAgLyogSW50UG9pbnRIYXNoLmggKi8sCiAJCQkJQjI3NTM1NDUwQjA1MzgxNDAw
MkNFNjRGIC8qIEludFJlY3QuY3BwICovLApAQCAtMjMzNjIsNiArMjMzNjUsNyBAQAogCQkJCTJE
NUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk0OTI5MUU0QjEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VSZW5kZXJpbmdNb2RlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU3MTBCMDUzODE0MDAyQ0U2NEYgLyogSW1hZ2VTb3Vy
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCUIyNzUzNTcxMEIwNTM4MTQwMDJDRTY0RSAvKiBJbWFn
ZVNvdXJjZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0QjM0ODA5NDBFRUY1MEQ0MDBB
QzFCNDEgLyogSW1hZ2VTb3VyY2VDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzE2RkUxMTgwRTZF
MURBNzAwQkY2MDg4IC8qIEltcGxpY2l0QW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlE
QjIzQzJDQzBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCBpbiBIZWFk
ZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0
bWFwSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1h
Z2UuY3BwCmluZGV4IDhiYzk3MjIuLjNlYjk0ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgc3RhdGlj
IGludCBmcmFtZUJ5dGVzKGNvbnN0IEludFNpemUmIGZyYW1lU2l6ZSkKIAogQml0bWFwSW1hZ2U6
OkJpdG1hcEltYWdlKEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2
ZXIpCisgICAgLCBtX3NvdXJjZSh0aGlzKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAs
IG1fZnJhbWVzKDApCiAgICAgLCBtX2ZyYW1lVGltZXIoMCkKQEAgLTEyNiw0MCArMTI3LDYgQEAg
dm9pZCBCaXRtYXBJbWFnZTo6ZGVzdHJveU1ldGFkYXRhQW5kTm90aWZ5KGludCBmcmFtZXNDbGVh
cmVkKQogICAgICAgICBpbWFnZU9ic2VydmVyKCktPmRlY29kZWRTaXplQ2hhbmdlZCh0aGlzLCBk
ZWx0YUJ5dGVzKTsKIH0KIAotdm9pZCBCaXRtYXBJbWFnZTo6Y2FjaGVGcmFtZShzaXplX3QgaW5k
ZXgpCi17Ci0gICAgc2l6ZV90IG51bUZyYW1lcyA9IGZyYW1lQ291bnQoKTsKLSAgICBBU1NFUlQo
bV9kZWNvZGVkU2l6ZSA9PSAwIHx8IG51bUZyYW1lcyA+IDEpOwotICAgIAotICAgIGlmIChtX2Zy
YW1lcy5zaXplKCkgPCBudW1GcmFtZXMpCi0gICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVz
KTsKLQotICAgIG1fZnJhbWVzW2luZGV4XS5tX2ZyYW1lID0gbV9zb3VyY2UuY3JlYXRlRnJhbWVB
dEluZGV4KGluZGV4KTsKLSAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhd
Lm1fZnJhbWUpCi0gICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOwotCi0gICAgbV9mcmFtZXNb
aW5kZXhdLm1fb3JpZW50YXRpb24gPSBtX3NvdXJjZS5vcmllbnRhdGlvbkF0SW5kZXgoaW5kZXgp
OwotICAgIG1fZnJhbWVzW2luZGV4XS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7Ci0gICAgbV9mcmFt
ZXNbaW5kZXhdLm1faXNDb21wbGV0ZSA9IG1fc291cmNlLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
aW5kZXgpOwotICAgIGlmIChyZXBldGl0aW9uQ291bnQoZmFsc2UpICE9IGNBbmltYXRpb25Ob25l
KQotICAgICAgICBtX2ZyYW1lc1tpbmRleF0ubV9kdXJhdGlvbiA9IG1fc291cmNlLmZyYW1lRHVy
YXRpb25BdEluZGV4KGluZGV4KTsKLSAgICBtX2ZyYW1lc1tpbmRleF0ubV9oYXNBbHBoYSA9IG1f
c291cmNlLmZyYW1lSGFzQWxwaGFBdEluZGV4KGluZGV4KTsKLQotICAgIGNvbnN0IEludFNpemUg
ZnJhbWVTaXplKGluZGV4ID8gbV9zb3VyY2UuZnJhbWVTaXplQXRJbmRleChpbmRleCkgOiBtX3Np
emUpOwotICAgIGlmIChmcmFtZVNpemUgIT0gbV9zaXplKQotICAgICAgICBtX2hhc1VuaWZvcm1G
cmFtZVNpemUgPSBmYWxzZTsKLSAgICBpZiAobV9mcmFtZXNbaW5kZXhdLm1fZnJhbWUpIHsKLSAg
ICAgICAgaW50IGRlbHRhQnl0ZXMgPSBmcmFtZUJ5dGVzKGZyYW1lU2l6ZSk7Ci0gICAgICAgIG1f
ZGVjb2RlZFNpemUgKz0gZGVsdGFCeXRlczsKLSAgICAgICAgLy8gVGhlIGZ1bGx5LWRlY29kZWQg
ZnJhbWUgd2lsbCBzdWJzdW1lIHRoZSBwYXJ0aWFsbHkgZGVjb2RlZCBkYXRhIHVzZWQKLSAgICAg
ICAgLy8gdG8gZGV0ZXJtaW5lIGltYWdlIHByb3BlcnRpZXMuCi0gICAgICAgIGRlbHRhQnl0ZXMg
LT0gbV9kZWNvZGVkUHJvcGVydGllc1NpemU7Ci0gICAgICAgIG1fZGVjb2RlZFByb3BlcnRpZXNT
aXplID0gMDsKLSAgICAgICAgaWYgKGltYWdlT2JzZXJ2ZXIoKSkKLSAgICAgICAgICAgIGltYWdl
T2JzZXJ2ZXIoKS0+ZGVjb2RlZFNpemVDaGFuZ2VkKHRoaXMsIGRlbHRhQnl0ZXMpOwotICAgIH0K
LX0KLQogdm9pZCBCaXRtYXBJbWFnZTo6ZGlkRGVjb2RlUHJvcGVydGllcygpIGNvbnN0CiB7CiAg
ICAgaWYgKG1fZGVjb2RlZFNpemUpCkBAIC0yOTEsNiArMjU4LDM4IEBAIGJvb2wgQml0bWFwSW1h
Z2U6OmVuc3VyZUZyYW1lSXNDYWNoZWQoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIEJpdG1hcEltYWdlOjpjYWNoZUZyYW1lKHNpemVfdCBpbmRleCkKK3sKKyAgICBz
aXplX3QgbnVtRnJhbWVzID0gZnJhbWVDb3VudCgpOworICAgIGlmIChtX2ZyYW1lcy5zaXplKCkg
PCBudW1GcmFtZXMpCisgICAgICAgIG1fZnJhbWVzLmdyb3cobnVtRnJhbWVzKTsKKworICAgIG1f
c291cmNlLnJlcXVlc3RGcmFtZUF0SW5kZXgoaW5kZXgpOworfQorCit2b2lkIEJpdG1hcEltYWdl
OjpkaWRSZWNlaXZlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCwgY29uc3QgSW1hZ2VGcmFtZURh
dGEmIGltYWdlRnJhbWVEYXRhKQoreworICAgIG1fZnJhbWVzW2luZGV4XS5zZXRGcm9tSW1hZ2VG
cmFtZURhdGEoaW1hZ2VGcmFtZURhdGEpOworCisgICAgc2l6ZV90IG51bUZyYW1lcyA9IGZyYW1l
Q291bnQoKTsKKyAgICBpZiAobnVtRnJhbWVzID09IDEgJiYgbV9mcmFtZXNbaW5kZXhdLm1fZnJh
bWUpCisgICAgICAgIGNoZWNrRm9yU29saWRDb2xvcigpOworCisgICAgY29uc3QgSW50U2l6ZSBm
cmFtZVNpemUoaW5kZXggPyBtX3NvdXJjZS5mcmFtZVNpemVBdEluZGV4KGluZGV4KSA6IG1fc2l6
ZSk7CisgICAgaWYgKGZyYW1lU2l6ZSAhPSBtX3NpemUpCisgICAgICAgIG1faGFzVW5pZm9ybUZy
YW1lU2l6ZSA9IGZhbHNlOworICAgIGlmIChtX2ZyYW1lc1tpbmRleF0ubV9mcmFtZSkgeworICAg
ICAgICBpbnQgZGVsdGFCeXRlcyA9IGZyYW1lQnl0ZXMoZnJhbWVTaXplKTsKKyAgICAgICAgbV9k
ZWNvZGVkU2l6ZSArPSBkZWx0YUJ5dGVzOworICAgICAgICAvLyBUaGUgZnVsbHktZGVjb2RlZCBm
cmFtZSB3aWxsIHN1YnN1bWUgdGhlIHBhcnRpYWxseSBkZWNvZGVkIGRhdGEgdXNlZAorICAgICAg
ICAvLyB0byBkZXRlcm1pbmUgaW1hZ2UgcHJvcGVydGllcy4KKyAgICAgICAgZGVsdGFCeXRlcyAt
PSBtX2RlY29kZWRQcm9wZXJ0aWVzU2l6ZTsKKyAgICAgICAgbV9kZWNvZGVkUHJvcGVydGllc1Np
emUgPSAwOworICAgICAgICBpZiAoaW1hZ2VPYnNlcnZlcigpKQorICAgICAgICAgICAgaW1hZ2VP
YnNlcnZlcigpLT5kZWNvZGVkU2l6ZUNoYW5nZWQodGhpcywgZGVsdGFCeXRlcyk7CisgICAgfQor
fQorCiBOYXRpdmVJbWFnZVB0ciBCaXRtYXBJbWFnZTo6ZnJhbWVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoIWVuc3VyZUZyYW1lSXNDYWNoZWQoaW5kZXgpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggNjRjODFjNy4uYjQ3
ZWNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFw
SW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFn
ZS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJDb2xv
ci5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVNvdXJj
ZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogCiAjaWYgUExBVEZPUk0oTUFDKQpA
QCAtODIsNiArODMsMTcgQEAgcHVibGljOgogICAgICAgICBjbGVhcih0cnVlKTsKICAgICB9CiAK
KyAgICB2b2lkIHNldEZyb21JbWFnZUZyYW1lRGF0YShjb25zdCBJbWFnZUZyYW1lRGF0YSYgZGF0
YSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9mcmFtZSk7CisgICAgICAgIG1fZnJhbWUgPSBk
YXRhLm1fZnJhbWU7CisgICAgICAgIG1fb3JpZW50YXRpb24gPSBkYXRhLm1fb3JpZW50YXRpb247
CisgICAgICAgIG1fZHVyYXRpb24gPSBkYXRhLm1fZHVyYXRpb247CisgICAgICAgIG1faGF2ZU1l
dGFkYXRhID0gZGF0YS5tX2hhdmVNZXRhZGF0YTsKKyAgICAgICAgbV9pc0NvbXBsZXRlID0gZGF0
YS5tX2lzQ29tcGxldGU7CisgICAgICAgIG1faGFzQWxwaGEgPSBkYXRhLm1faGFzQWxwaGE7Cisg
ICAgfQorCiAgICAgLy8gQ2xlYXIgdGhlIGNhY2hlZCBpbWFnZSBkYXRhIG9uIHRoZSBmcmFtZSwg
YW5kIChvcHRpb25hbGx5KSB0aGUgbWV0YWRhdGEuCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRo
ZXJlIHdhcyBjYWNoZWQgaW1hZ2UgZGF0YSB0byBjbGVhci4KICAgICBib29sIGNsZWFyKGJvb2wg
Y2xlYXJNZXRhZGF0YSk7CkBAIC05OCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAvLyBCaXRtYXBJbWFn
ZSBDbGFzcwogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQogCi1jbGFzcyBCaXRtYXBJbWFnZSA6IHB1YmxpYyBJbWFnZSB7CitjbGFzcyBCaXRtYXBJ
bWFnZSA6IHB1YmxpYyBJbWFnZSwgcHVibGljIEltYWdlU291cmNlT2JzZXJ2ZXIgewogICAgIGZy
aWVuZCBjbGFzcyBHZW5lcmF0ZWRJbWFnZTsKICAgICBmcmllbmQgY2xhc3MgQ3Jvc3NmYWRlR2Vu
ZXJhdGVkSW1hZ2U7CiAgICAgZnJpZW5kIGNsYXNzIEdlbmVyYXRvckdlbmVyYXRlZEltYWdlOwpA
QCAtMTc5LDYgKzE5MSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgbm90U29saWRDb2xv
cigpOwogI2VuZGlmCiAKKyAgICAvLyBJbWFnZVNvdXJjZU9ic2VydmVyCisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYp
OworCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlU2l6ZSgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggNzVlZDVh
MS4uMDlhOTg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcApAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAg
VG9rZXIgPGFscC50b2tlckBjb2xsYWJvcmEuY28udWs+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDct
MjAwOSBUb3JjaCBNb2JpbGUsIEluYworICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAw
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzIsNiArMzMsNyBAQAogI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogCiAjaW5jbHVk
ZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlU291cmNlT2JzZXJ2ZXIuaCIK
ICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00
Miw2ICs0NCwxNSBAQCB1bnNpZ25lZCBJbWFnZVNvdXJjZTo6c19tYXhQaXhlbHNQZXJEZWNvZGVk
SW1hZ2UgPSAxMDI0ICogMTAyNDsKIAogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291
cmNlOjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9kZWNvZGVy
KDApCisgICAgLCBtX29ic2VydmVyKDApCisgICAgLCBtX2FscGhhT3B0aW9uKGFscGhhT3B0aW9u
KQorICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKK3sKK30KKworSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNlT2Jz
ZXJ2ZXIqIG9ic2VydmVyLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIElt
YWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKKyAgICA6IG1fZGVjb2RlcigwKQorICAgICwgbV9vYnNlcnZlcihvYnNlcnZlcikK
ICAgICAsIG1fYWxwaGFPcHRpb24oYWxwaGFPcHRpb24pCiAgICAgLCBtX2dhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewpAQCAtMTM3LDM0ICsx
NDgsNDQgQEAgc2l6ZV90IEltYWdlU291cmNlOjpmcmFtZUNvdW50KCkgY29uc3QKICAgICByZXR1
cm4gbV9kZWNvZGVyID8gbV9kZWNvZGVyLT5mcmFtZUNvdW50KCkgOiAwOwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKK3Zv
aWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4KQoreworICAg
IEFTU0VSVChtX29ic2VydmVyKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZyYW1lRGF0YSA9
IGNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgbV9vYnNlcnZlci0+ZGlkUmVjZWl2ZUZy
YW1lQXRJbmRleChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworfQorCitJbWFnZUZyYW1lRGF0YSBJ
bWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAo
IW1fZGVjb2RlcikKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBJbWFnZUZyYW1l
RGF0YSgpOwogCiAgICAgSW1hZ2VGcmFtZSogYnVmZmVyID0gbV9kZWNvZGVyLT5mcmFtZUJ1ZmZl
ckF0SW5kZXgoaW5kZXgpOwogICAgIGlmICghYnVmZmVyIHx8IGJ1ZmZlci0+c3RhdHVzKCkgPT0g
SW1hZ2VGcmFtZTo6RnJhbWVFbXB0eSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBJbWFnZUZyYW1lRGF0YSgpOworCisgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VGcmFtZURhdGE7
CiAKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21l
IHBvcnRzLiAgSWYgd2UgaGF2ZSBhbgogICAgIC8vIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVz
dCBiYWlsLgotICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKKyAg
ICBpZiAoIXNpemUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gUmV0dXJuIHRoZSBidWZmZXIg
Y29udGVudHMgYXMgYSBuYXRpdmUgaW1hZ2UuIEZvciBzb21lIHBvcnRzLCB0aGUgZGF0YQorICAg
ICAgICAvLyBpcyBhbHJlYWR5IGluIGEgbmF0aXZlIGNvbnRhaW5lciwgYW5kIHRoaXMganVzdCBp
bmNyZW1lbnRzIGl0cyByZWZjb3VudC4KKyAgICAgICAgaW1hZ2VGcmFtZURhdGEubV9mcmFtZSA9
IGJ1ZmZlci0+YXNOZXdOYXRpdmVJbWFnZSgpOworICAgIH0KKworICAgIGltYWdlRnJhbWVEYXRh
Lm1fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbkF0SW5kZXgoYnVmZmVyKTsKKyAgICBpbWFnZUZy
YW1lRGF0YS5tX2hhdmVNZXRhZGF0YSA9IHRydWU7CisgICAgaW1hZ2VGcmFtZURhdGEubV9pc0Nv
bXBsZXRlID0gZnJhbWVJc0NvbXBsZXRlQXRJbmRleChidWZmZXIpOworICAgIGlmIChyZXBldGl0
aW9uQ291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgaW1hZ2VGcmFtZURhdGEubV9k
dXJhdGlvbiA9IGZyYW1lRHVyYXRpb25BdEluZGV4KGJ1ZmZlcik7CisgICAgaW1hZ2VGcmFtZURh
dGEubV9oYXNBbHBoYSA9IGZyYW1lSGFzQWxwaGFBdEluZGV4KGJ1ZmZlcik7CiAKLSAgICAvLyBS
ZXR1cm4gdGhlIGJ1ZmZlciBjb250ZW50cyBhcyBhIG5hdGl2ZSBpbWFnZS4gIEZvciBzb21lIHBv
cnRzLCB0aGUgZGF0YQotICAgIC8vIGlzIGFscmVhZHkgaW4gYSBuYXRpdmUgY29udGFpbmVyLCBh
bmQgdGhpcyBqdXN0IGluY3JlbWVudHMgaXRzIHJlZmNvdW50LgotICAgIHJldHVybiBidWZmZXIt
PmFzTmV3TmF0aXZlSW1hZ2UoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKLWZs
b2F0IEltYWdlU291cmNlOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCitmbG9h
dCBJbWFnZVNvdXJjZTo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoSW1hZ2VGcmFtZSogYnVmZmVyKQog
ewotICAgIGlmICghbV9kZWNvZGVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEltYWdlRnJh
bWUqIGJ1ZmZlciA9IG1fZGVjb2Rlci0+ZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKLSAgICBp
ZiAoIWJ1ZmZlciB8fCBidWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lRW1wdHkp
Ci0gICAgICAgIHJldHVybiAwOwotCiAgICAgLy8gTWFueSBhbm5veWluZyBhZHMgc3BlY2lmeSBh
IDAgZHVyYXRpb24gdG8gbWFrZSBhbiBpbWFnZSBmbGFzaCBhcyBxdWlja2x5IGFzIHBvc3NpYmxl
LgogICAgIC8vIFdlIGZvbGxvdyBGaXJlZm94J3MgYmVoYXZpb3IgYW5kIHVzZSBhIGR1cmF0aW9u
IG9mIDEwMCBtcyBmb3IgYW55IGZyYW1lcyB0aGF0IHNwZWNpZnkKICAgICAvLyBhIGR1cmF0aW9u
IG9mIDw9IDEwIG1zLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzc2ODkzMDA+IGFuZCA8aHR0cDovL3dl
YmtpdC5vcmcvYi8zNjA4Mj4KQEAgLTE3NSwxNCArMTk2LDE0IEBAIGZsb2F0IEltYWdlU291cmNl
OjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIGR1cmF0aW9u
OwogfQogCi1JbWFnZU9yaWVudGF0aW9uIEltYWdlU291cmNlOjpvcmllbnRhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAorSW1hZ2VPcmllbnRhdGlvbiBJbWFnZVNvdXJjZTo6b3JpZW50
YXRpb25BdEluZGV4KEltYWdlRnJhbWUqKSBjb25zdAogewogICAgIC8vIFRoZSBKUEVHIGFuZCBU
SUZGIGRlY29kZXJzIG5lZWQgdG8gYmUgdGF1Z2h0IGhvdyB0byByZWFkIEVYSUYsIFhNUCwgb3Ig
SVBUQyBkYXRhLgogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIERlZmF1bHRJbWFn
ZU9yaWVudGF0aW9uOwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QgaW5kZXgpCitib29sIEltYWdlU291cmNlOjpmcmFtZUhhc0FscGhhQXRJbmRleChJ
bWFnZUZyYW1lKiBidWZmZXIpCiB7CiAgICAgLy8gV2hlbiBhIGZyYW1lIGhhcyBub3QgZmluaXNo
ZWQgZGVjb2RpbmcsIGFsd2F5cyBtYXJrIGl0IGFzIGhhdmluZyBhbHBoYS4KICAgICAvLyBQb3J0
cyB0aGF0IGNoZWNrIHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhl
aXIKQEAgLTE5MCwxNyArMjExLDEyIEBAIGJvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSGFzQWxwaGFB
dEluZGV4KHNpemVfdCBpbmRleCkKICAgICAvLyBibGFjay4KICAgICAvLyBUT0RPOiBQZXJoYXBz
IHdlIHNob3VsZCBlbnN1cmUgdGhhdCBlYWNoIGluZGl2aWR1YWwgZGVjb2RlciByZXR1cm5zIHRy
dWUKICAgICAvLyBpbiB0aGlzIGNhc2UuCi0gICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KGluZGV4KQotICAgICAgICB8fCBtX2RlY29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRl
eCktPmhhc0FscGhhKCk7CisgICAgcmV0dXJuICFmcmFtZUlzQ29tcGxldGVBdEluZGV4KGJ1ZmZl
cikgfHwgYnVmZmVyLT5oYXNBbHBoYSgpOwogfQogCi1ib29sIEltYWdlU291cmNlOjpmcmFtZUlz
Q29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKK2Jvb2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXND
b21wbGV0ZUF0SW5kZXgoSW1hZ2VGcmFtZSogYnVmZmVyKQogewotICAgIGlmICghbV9kZWNvZGVy
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBtX2Rl
Y29kZXItPmZyYW1lQnVmZmVyQXRJbmRleChpbmRleCk7Ci0gICAgcmV0dXJuIGJ1ZmZlciAmJiBi
dWZmZXItPnN0YXR1cygpID09IEltYWdlRnJhbWU6OkZyYW1lQ29tcGxldGU7CisgICAgcmV0dXJu
IGJ1ZmZlci0+c3RhdHVzKCkgPT0gSW1hZ2VGcmFtZTo6RnJhbWVDb21wbGV0ZTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmgKaW5kZXgg
ZWQ2MjViYy4uNTEwNWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZVNvdXJjZS5oCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwNy0yMDA4IFRvcmNoIE1vYmlsZSwgSW5jLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIENvbXBhbnkgMTAwIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNTcsNyArNTgsMTEgQEAgY2xhc3MgTmF0aXZl
SW1hZ2VTa2lhOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAhVVNFKENHKQorY2xhc3Mg
SW1hZ2VGcmFtZTsKKyNlbmRpZgogY2xhc3MgSW1hZ2VPcmllbnRhdGlvbjsKK2NsYXNzIEltYWdl
U291cmNlT2JzZXJ2ZXI7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFNpemU7CiBjbGFzcyBT
aGFyZWRCdWZmZXI7CkBAIC05NCw2ICs5OSwzNCBAQCB0eXBlZGVmIFFQaXhtYXAqIE5hdGl2ZUlt
YWdlUHRyOwogI2VuZGlmCiAjZW5kaWYKIAorLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisvLyBJbWFnZUZyYW1lRGF0YSBDbGFzcworLy8gPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK3N0cnVjdCBJbWFn
ZUZyYW1lRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VGcmFtZURhdGEoKQorICAgICAgICA6IG1f
ZnJhbWUoMCkKKyAgICAgICAgLCBtX29yaWVudGF0aW9uKERlZmF1bHRJbWFnZU9yaWVudGF0aW9u
KQorICAgICAgICAsIG1fZHVyYXRpb24oMCkKKyAgICAgICAgLCBtX2hhdmVNZXRhZGF0YShmYWxz
ZSkKKyAgICAgICAgLCBtX2lzQ29tcGxldGUoZmFsc2UpCisgICAgICAgICwgbV9oYXNBbHBoYSh0
cnVlKQorICAgIHsKKyAgICB9CisKKyAgICBOYXRpdmVJbWFnZVB0ciBtX2ZyYW1lOworICAgIElt
YWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKKyAgICBmbG9hdCBtX2R1cmF0aW9uOworICAg
IGJvb2wgbV9oYXZlTWV0YWRhdGEgOiAxOworICAgIGJvb2wgbV9pc0NvbXBsZXRlIDogMTsKKyAg
ICBib29sIG1faGFzQWxwaGEgOiAxOworfTsKKworLy8gPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQml0bWFwSW1hZ2UgQ2xhc3MKKy8vID09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogLy8gUmlnaHQg
bm93IEdJRnMgYXJlIHRoZSBvbmx5IHJlY29nbml6ZWQgaW1hZ2UgZm9ybWF0IHRoYXQgc3VwcG9y
dHMgYW5pbWF0aW9uLgogLy8gVGhlIGFuaW1hdGlvbiBzeXN0ZW0gYW5kIHRoZSBjb25zdGFudHMg
YmVsb3cgYXJlIGRlc2lnbmVkIHdpdGggdGhpcyBpbiBtaW5kLgogLy8gR0lGcyBoYXZlIGFuIG9w
dGlvbmFsIDE2LWJpdCB1bnNpZ25lZCBsb29wIGNvdW50IHRoYXQgZGVzY3JpYmVzIGhvdyBhbgpA
QCAtMTMyLDcgKzE2NSw4IEBAIHB1YmxpYzoKICAgICB9OwogI2VuZGlmCiAKLSAgICBJbWFnZVNv
dXJjZShBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiA9IEFscGhhUHJlbXVsdGlwbGllZCwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPSBHYW1tYUFu
ZENvbG9yUHJvZmlsZUFwcGxpZWQpOworICAgIEltYWdlU291cmNlKEFscGhhT3B0aW9uID0gQWxw
aGFQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9IEdhbW1hQW5kQ29s
b3JQcm9maWxlQXBwbGllZCk7CisgICAgSW1hZ2VTb3VyY2UoSW1hZ2VTb3VyY2VPYnNlcnZlcios
IEFscGhhT3B0aW9uID0gQWxwaGFQcmVtdWx0aXBsaWVkLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiA9IEdhbW1hQW5kQ29sb3JQcm9maWxlQXBwbGllZCk7CiAgICAgfkltYWdlU291cmNlKCk7
CiAKICAgICAvLyBUZWxscyB0aGUgSW1hZ2VTb3VyY2UgdGhhdCB0aGUgSW1hZ2Ugbm8gbG9uZ2Vy
IGNhcmVzIGFib3V0IGRlY29kZWQgZnJhbWUKQEAgLTE4MCwxMiArMjE0LDggQEAgcHVibGljOgog
CiAgICAgLy8gQ2FsbGVycyBzaG91bGQgbm90IGNhbGwgdGhpcyBhZnRlciBjYWxsaW5nIGNsZWFy
KCkgd2l0aCBhIGhpZ2hlciBpbmRleDsKICAgICAvLyBzZWUgY29tbWVudHMgb24gY2xlYXIoKSBh
Ym92ZS4KLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUF0SW5kZXgoc2l6ZV90KTsKLQot
ICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgYm9vbCBmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5vdCB0aGUgZnJhbWUgYWN0dWFs
bHkgdXNlZCBhbnkgYWxwaGEuCi0gICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVf
dCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21wbGV0ZWx5IGRlY29kZWQuCi0g
ICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsgLy8g
RVhJRiBpbWFnZSBvcmllbnRhdGlvbgorICAgIHZvaWQgcmVxdWVzdEZyYW1lQXRJbmRleChzaXpl
X3QpOworICAgIEltYWdlRnJhbWVEYXRhIGNyZWF0ZUZyYW1lQXRJbmRleChzaXplX3QpOwogCiAj
aWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKICAgICBzdGF0aWMgdW5zaWdu
ZWQgbWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkgeyByZXR1cm4gc19tYXhQaXhlbHNQZXJEZWNv
ZGVkSW1hZ2U7IH0KQEAgLTE5Myw3ICsyMjMsMjAgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZh
dGU6CisjaWYgVVNFKENHKQorICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7
CisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOyAvLyBXaGV0aGVyIG9yIG5v
dCB0aGUgZnJhbWUgYWN0dWFsbHkgdXNlZCBhbnkgYWxwaGEuCisgICAgYm9vbCBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCk7IC8vIFdoZXRoZXIgb3Igbm90IHRoZSBmcmFtZSBpcyBjb21w
bGV0ZWx5IGRlY29kZWQuCisgICAgSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbkF0SW5kZXgo
c2l6ZV90KSBjb25zdDsgLy8gRVhJRiBpbWFnZSBvcmllbnRhdGlvbgorI2Vsc2UKKyAgICBmbG9h
dCBmcmFtZUR1cmF0aW9uQXRJbmRleChJbWFnZUZyYW1lKik7CisgICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChJbWFnZUZyYW1lKik7CisgICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4
KEltYWdlRnJhbWUqKTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uQXRJbmRleChJ
bWFnZUZyYW1lKikgY29uc3Q7CisjZW5kaWYKKwogICAgIE5hdGl2ZUltYWdlU291cmNlUHRyIG1f
ZGVjb2RlcjsKKyAgICBJbWFnZVNvdXJjZU9ic2VydmVyKiBtX29ic2VydmVyOwogICAgIEFscGhh
T3B0aW9uIG1fYWxwaGFPcHRpb247CiAgICAgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gbV9n
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjsKICNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2VPYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2VPYnNlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjcyYWY3MDhjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VTb3VyY2VPYnNlcnZlci5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQ29tcGFueSAxMDAgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEltYWdlU291cmNlT2JzZXJ2ZXJfaAorI2RlZmluZSBJbWFnZVNvdXJjZU9i
c2VydmVyX2gKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbWFnZUZyYW1lRGF0YTsK
KworLy8gSW50ZXJmYWNlIGZvciBub3RpZmljYXRpb24gYWJvdXQgY2hhbmdlcyB0byBhbiBJbWFn
ZVNvdXJjZSwgaW5jbHVkaW5nIGRlY29kaW5nLgorY2xhc3MgSW1hZ2VTb3VyY2VPYnNlcnZlciB7
CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVGcmFtZUF0SW5kZXgoc2l6ZV90
LCBjb25zdCBJbWFnZUZyYW1lRGF0YSYpID0gMDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwg
fkltYWdlU291cmNlT2JzZXJ2ZXIoKSB7IH0KK307CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9CaXRtYXBJbWFnZUNhaXJv
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdl
Q2Fpcm8uY3BwCmluZGV4IGU5ZmE1YmUuLjY2N2QwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0JpdG1hcEltYWdlQ2Fpcm8uY3Bw
CkBAIC00Miw2ICs0Miw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwSW1hZ2U+IEJpdG1hcEltYWdlOjpj
cmVhdGUoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlKQogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1h
Z2UoTmF0aXZlSW1hZ2VDYWlybyogbmF0aXZlSW1hZ2UsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVy
KQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX3NvdXJjZSh0aGlzKQogICAgICwgbV9j
dXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDApCiAgICAgLCBtX2ZyYW1lVGltZXIoMCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dDNEQ2Fpcm8uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKaW5kZXggYWMyOTJkMy4uMDRjOGEwYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0M0RDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0M0RDYWlyby5jcHAKQEAgLTE1Nyw5ICsxNTcsMTIgQEAg
Ym9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwgdW5zaWdu
ZWQgaW50IGZvcm1hdCwgdW5zaWduZWQKICAgICBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBpbWFn
ZVN1cmZhY2U7CiAgICAgaWYgKGltYWdlLT5kYXRhKCkpIHsKICAgICAgICAgZGVjb2Rlci5zZXRE
YXRhKGltYWdlLT5kYXRhKCksIHRydWUpOwotICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3Vu
dCgpIHx8ICFkZWNvZGVyLmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoMCkpCisgICAgICAgIGlmICgh
ZGVjb2Rlci5mcmFtZUNvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IE93blB0cjxOYXRpdmVJbWFnZUNhaXJvPiBuYXRpdmVJbWFnZSA9IGFkb3B0UHRyKGRlY29kZXIu
Y3JlYXRlRnJhbWVBdEluZGV4KDApKTsKKyAgICAgICAgSW1hZ2VGcmFtZURhdGEgaW1hZ2VJbWFn
ZUZyYW1lRGF0YSA9IGRlY29kZXIuY3JlYXRlRnJhbWVBdEluZGV4KDApOworICAgICAgICBpZiAo
IWltYWdlSW1hZ2VGcmFtZURhdGEubV9pc0NvbXBsZXRlKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBPd25QdHI8TmF0aXZlSW1hZ2VDYWlybz4gbmF0aXZlSW1hZ2UgPSBhZG9w
dFB0cihpbWFnZUltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgICAgICBpbWFnZVN1cmZhY2Ug
PSBuYXRpdmVJbWFnZS0+c3VyZmFjZSgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGltYWdlU3Vy
ZmFjZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpLT5zdXJmYWNlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHQzRENHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dDNEQ0cuY3BwCmluZGV4IGUwNDRiOGQuLjNmZDhmZjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4
dDNEQ0cuY3BwCkBAIC0xMDcsNyArMTA3LDggQEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0
SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgZGVjb2Rlci5zZXREYXRhKGltYWdlLT5k
YXRhKCksIHRydWUpOwogICAgICAgICBpZiAoIWRlY29kZXIuZnJhbWVDb3VudCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBkZWNvZGVkSW1hZ2UuYWRvcHRDRihkZWNvZGVy
LmNyZWF0ZUZyYW1lQXRJbmRleCgwKSk7CisgICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJh
bWVEYXRhID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIGRlY29kZWRJ
bWFnZS5hZG9wdENGKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgICAgICBjZ0ltYWdlID0g
ZGVjb2RlZEltYWdlLmdldCgpOwogICAgIH0gZWxzZQogICAgICAgICBjZ0ltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCmluZGV4IGZlZDkxMWEuLmZmY2Y5ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQ0cuY3BwCkBAIC03
MCw2ICs3MCw3IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAK
IEJpdG1hcEltYWdlOjpCaXRtYXBJbWFnZShDR0ltYWdlUmVmIGNnSW1hZ2UsIEltYWdlT2JzZXJ2
ZXIqIG9ic2VydmVyKQogICAgIDogSW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX3NvdXJjZSh0aGlz
KQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICAgICAsIG1fZnJhbWVzKDApCiAgICAgLCBtX2Zy
YW1lVGltZXIoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NnL0ltYWdlU291cmNlQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VTb3VyY2VDRy5jcHAKaW5kZXggNDMzNTM2NS4uNGJlODJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VTb3VyY2VDRy5jcHAK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCiAKICNpbmNsdWRl
ICJJbWFnZU9yaWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW1hZ2VTb3VyY2VPYnNlcnZlci5oIgog
I2luY2x1ZGUgIkludFBvaW50LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKQEAgLTcyLDEyICs3MywyMSBAQCB2b2lkIHNoYXJlZEJ1ZmZlclJl
bGVhc2Uodm9pZCogaW5mbykKIAogSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291cmNl
OjpBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgSW1hZ2VTb3VyY2U6OkdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgIDogbV9kZWNvZGVyKDAp
CisgICAgLCBtX29ic2VydmVyKDApCiAgICAgLy8gRklYTUU6IG1fcHJlbXVsdGlwbHlBbHBoYSBp
cyBpZ25vcmVkIGluIGNnIGF0IHRoZSBtb21lbnQuCiAgICAgLCBtX2FscGhhT3B0aW9uKGFscGhh
T3B0aW9uKQogICAgICwgbV9nYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbihnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKIH0KIAorSW1hZ2VTb3VyY2U6OkltYWdlU291cmNlKEltYWdlU291
cmNlT2JzZXJ2ZXIqIG9ic2VydmVyLCBJbWFnZVNvdXJjZTo6QWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEltYWdlU291cmNlOjpHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKKyAgICA6IG1fZGVjb2RlcigwKQorICAgICwgbV9vYnNlcnZlcihvYnNl
cnZlcikKKyAgICAsIG1fYWxwaGFPcHRpb24oYWxwaGFPcHRpb24pCisgICAgLCBtX2dhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQoreworfQorCiBJ
bWFnZVNvdXJjZTo6fkltYWdlU291cmNlKCkKIHsKICAgICBjbGVhcih0cnVlKTsKQEAgLTI5OSwy
NCArMzA5LDQyIEBAIHNpemVfdCBJbWFnZVNvdXJjZTo6ZnJhbWVDb3VudCgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fZGVjb2RlciA/IENHSW1hZ2VTb3VyY2VHZXRDb3VudChtX2RlY29kZXIpIDogMDsK
IH0KIAotQ0dJbWFnZVJlZiBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBp
bmRleCkKK3ZvaWQgSW1hZ2VTb3VyY2U6OnJlcXVlc3RGcmFtZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQoreworICAgIEFTU0VSVChtX29ic2VydmVyKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFnZUZy
YW1lRGF0YSA9IGNyZWF0ZUZyYW1lQXRJbmRleChpbmRleCk7CisgICAgbV9vYnNlcnZlci0+ZGlk
UmVjZWl2ZUZyYW1lQXRJbmRleChpbmRleCwgaW1hZ2VGcmFtZURhdGEpOworfQorCitJbWFnZUZy
YW1lRGF0YSBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsK
ICAgICBpZiAoIWluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gSW1hZ2VGcmFtZURhdGEoKTsKKworICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRh
OwogCiAgICAgUmV0YWluUHRyPENHSW1hZ2VSZWY+IGltYWdlKEFkb3B0Q0YsIENHSW1hZ2VTb3Vy
Y2VDcmVhdGVJbWFnZUF0SW5kZXgobV9kZWNvZGVyLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRpb25z
KFNraXBNZXRhZGF0YSkpKTsKICAgICBDRlN0cmluZ1JlZiBpbWFnZVVUSSA9IENHSW1hZ2VTb3Vy
Y2VHZXRUeXBlKG1fZGVjb2Rlcik7CiAgICAgc3RhdGljIGNvbnN0IENGU3RyaW5nUmVmIHhibVVU
SSA9IENGU1RSKCJwdWJsaWMueGJpdG1hcC1pbWFnZSIpOwogICAgIGlmICghaW1hZ2VVVEkgfHwg
IUNGRXF1YWwoaW1hZ2VVVEksIHhibVVUSSkpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVm
KCk7CisgICAgICAgIGltYWdlRnJhbWVEYXRhLm1fZnJhbWUgPSBpbWFnZS5sZWFrUmVmKCk7CiAg
ICAgCiAgICAgLy8gSWYgaXQgaXMgYW4geGJtIGltYWdlLCBtYXNrIG91dCBhbGwgdGhlIHdoaXRl
IGFyZWFzIHRvIHJlbmRlciB0aGVtIHRyYW5zcGFyZW50LgogICAgIGNvbnN0IENHRmxvYXQgbWFz
a2luZ0NvbG9yc1s2XSA9IHsyNTUsIDI1NSwgIDI1NSwgMjU1LCAyNTUsIDI1NX07CiAgICAgUmV0
YWluUHRyPENHSW1hZ2VSZWY+IG1hc2tlZEltYWdlKEFkb3B0Q0YsIENHSW1hZ2VDcmVhdGVXaXRo
TWFza2luZ0NvbG9ycyhpbWFnZS5nZXQoKSwgbWFza2luZ0NvbG9ycykpOwogICAgIGlmICghbWFz
a2VkSW1hZ2UpCi0gICAgICAgIHJldHVybiBpbWFnZS5sZWFrUmVmKCk7CisgICAgICAgIGltYWdl
RnJhbWVEYXRhLm1fZnJhbWUgPSBpbWFnZS5sZWFrUmVmKCk7CisKKyAgICBpbWFnZUZyYW1lRGF0
YS5tX2ZyYW1lID0gbWFza2VkSW1hZ2UubGVha1JlZigpOworCisgICAgaW1hZ2VGcmFtZURhdGEu
bV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uQXRJbmRleChpbmRleCk7CisgICAgaW1hZ2VGcmFt
ZURhdGEubV9oYXZlTWV0YWRhdGEgPSB0cnVlOworICAgIGltYWdlRnJhbWVEYXRhLm1faXNDb21w
bGV0ZSA9IGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpOworICAgIGlmIChyZXBldGl0aW9u
Q291bnQoKSAhPSBjQW5pbWF0aW9uTm9uZSkKKyAgICAgICAgaW1hZ2VGcmFtZURhdGEubV9kdXJh
dGlvbiA9IGZyYW1lRHVyYXRpb25BdEluZGV4KGluZGV4KTsKKyAgICBpbWFnZUZyYW1lRGF0YS5t
X2hhc0FscGhhID0gZnJhbWVIYXNBbHBoYUF0SW5kZXgoaW5kZXgpOwogCi0gICAgcmV0dXJuIG1h
c2tlZEltYWdlLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gaW1hZ2VGcmFtZURhdGE7CiB9CiAKIGJv
b2wgSW1hZ2VTb3VyY2U6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3Bl
blZHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW52Zy9JbWFnZU9w
ZW5WRy5jcHAKaW5kZXggOTUxMDg4Mi4uZWI4MDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbnZnL0ltYWdlT3BlblZHLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVudmcvSW1hZ2VPcGVuVkcuY3BwCkBAIC01Miw2
ICs1Miw3IEBAIGJvb2wgRnJhbWVEYXRhOjpjbGVhcihib29sIGNsZWFyTWV0YWRhdGEpCiAKIEJp
dG1hcEltYWdlOjpCaXRtYXBJbWFnZShUaWxlZEltYWdlT3BlblZHKiB0aWxlZEltYWdlLCBJbWFn
ZU9ic2VydmVyKiBvYnNlcnZlcikKICAgICA6IEltYWdlKG9ic2VydmVyKQorICAgICwgbV9zb3Vy
Y2UodGhpcykKICAgICAsIG1fc2l6ZSh0aWxlZEltYWdlLT5zaXplKCkpCiAgICAgLCBtX2N1cnJl
bnRGcmFtZSgwKQogICAgICwgbV9mcmFtZXMoMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggZTA5OGUwOS4uZGFmMDBiZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAgLTE5
Niw2ICsxOTYsNyBAQCB2b2lkIEltYWdlOjpkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQqIGN0
eHQsIGNvbnN0IEZsb2F0UmVjdCYgdGlsZVJlY3QsIGNvbnN0CiAKIEJpdG1hcEltYWdlOjpCaXRt
YXBJbWFnZShRUGl4bWFwKiBwaXhtYXAsIEltYWdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogICAgIDog
SW1hZ2Uob2JzZXJ2ZXIpCisgICAgLCBtX3NvdXJjZSh0aGlzKQogICAgICwgbV9jdXJyZW50RnJh
bWUoMCkKICAgICAsIG1fZnJhbWVzKDApCiAgICAgLCBtX2ZyYW1lVGltZXIoMCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0
M0RTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhp
Y3NDb250ZXh0M0RTa2lhLmNwcAppbmRleCAwMTkwMzdjLi43NjlmMjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dDNEU2tp
YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGlj
c0NvbnRleHQzRFNraWEuY3BwCkBAIC02MCwxMCArNjAsMTMgQEAgYm9vbCBHcmFwaGljc0NvbnRl
eHQzRDo6Z2V0SW1hZ2VEYXRhKEltYWdlKiBpbWFnZSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEltYWdlU291cmNlOjpHYW1tYUFuZENv
bG9yUHJvZmlsZUlnbm9yZWQgOiBJbWFnZVNvdXJjZTo6R2FtbWFBbmRDb2xvclByb2ZpbGVBcHBs
aWVkKTsKICAgICAgICAgLy8gQXR0ZW1wdCB0byBnZXQgcmF3IHVucHJlbXVsdGlwbGllZCBpbWFn
ZSBkYXRhIAogICAgICAgICBkZWNvZGVyLnNldERhdGEoaW1hZ2UtPmRhdGEoKSwgdHJ1ZSk7Ci0g
ICAgICAgIGlmICghZGVjb2Rlci5mcmFtZUNvdW50KCkgfHwgIWRlY29kZXIuZnJhbWVJc0NvbXBs
ZXRlQXRJbmRleCgwKSkKKyAgICAgICAgaWYgKCFkZWNvZGVyLmZyYW1lQ291bnQoKSkKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaGFzQWxwaGEgPSBkZWNvZGVyLmZyYW1lSGFz
QWxwaGFBdEluZGV4KDApOwotICAgICAgICBwaXhlbHMgPSBhZG9wdFB0cihkZWNvZGVyLmNyZWF0
ZUZyYW1lQXRJbmRleCgwKSk7CisgICAgICAgIEltYWdlRnJhbWVEYXRhIGltYWdlRnJhbWVEYXRh
ID0gZGVjb2Rlci5jcmVhdGVGcmFtZUF0SW5kZXgoMCk7CisgICAgICAgIGlmICghaW1hZ2VGcmFt
ZURhdGEubV9pc0NvbXBsZXRlKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBo
YXNBbHBoYSA9IGltYWdlRnJhbWVEYXRhLm1faGFzQWxwaGE7CisgICAgICAgIHBpeGVscyA9IGFk
b3B0UHRyKGltYWdlRnJhbWVEYXRhLm1fZnJhbWUpOwogICAgICAgICBpZiAoIXBpeGVscy5nZXQo
KSB8fCAhcGl4ZWxzLT5pc0RhdGFDb21wbGV0ZSgpIHx8ICFwaXhlbHMtPmJpdG1hcCgpLndpZHRo
KCkgfHwgIXBpeGVscy0+Yml0bWFwKCkuaGVpZ2h0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIFNrQml0bWFwOjpDb25maWcgc2tpYUNvbmZpZyA9IHBpeGVscy0+Yml0bWFw
KCkuY29uZmlnKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93eC9JbWFnZVd4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0lt
YWdlV3guY3BwCmluZGV4IDU0YmJkYmIuLjc0NjU1ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3d4L0ltYWdlV3guY3BwCkBAIC04Miw2ICs4Miw3IEBAIFBhc3NS
ZWZQdHI8SW1hZ2U+IEltYWdlOjpsb2FkUGxhdGZvcm1SZXNvdXJjZShjb25zdCBjaGFyICpuYW1l
KQogCiBCaXRtYXBJbWFnZTo6Qml0bWFwSW1hZ2UoY29uc3Qgd3hCaXRtYXAmIGJpdG1hcCkKICAg
ICA6IEltYWdlKDApCisgICAgLCBtX3NvdXJjZSh0aGlzKQogICAgICwgbV9jdXJyZW50RnJhbWUo
MCkKICAgICAsIG1fZnJhbWVzKDApCiAgICAgLCBtX2ZyYW1lVGltZXIoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggNzc1M2E4Ni4uMTExNGZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNy0wMyAgSHVhbmcgRG9uZ3N1bmcgIDxsdXh0
ZWxsYUBjb21wYW55MTAwLm5ldD4KKworICAgICAgICBQcmVwYXJlIGZvciBwYXJhbGxlbCBpbWFn
ZSBkZWNvZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA0NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4IHJldHVybnMgSW1hZ2VGcmFtZURhdGEg
aW5zdGVhZCBvZgorICAgICAgICBOYXRpdmVJbWFnZVB0ciwgc28gSSBhbWVuZGVkIFdlYkltYWdl
Q0cgYW5kIFdlYkltYWdlU2tpYSB0byB1c2UKKyAgICAgICAgY2hhbmdlZCBJbWFnZVNvdXJjZSBj
b3JyZWN0bHkuCisKKyAgICAgICAgKiBzcmMvV2ViSW1hZ2VDRy5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisgICAgICAgICogc3JjL1dlYkltYWdlU2tpYS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkltYWdlOjpmcm9tRGF0YSk6CisKIDIwMTItMDYtMjcgIFNo
ZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjE0MDUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJJbWFnZUNHLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlQ0cuY3BwCmluZGV4IDI0MmE2ODMuLjNiYWVhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkltYWdlQ0cuY3BwCkBAIC03Niw3ICs3Niw4IEBAIFdlYkltYWdlIFdlYklt
YWdlOjpmcm9tRGF0YShjb25zdCBXZWJEYXRhJiBkYXRhLCBjb25zdCBXZWJTaXplJiBkZXNpcmVk
U2l6ZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBmcmFt
ZShBZG9wdENGLCBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4KSk7CisgICAgSW1hZ2VG
cmFtZURhdGEgaW1hZ2VGcmFtZURhdGEgPSBzb3VyY2UuY3JlYXRlRnJhbWVBdEluZGV4KGluZGV4
KTsKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZnJhbWUoQWRvcHRDRiwgaW1hZ2VGcmFtZURh
dGEubV9mcmFtZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkltYWdlU2tpYS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbWFnZVNraWEuY3BwCmluZGV4IDM2
ZGFiYWMuLmZiMGRmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkltYWdlU2tpYS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW1hZ2VT
a2lhLmNwcApAQCAtNzcsNyArNzcsOCBAQCBXZWJJbWFnZSBXZWJJbWFnZTo6ZnJvbURhdGEoY29u
c3QgV2ViRGF0YSYgZGF0YSwgY29uc3QgV2ViU2l6ZSYgZGVzaXJlZFNpemUpCiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBPd25QdHI8TmF0aXZlSW1hZ2VTa2lhPiBmcmFtZSA9IGFkb3B0UHRyKHNv
dXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpKTsKKyAgICBJbWFnZUZyYW1lRGF0YSBpbWFn
ZUZyYW1lRGF0YSA9IHNvdXJjZS5jcmVhdGVGcmFtZUF0SW5kZXgoaW5kZXgpOworICAgIE93blB0
cjxOYXRpdmVJbWFnZVNraWE+IGZyYW1lID0gYWRvcHRQdHIoaW1hZ2VGcmFtZURhdGEubV9mcmFt
ZSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIFdlYkltYWdlKCk7CiAKLS0gCjEu
Ny45LjUKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>