<?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>230781</bug_id>
          
          <creation_ts>2021-09-24 18:21:16 -0700</creation_ts>
          <short_desc>[iOS][GPU Process] support `&lt;attachment&gt;`</short_desc>
          <delta_ts>2021-11-02 15:46:01 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230647</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>230912</dependson>
    
    <dependson>230913</dependson>
          <blocked>231244</blocked>
    
    <blocked>232645</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>annulen</cc>
    
    <cc>ayumi_kojima</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1797109</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-24 18:21:16 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797110</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-24 18:26:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/70884096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797114</commentid>
    <comment_count>2</comment_count>
      <attachid>439228</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-24 19:00:39 -0700</bug_when>
    <thetext>Created attachment 439228
Patch

very basic/straightforward initial approach</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797961</commentid>
    <comment_count>3</comment_count>
      <attachid>439496</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 11:10:55 -0700</bug_when>
    <thetext>Created attachment 439496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797983</commentid>
    <comment_count>4</comment_count>
      <attachid>439496</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-09-28 12:00:54 -0700</bug_when>
    <thetext>Comment on attachment 439496
Patch

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

Please make sure there is no EWS red before landing.

&gt; Source/WebCore/ChangeLog:18
&gt; +

Is there a reason this line is blank?

&gt; Source/WebCore/ChangeLog:28
&gt; +        * platform/graphics/coretext/DrawGlyphsRecorderCoreText.cpp: Renamed from Source/WebCore/platform/graphics/displaylists/DisplayListDrawGlyphsRecorderCoreText.cpp.
&gt; +        (WebCore::DrawGlyphsRecorder::createInternalContext):
&gt; +        (WebCore::DrawGlyphsRecorder::DrawGlyphsRecorder):
&gt; +        (WebCore::DrawGlyphsRecorder::populateInternalState):
&gt; +        (WebCore::DrawGlyphsRecorder::prepareInternalContext):
&gt; +        (WebCore::DrawGlyphsRecorder::recordDrawGlyphs):
&gt; +        (WebCore::DrawGlyphsRecorder::drawGlyphs):
&gt; +        (WebCore::DrawGlyphsRecorder::drawNativeText): Added.

What did you change here? Because you moved the file, the diff just shows all green so it&apos;s unclear what you changed.

&gt; Source/WebCore/platform/graphics/DrawGlyphsRecorder.h:58
&gt; +    void drawNativeText(CTLineRef, CGRect lineRect, CTFontRef, CGFloat fontSize);

nit: can the font go second instead of third?

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:357
&gt; +    virtual const GraphicsContextState&amp; lastStateChange() const { return m_state; }

is it a change? the variable name and the type name don&apos;t seem to indicate that it&apos;s a change.

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:475
&gt; +        drawGlyphs(font, glyphs, advances, count, localAnchor, smoothingMode);

Why doesn&apos;t this cause a stack overflow? Doesn&apos;t drawGlyphs() end up going through DrawGlyphsRecorder, which ends up calling this again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797990</commentid>
    <comment_count>5</comment_count>
      <attachid>439496</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 12:19:24 -0700</bug_when>
    <thetext>Comment on attachment 439496
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +
&gt; 
&gt; Is there a reason this line is blank?

I personally find a ChangeLog much easier to read when there&apos;s whitespace in between &quot;groups&quot; of changed things.

&gt;&gt; Source/WebCore/ChangeLog:28
&gt;&gt; +        (WebCore::DrawGlyphsRecorder::drawNativeText): Added.
&gt; 
&gt; What did you change here? Because you moved the file, the diff just shows all green so it&apos;s unclear what you changed.

Other than the newly added `drawNativeText` method, all the other changes are
 - replace `DisplayList::Recorder` with `GraphicsContext`
 - renamed `DrawGlyphsDeconstruction` to `DeconstructDrawGlyphs` so that it reads better
 - added `DeriveFontFromContext` (which adds some new logic inside `recordDrawGlyphs `)
 - replaced uses of `m_owner.currentState()` with other methods that exist on `GraphicsContext` instead of only on `DisplayList::Recorder`
   - `m_owner.currentState().ctm` -&gt; `m_owner.getCTM()`
   - `m_owner.currentState().stateChange.m_state` -&gt; `m_owner.lastStateChange()`
I thought I&apos;d given enough info in the paragraph below, but if you feel I haven&apos;t please let me know and I can expand.

&gt;&gt; Source/WebCore/platform/graphics/DrawGlyphsRecorder.h:58
&gt;&gt; +    void drawNativeText(CTLineRef, CGRect lineRect, CTFontRef, CGFloat fontSize);
&gt; 
&gt; nit: can the font go second instead of third?

Sure.  I&apos;d like to keep the `CTFontRef` and `CGFloat fontSize` nearby eachother so i&apos;ll put both of those first.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:357
&gt;&gt; +    virtual const GraphicsContextState&amp; lastStateChange() const { return m_state; }
&gt; 
&gt; is it a change? the variable name and the type name don&apos;t seem to indicate that it&apos;s a change.

The previous logic for `DrawGlyphsRecorder` used `m_owner.currentState().stateChange.m_state`, but the concept of `currentState()` (and `stateChange`) are both specific to `DisplayList::Recorder`, but I needed something more generic so that `DrawGlyphsRecorder` could be used with any `GraphicsContext`, not just `DisplayList::Recorder`.

Frankly I&apos;m not entirely sure why `m_owner.currentState().stateChange.m_state` was needed over just `m_owner.state()` or `m_owner.currentState().lastDrawingState`, so I tried to use a name that sounded as close to the literal code as possible.

&gt;&gt; Source/WebCore/platform/graphics/GraphicsContext.h:475
&gt;&gt; +        drawGlyphs(font, glyphs, advances, count, localAnchor, smoothingMode);
&gt; 
&gt; Why doesn&apos;t this cause a stack overflow? Doesn&apos;t drawGlyphs() end up going through DrawGlyphsRecorder, which ends up calling this again?

When not using the GPUProcess, `GraphicsContext::drawGlyphs` doesn&apos;t even involve `DrawGlyphsRecorder` and just invokes `FontCascade::drawGlyphs`.

When using the GPUProcess, in the WebProcess `GraphicsContext::drawGlyphs` is overridden by `DisplayList::Recorder::drawGlyphs`, which does call into `drawGlyphsAndCacheFont`, but that is also overridden by `DisplayList::Recorder::drawGlyphsAndCacheFont` which appends a `DrawGlyphs` display list item (and then in the GPUProcess it behaves like the above).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797994</commentid>
    <comment_count>6</comment_count>
      <attachid>439496</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-09-28 12:25:13 -0700</bug_when>
    <thetext>Comment on attachment 439496
Patch

It might (optionally, not saying you have to) be better to separate the rearchitecture and functional change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798119</commentid>
    <comment_count>7</comment_count>
      <attachid>439548</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-28 17:16:25 -0700</bug_when>
    <thetext>Created attachment 439548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798988</commentid>
    <comment_count>8</comment_count>
      <attachid>439771</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-30 12:37:42 -0700</bug_when>
    <thetext>Created attachment 439771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1798992</commentid>
    <comment_count>9</comment_count>
      <attachid>439774</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-09-30 12:58:51 -0700</bug_when>
    <thetext>Created attachment 439774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1799022</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-30 14:13:12 -0700</bug_when>
    <thetext>Committed r283339 (242356@main): &lt;https://commits.webkit.org/242356@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 439774.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1800806</commentid>
    <comment_count>11</comment_count>
    <who name="">ayumi_kojima</who>
    <bug_when>2021-10-05 15:29:31 -0700</bug_when>
    <thetext>Reverted r283339 for reason:

Reverting because this commit may have caused fast/attachment tests to crash

Committed r283577 (242538@main): &lt;https://commits.webkit.org/242538@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802186</commentid>
    <comment_count>12</comment_count>
      <attachid>440655</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-08 12:02:32 -0700</bug_when>
    <thetext>Created attachment 440655
Patch

After talking with @Myles Maxfield, we believe that the failing `ASSERT` is no longer (and may never have been) accurate/needed. CT is allowed to modify the text position between the `CGContextSetTextPosition` call and `DrawGlyphsRecorder::recordDrawGlyphs`. I tested this by calling `CGContextSetTextPosition` with manually overridden coordinates and visually confirming that the output was moved by the relevant amount.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802314</commentid>
    <comment_count>13</comment_count>
      <attachid>440688</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-08 16:56:06 -0700</bug_when>
    <thetext>Created attachment 440688
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802317</commentid>
    <comment_count>14</comment_count>
      <attachid>440689</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-10-08 17:06:02 -0700</bug_when>
    <thetext>Created attachment 440689
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1802359</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-10-08 23:18:27 -0700</bug_when>
    <thetext>Committed r283863 (242740@main): &lt;https://commits.webkit.org/242740@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 440689.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439228</attachid>
            <date>2021-09-24 19:00:39 -0700</date>
            <delta_ts>2021-09-28 11:10:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20210924190039.patch</filename>
            <type>text/plain</type>
            <size>3240</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmNGRkZDI4NTNhNzRhYTA5Yjc1MzEwN2Q1NmQzYzhkNzAxMDAyNDJmLi5l
ZmU0MTBlZjZjYzc4MGQ3YTEwMjQ1Mjg3NGUzNWVhZGFkMjMzY2U1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjEtMDktMjQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUaGVtZUlPUzo6cGFpbnRBdHRhY2htZW50KToKKyAgICAgICAgSW5zdGVhZCBvZiBk
cmF3aW5nIGRpcmVjdGx5IGludG8gdGhlIGBHcmFwaGljc0NvbnRleHQ6OnBsYXRmb3JtQ29udGV4
dGAgKHdoaWNoIHdpbGwgbm90IGJlCisgICAgICAgIHZhbGlkIGluIHRoZSBXZWJQcm9jZXNzIHdo
ZW4gRE9NIHJlbmRlcmluZyBoYXBwZW5zIGluIHRoZSBHUFVQcm9jZXNzKSwgZmlyc3QgZHJhdyBp
bnRvIGEKKyAgICAgICAgdGVtcG9yYXJ5IGBJbWFnZUJ1ZmZlcmAgYW5kIHRoZW4gY29uc3VtZSBp
dCB0byBkcmF3IGludG8gdGhlIGFjdHVhbC91c2VkIGBHcmFwaGljc0NvbnRleHRgLgorCiAyMDIx
LTA5LTI0ICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICByMjgzMDQ3
IGJyb2tlIHNvbWUgaHlwaGVuIHJlbGF0ZWQgZGVidWcgdGVzdHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNDgyNzUxN2Q0ZWZkNDExYjg0ODNhZDk3
ZDBmZmY2YjFiMmZjNmVmZi4uMWRjYThhOTE1NjFjNTM5ZDQ2Zjk2YjI1Mzc0YjAxZGZlYTk0NjVm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtNTUs
NiArNTUsNyBAQAogI2ltcG9ydCAiSFRNTFNlbGVjdEVsZW1lbnQuaCIKICNpbXBvcnQgIklPU3Vy
ZmFjZS5oIgogI2ltcG9ydCAiSWNvbi5oIgorI2ltcG9ydCAiSW1hZ2VCdWZmZXIuaCIKICNpbXBv
cnQgIkxvY2FsQ3VycmVudFRyYWl0Q29sbGVjdGlvbi5oIgogI2ltcG9ydCAiTG9jYWxpemVkRGF0
ZUNhY2hlLmgiCiAjaW1wb3J0ICJOb2RlUmVuZGVyU3R5bGUuaCIKQEAgLTE3NjQsMTcgKzE3NjUs
MjUgQEAgc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNv
bnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJgogICAgIGNvbnRleHQuZHJhd0ltYWdlKCppY29u
SW1hZ2UsIGluZm8uaWNvblJlY3QpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRU
ZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8p
CitzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4
dCwgY29uc3QgSW50U2l6ZSYgcGFpbnRBcmVhLCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykK
IHsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZUNvbXBhdGlibGVC
dWZmZXIocGFpbnRBcmVhLCBjb250ZXh0KTsKKyAgICBpZiAoIWltYWdlQnVmZmVyKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvJiBpbWFnZUNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4
dCgpOworCiAgICAgZm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5mby5saW5lcykgewotICAgICAg
ICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKGNvbnRleHQpOworICAgICAgICBHcmFw
aGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKGltYWdlQ29udGV4dCk7CiAKLSAgICAgICAgY29u
dGV4dC50cmFuc2xhdGUodG9GbG9hdFNpemUobGluZS5yZWN0Lm1pblhNYXhZQ29ybmVyKCkpKTsK
LSAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgaW1hZ2VD
b250ZXh0LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShsaW5lLnJlY3QubWluWE1heFlDb3JuZXIoKSkp
OworICAgICAgICBpbWFnZUNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CiAKLSAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0KCksIDAs
IDApOwotICAgICAgICBDVExpbmVEcmF3KGxpbmUubGluZS5nZXQoKSwgY29udGV4dC5wbGF0Zm9y
bUNvbnRleHQoKSk7CisgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihpbWFnZUNvbnRl
eHQucGxhdGZvcm1Db250ZXh0KCksIDAsIDApOworICAgICAgICBDVExpbmVEcmF3KGxpbmUubGlu
ZS5nZXQoKSwgaW1hZ2VDb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKICAgICB9CisKKyAgICBj
b250ZXh0LmRyYXdDb25zdW1pbmdJbWFnZUJ1ZmZlcihXVEZNb3ZlKGltYWdlQnVmZmVyKSwgeyBJ
bnRQb2ludDo6emVybygpLCBwYWludEFyZWEgfSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0
YWNobWVudFByb2dyZXNzKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVu
dEluZm8mIGluZm8pCkBAIC0xODQwLDcgKzE4NDksNyBAQCBib29sIFJlbmRlclRoZW1lSU9TOjpw
YWludEF0dGFjaG1lbnQoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUGFpbnRJ
bgogICAgIGVsc2UgaWYgKGluZm8uaWNvbiB8fCBpbmZvLnRodW1ibmFpbEljb24pCiAgICAgICAg
IHBhaW50QXR0YWNobWVudEljb24oY29udGV4dCwgaW5mbyk7CiAKLSAgICBwYWludEF0dGFjaG1l
bnRUZXh0KGNvbnRleHQsIGluZm8pOworICAgIHBhaW50QXR0YWNobWVudFRleHQoY29udGV4dCwg
cGFpbnRSZWN0LnNpemUoKSwgaW5mbyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439496</attachid>
            <date>2021-09-28 11:10:55 -0700</date>
            <delta_ts>2021-09-28 17:16:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20210928111054.patch</filename>
            <type>text/plain</type>
            <size>90277</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkZmU2YWYwYjZmOWIyMDYyNjA5NGZmM2U1ZDk3ZTBiOGRlM2M1OWZkLi4y
NzRlYTk2NzcyYjNjZDBjNjlmMDAxZmRjZGIxNjE4MzNhZDE1ZTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNjIgQEAKKzIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXIuaC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNv
cmRlcjo6ZGVjb25zdHJ1Y3REcmF3R2x5cGhzIGNvbnN0KTogUmVuYW1lZCBmcm9tIGBkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb25gLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRl
cjo6Y3JlYXRlSW50ZXJuYWxDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNS
ZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlw
aHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YXdHbHlwaHNSZWNvcmRlcjo6cHJlcGFyZUludGVybmFsQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAuCisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5
cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcDogUmVuYW1lZCBmcm9tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERy
YXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlw
aHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdH
bHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6Omxh
c3RTdGF0ZUNoYW5nZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3R2x5cGhzQW5kQ2FjaGVGb250KTogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRpc3BsYXlMaXN0OjpSZWNvcmRlcjo6ZHJhd0dseXBoc0FuZENhY2hl
Rm9udCk6IFJlbmFtZWQgZnJvbSBgYXBwZW5kRHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udGAu
CisgICAgICAgIEFsbG93IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRvIGJlIHVzZWQgd2l0aCBhbnkg
a2luZCBvZiBgR3JhcGhpY3NDb250ZXh0YCBieSBzdHViYmluZyBvdXQgdHdvCisgICAgICAgIG1v
cmUgbWV0aG9kcyBvbiBgR3JhcGhpY3NDb250ZXh0YCB0aGF0IGFyZSBvdmVycmlkZGVuIGJ5IGBE
aXNwbGF5TGlzdDo6UmVjb3JkZXJgLgorICAgICAgICBBZGQgYSBuZXcgcGFyYW1ldGVyIHRvIGBE
cmF3R2x5cGhzUmVuZGVyZXJgIHRoYXQgY29udHJvbHMgd2hldGhlciBmb250cyBvdGhlciB0aGFu
IHRoZSBvbmUKKyAgICAgICAgaW5pdGlhbGx5IHByb3ZpZGVkIHRvIGBkcmF3R2x5cGhzYC9gZHJh
d05hdGl2ZVRleHRgIGNhbiBiZSB1c2VkIHRvIGRyYXcgZ2x5cGhzLiBUaGlzIGlzIG9ubHkKKyAg
ICAgICAgdXNlZCBieSB0aGUgYWJvdmUgYXMgd2Uga25vdyB0aGF0IHRoZSBpbml0aWFsIGZvbnQg
aXMgYSBzeXN0ZW0gZm9udCwgYW5kIHRoZXJlZm9yZSB0aGF0IHRoZQorICAgICAgICBmYWxsYmFj
ayBsaXN0IHdpbGwgYWxzbyBvbmx5IGNvbnRhaW4gc3lzdGVtIGZvbnRzLCBtZWFuaW5nIHRoYXQg
c2VuZGluZyB0aGUgZm9udCB0byB0aGUKKyAgICAgICAgR1BVUHJvY2VzcyBpcyBjaGVhcCAoYSBm
aWxlIHBhdGggaW5zdGVhZCBvZiBhY3R1YWwgZGF0YSkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FzY2FkZTo6
ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgRHJpdmUtYnk6IFJlbmFtZSBg
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uYCB0byBgRGVjb25zdHJ1Y3REcmF3R2x5cGhzYCBmb3Ig
Z3JhbW1hci4KKworICAgICAgICAqIEhlYWRlcnMuY21ha2U6CisgICAgICAgICogUGxhdGZvcm1B
cHBsZVdpbi5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9GcmVl
VHlwZS5jbWFrZToKKwogMjAyMS0wOS0yNyAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRA
YXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBzdXBwb3J0IGZvciBDU1NGb250UGFsZXR0ZVZhbHVl
c1J1bGUubmFtZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNjc2OGZkMDY3MTM5MzRlNWFhMWMyMjNj
Mzk0Y2IxOWE3Njk1MWE0My4uZTU3NjAwYjE2Nzg2ZmI0ZDhiM2Y2NjJiODk3OTU0ZTllOTYyYzg0
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDktMjggIERldmlu
IFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNz
XSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFs
L3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKwogMjAyMS0wOS0yNCAgSm9uYXRoYW4gQmVkYXJk
ICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyAxNV0gU3VwcG9ydCBidWlsZGlu
ZyBXZWJLaXQgKFBhcnQgMykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGVjMDUwMTQyYTVmYzY2MTNk
NzczNWY2NWY5NDlmNzgxZDhjZTBmYzYuLjlkOWU5OTI0YWM5NzY0NDdjM2U0NmRhNjhmNmZiODE5
Y2ZhYmY4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIv
U291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTI0Myw2ICsxMjQzLDcgQEAgc2V0KFdl
YkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rp
c3BsYXlSZWZyZXNoTW9uaXRvckZhY3RvcnkuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvck1hbmFnZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlV
cGRhdGUuaAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uc0dMLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
bG9hdExpbmUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQuaApAQCAtMTM3NCw3
ICsxMzc1LDYgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEVVdGlsaXRpZXMuaAog
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0LmgKLSAgICBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdp
bmdDb250ZXh0LmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RGbHVzaElkZW50aWZpZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdEltYWdlQnVmZmVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmgKaW5kZXggMGQ1OTdkYzRiMzMzZDdhNTA1NzBkZWViOTVjN2Mx
OTg4Zjk1NzliMi4uNmM1NjIxMDhjMDc4ZTBhMjE5MWYzZTQwNTgxNTQxMzdkOGYyZDkyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKQEAg
LTI3MCw2ICsyNzAsNyBAQCB2b2lkKiBDR0NvbnRleHREZWxlZ2F0ZUdldEluZm8oQ0dDb250ZXh0
RGVsZWdhdGVSZWYpOwogdm9pZCBDR0NvbnRleHREZWxlZ2F0ZVJlbGVhc2UoQ0dDb250ZXh0RGVs
ZWdhdGVSZWYpOwogQ0dGbG9hdCBDR0dTdGF0ZUdldEFscGhhKENHR1N0YXRlUmVmKTsKIENHRm9u
dFJlZiBDR0dTdGF0ZUdldEZvbnQoQ0dHU3RhdGVSZWYpOworQ0dGbG9hdCBDR0dTdGF0ZUdldEZv
bnRTaXplKENHR1N0YXRlUmVmKTsKIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICpDR0dTdGF0ZUdl
dENUTShDR0dTdGF0ZVJlZik7CiBDR0NvbG9yUmVmIENHR1N0YXRlR2V0RmlsbENvbG9yKENHR1N0
YXRlUmVmKTsKIENHQ29sb3JSZWYgQ0dHU3RhdGVHZXRTdHJva2VDb2xvcihDR0dTdGF0ZVJlZik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNtYWtlIGIvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1BcHBsZVdpbi5jbWFrZQppbmRleCA1NjUwOWJjNDc1NTExNTA0
OWRlZDI0Njk0YzM3MTZkZmM0ZWJhOGNhLi5jZjgxMjA3MzYyNGE5NTFlOGY1NjM0NDk1ZjYyMmE4
M2Y1YzI4MDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUFwcGxlV2luLmNt
YWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtQXBwbGVXaW4uY21ha2UKQEAgLTMwLDgg
KzMwLDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL2NmL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbkNGLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9jZi9XZWJDb3JlQVZDRlJlc291cmNl
TG9hZGVyLmNwcAogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAotCisgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKIAogICAgIHBsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVu
dGljYXRpb25DRi5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDZjNGNmMDc0NjBiYWRl
YmMzMzE3MTY5MDgzOWE1N2IwZDA5YTRmOTEuLjQ1MWQzODQ0MmQ4NzFiYTZiMjZhMDVkNjVkODc3
YjcwZmU2NmMwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMzg3LDYgKzM4Nyw3IEBA
IHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVDQUxheWVyRXh0cmFzLm1tCiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KIHBsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL1dlYkdMTGF5ZXIubW0KIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Zp
ZGVvVHJhY2tQcml2YXRlV2ViTS5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdH
bHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dENhc2NhZGVDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRDb3Jl
VGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKQEAgLTM5Niw3ICszOTcsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9jdi9JbWFnZVRy
YW5zZmVyU2Vzc2lvblZULm1tCiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9QaXhlbEJ1ZmZlckNvbmZv
cm1lckNWLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xF
LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29y
ZUltYWdlLm1tCi1wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3
R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2dwdS9jb2NvYS9H
UFVEZXZpY2VNZXRhbC5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0Rpc3BsYXlSZWZyZXNoTW9u
aXRvcklPUy5tbQogcGxhdGZvcm0vZ3JhcGhpY3MvaW9zL0ljb25JT1MubW0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyNWMxMTQ2
NjJkYmRiMzQ4OGVmYmJkOTM5MTEwYWQzMGFmNWJjMThmLi5kNWVjYzQzZmEzYWEwY2Q0YjMxMjJh
MzdhMGExNmFmNDcxZTg3ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDcsNyArNjQ3LDcgQEAKIAkJMUNBRjM0ODEwQTZD
NDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNj
cmlwdE9iamVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDQUYzNDgyMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0FGMzQ3RjBBNkM0
MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICovOyB9OwogCQkxQ0FGMzQ4MzBBNkM0
MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZFIC8q
IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQkxQ0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRGlzcGxheUxp
c3REcmF3R2x5cGhzUmVjb3JkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUY1NkQ4
MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3R2x5cGhzUmVjb3JkZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0NEODE1MDIyMzFGODNFMDA2NUZD
MkIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRpb25RdWV1ZURlbGVnYXRlLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTE1MjU1MTQxNkZE
MjM0RjAwM0Q3QURCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxl
Z2F0ZS5tbSAqLzsgfTsKIAkJMUNDREY1QkUxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9u
dENvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmgg
Ki87IH07CiAJCTFDRTg4NjQxMjYxMDVCRjIwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0U4ODYz
RjI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MDE2LDggKzcwMTYsOCBAQAog
CQkxQ0FGMzQ3RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2Jq
ZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2NyaXB0
T2JqZWN0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ4MDBBNkM0MDUy
MDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdH
bHlwaHNSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0FGNTZERTI1MzAyNDVBMDAx
N0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcyIC8q
IERyYXdHbHlwaHNSZWNvcmRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEcmF3R2x5cGhzUmVjb3JkZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNBRjU2REUyNTMwMjQ1QTAwMTdCNDcy
IC8qIERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERy
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5l
T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVbmRlcmxpbmVPZmZzZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RG
Rm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xODEwNCw4ICsxODEwNCw2IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRkU1RkJDQTFDM0RE
NTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuY3BwICovLAogCQkJCTBGRTVGQkNCMUMzREQ1MUUw
MDA3QTJDQSAvKiBEaXNwbGF5TGlzdC5oICovLAotCQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3
MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oICovLAotCQkJCTFDQUY1NkRFMjUz
MDI0NUEwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cCAqLywKIAkJCQk1NUMwQTI5NTIzRkUyQ0UwMDBGMkNCOTMgLyogRGlzcGxheUxpc3REcmF3aW5n
Q29udGV4dC5jcHAgKi8sCiAJCQkJNzJFQTA5RjkyM0ZDQ0M2QTAwODUwNEE1IC8qIERpc3BsYXlM
aXN0RHJhd2luZ0NvbnRleHQuaCAqLywKIAkJCQk3MjQyQUM5NTI1NzU4RkUwMDA1QTlDRjEgLyog
RGlzcGxheUxpc3RGbHVzaElkZW50aWZpZXIuaCAqLywKQEAgLTE4OTQ5LDYgKzE4OTQ3LDcgQEAK
IAkJMUM2RkQ5MjAyNTBDQ0E2NDAwRDZFOTIwIC8qIGNvcmV0ZXh0ICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQ0FGNTZERTI1MzAyNDVBMDAxN0I0NzIg
LyogRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwICovLAogCQkJCTFDNkZEOEFFMjUwQTMx
MTUwMEQ2RTkyMCAvKiBGb250Q2FzY2FkZUNvcmVUZXh0LmNwcCAqLywKIAkJCQkxQzZGRDhBRjI1
MEEzM0NGMDBENkU5MjAgLyogRm9udENvcmVUZXh0LmNwcCAqLywKIAkJCQkxQzZGRDhBQzI1MEEy
OTREMDBENkU5MjAgLyogRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCAqLywKQEAgLTI2OTUw
LDYgKzI2OTQ5LDcgQEAKIAkJCQkyRDI5RUNDNDE5MkVDQzgzMDA5ODRCNzggLyogRGlzcGxheVJl
ZnJlc2hNb25pdG9yTWFuYWdlci5oICovLAogCQkJCTBGQkI1RkM5MjYwRTlCNDMwMDU0NTcyQyAv
KiBEaXNwbGF5VXBkYXRlLmNwcCAqLywKIAkJCQkwRkJCNUZDQjI2MEU5QjQ0MDA1NDU3MkMgLyog
RGlzcGxheVVwZGF0ZS5oICovLAorCQkJCTFDQUY1NkQ4MjUzMDE0NTcwMDE3QjQ3MiAvKiBEcmF3
R2x5cGhzUmVjb3JkZXIuaCAqLywKIAkJCQk2RTY3RDJBODEyODBFOEJEMDA4NzU4RjcgLyogRXh0
ZW5zaW9uc0dMLmggKi8sCiAJCQkJMkU4ODhDQTkyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGlu
ZS5jcHAgKi8sCiAJCQkJMkU4ODhDQTgyNUY2QTQxMTAwNTc5MTRBIC8qIEZsb2F0TGluZS5oICov
LApAQCAtMzIxOTMsNyArMzIxOTMsNiBAQAogCQkJCUY0N0EwOUQxMjBBOTNBOTcwMDI0MEZBRSAv
KiBEaXNhYmxlZEFkYXB0YXRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3RURBQUZDOTE5QTJD
Q0RDMDAzNERGRDEgLyogRGlza0NhY2hlTW9uaXRvckNvY29hLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkU1RkJEMzFDM0RENTFFMDAwN0EyQ0EgLyogRGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICov
LAotCQkJCTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNS
ZWNvcmRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTVBRDA5NDAyNDA4OTY0MDAwREU0RDJGIC8q
IERpc3BsYXlMaXN0RHJhd2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTcyNDJBQzk3
MjU3NThGRTEwMDVBOUNGMSAvKiBEaXNwbGF5TGlzdEZsdXNoSWRlbnRpZmllci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTVBRDA5M0UyNDA4OTYzNTAwREU0RDJGIC8qIERpc3BsYXlMaXN0SW1hZ2VC
dWZmZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMzIzMDIsNiArMzIzMDEsNyBAQAogCQkJCUE3Q0ZC
M0QyMEI3RUQxMEEwMDcwQzMyRCAvKiBEcmFnSW1hZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTFB
RjVFNEQ5MUU1Njc3QTkwMDRBMUYwMSAvKiBEcmFnSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODFGNjVGRjYxMzc4OEZBQTAwRkY2RjJEIC8qIERyYWdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUNBRjU2REIyNTMwMUFDODAwMTdCNDcyIC8qIERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTEwQTkxRjYyNEQzMkREQzAwQkZEODlDIC8qIER1YWxzaG9jazNISURH
YW1lcGFkLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q2QjdBODI1NTFENDFGMDA1OEREM0EgLyog
RHVtbXlTcGVlY2hSZWNvZ25pdGlvblByb3ZpZGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA4
NURGODI2RTgyMkM3MDAwRUM2QTcgLyogRHVtbXlTdG9yYWdlUHJvdmlkZXIuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRnJlZVR5cGUuY21ha2Ug
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmVlVHlwZS5jbWFrZQppbmRleCBmMzhiNTRlMTdj
OTMxNTY1MTU0Y2FiOTUzYTgxZTBlOTZmNTc0OWE0Li43NmRlZTFlZjMxMTM0ZjY4MTkzYTQ5NmY1
ZDU4MmQwY2ZjOWM1M2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmVl
VHlwZS5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9GcmVlVHlwZS5jbWFrZQpA
QCAtNSw4ICs1LDYgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0lOQ0xVREVfRElSRUNU
T1JJRVMKICkKIAogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enou
Y3BwCi0KICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q2FjaGVGcmVlVHlwZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
RnJlZVR5cGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5cGUvRm9udFBsYXRmb3Jt
RGF0YUZyZWVUeXBlLmNwcApAQCAtMTUsNiArMTMsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9TaW1wbGVGb250RGF0YUZyZWVU
eXBlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovQ29tcGxleFRleHRDb250
cm9sbGVySGFyZkJ1enouY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0ds
eXBoc1JlY29yZGVySGFyZkJ1enouY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
Rm9udERlc2NyaXB0aW9uSGFyZkJ1enouY3BwCiApCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGY5
MWZjNzNlMGVkNjQ0YzIwZGJlYzczZDBjOGU2ZTA4ZmM3OGI1MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBA
IC0wLDAgKzEsMTI4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiR3JhZGllbnQuaCIKKyNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJQYXR0ZXJuLmgiCisjaW5jbHVkZSAiVGV4dEZsYWdz
LmgiCisjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgorCisjaWYgVVNFKENPUkVfVEVYVCkKKyNp
bmNsdWRlIDxDb3JlR3JhcGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8Q29yZVRleHQv
Q29yZVRleHQuaD4KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVUZXh0U1BJLmg+CisjaW5jbHVk
ZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEZsb2F0UG9pbnQ7CitjbGFzcyBGb250OworY2xhc3MgR2x5cGhCdWZm
ZXI7CisKK2NsYXNzIERyYXdHbHlwaHNSZWNvcmRlciB7CitwdWJsaWM6CisgICAgZW51bSBjbGFz
cyBEZXJpdmVGb250RnJvbUNvbnRleHQgOiBib29sIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xh
c3MgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBleHBsaWNp
dCBEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzID0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpObywgRGVyaXZlRm9udEZyb21Db250ZXh0ID0g
RGVyaXZlRm9udEZyb21Db250ZXh0OjpObyk7CisKKyAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2Uq
LCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250
U21vb3RoaW5nTW9kZSk7CisKKyNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQor
ICAgIHZvaWQgZHJhd05hdGl2ZVRleHQoQ1RMaW5lUmVmLCBDR1JlY3QgbGluZVJlY3QsIENURm9u
dFJlZiwgQ0dGbG9hdCBmb250U2l6ZSk7CisKKyAgICB2b2lkIHJlY29yZEJlZ2luTGF5ZXIoQ0dS
ZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYsIENHUmVjdCk7CisgICAgdm9pZCByZWNvcmRF
bmRMYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZik7CisgICAgdm9pZCByZWNv
cmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBjb25zdCBDR0Fm
ZmluZVRyYW5zZm9ybSosIGNvbnN0IENHR2x5cGhbXSwgY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNb
XSwgc2l6ZV90IGNvdW50KTsKKyAgICB2b2lkIHJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0
YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dSZWN0LCBDR0ltYWdlUmVmKTsKKyNlbmRpZgorCisgICAg
RGVjb25zdHJ1Y3REcmF3R2x5cGhzIGRlY29uc3RydWN0RHJhd0dseXBocygpIGNvbnN0IHsgcmV0
dXJuIG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzOyB9CisKK3ByaXZhdGU6CisjaWYgVVNFKENPUkVf
VEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKKyAgICBVbmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0PiBj
cmVhdGVJbnRlcm5hbENvbnRleHQoKTsKKyNlbmRpZgorCisgICAgdm9pZCBwb3B1bGF0ZUludGVy
bmFsU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsKKyAgICB2b2lkIHBvcHVsYXRl
SW50ZXJuYWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJik7CisgICAgdm9pZCBw
cmVwYXJlSW50ZXJuYWxDb250ZXh0KGNvbnN0IEZvbnQmLCBGb250U21vb3RoaW5nTW9kZSk7Cisg
ICAgdm9pZCBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOworCisgICAgdm9pZCB1cGRhdGVGaWxs
Q29sb3IoY29uc3QgQ29sb3ImLCBHcmFkaWVudCogPSBudWxscHRyLCBQYXR0ZXJuKiA9IG51bGxw
dHIpOworICAgIHZvaWQgdXBkYXRlU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBHcmFkaWVudCog
PSBudWxscHRyLCBQYXR0ZXJuKiA9IG51bGxwdHIpOworICAgIHZvaWQgdXBkYXRlQ1RNKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOworICAgIGVudW0gY2xhc3MgU2hhZG93c0lnbm9yZVRyYW5zZm9y
bXMgeworICAgICAgICBVbnNwZWNpZmllZCwKKyAgICAgICAgWWVzLAorICAgICAgICBObworICAg
IH07CisgICAgdm9pZCB1cGRhdGVTaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQs
IGZsb2F0IHNoYWRvd0JsdXIsIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgU2hhZG93c0lnbm9y
ZVRyYW5zZm9ybXMpOworCisjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKKyAg
ICB2b2lkIHVwZGF0ZVNoYWRvdyhDR1N0eWxlUmVmKTsKKyNlbmRpZgorCisgICAgR3JhcGhpY3ND
b250ZXh0JiBtX293bmVyOworICAgIERlY29uc3RydWN0RHJhd0dseXBocyBtX2RlY29uc3RydWN0
RHJhd0dseXBoczsKKyAgICBEZXJpdmVGb250RnJvbUNvbnRleHQgbV9kZXJpdmVGb250RnJvbUNv
bnRleHQ7CisKKyNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQorICAgIFVuaXF1
ZVJlZjxHcmFwaGljc0NvbnRleHQ+IG1faW50ZXJuYWxDb250ZXh0OworI2VuZGlmCisKKyAgICBj
b25zdCBGb250KiBtX29yaWdpbmFsRm9udCB7IG51bGxwdHIgfTsKKyAgICBGb250U21vb3RoaW5n
TW9kZSBtX3Ntb290aGluZ01vZGUgeyBGb250U21vb3RoaW5nTW9kZTo6QXV0b1Ntb290aGluZyB9
OworICAgIEFmZmluZVRyYW5zZm9ybSBtX29yaWdpbmFsVGV4dE1hdHJpeDsKKworICAgIHN0cnVj
dCBTdGF0ZSB7CisgICAgICAgIHN0cnVjdCBTdHlsZSB7CisgICAgICAgICAgICBDb2xvciBjb2xv
cjsKKyAgICAgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7CisgICAgICAgICAgICBB
ZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKKyAgICAgICAgICAgIFJlZlB0
cjxQYXR0ZXJuPiBwYXR0ZXJuOworICAgICAgICB9OworICAgICAgICBTdHlsZSBmaWxsU3R5bGU7
CisgICAgICAgIFN0eWxlIHN0cm9rZVN0eWxlOworCisgICAgICAgIEFmZmluZVRyYW5zZm9ybSBj
dG07CisKKyAgICAgICAgc3RydWN0IFNoYWRvd1N0YXRlIHsKKyAgICAgICAgICAgIEZsb2F0U2l6
ZSBvZmZzZXQ7CisgICAgICAgICAgICBmbG9hdCBibHVyIHsgMCB9OworICAgICAgICAgICAgQ29s
b3IgY29sb3I7CisgICAgICAgICAgICBib29sIGlnbm9yZVRyYW5zZm9ybXMgeyBmYWxzZSB9Owor
ICAgICAgICB9OworICAgICAgICBTaGFkb3dTdGF0ZSBzaGFkb3c7CisgICAgfTsKKyAgICBTdGF0
ZSBtX29yaWdpbmFsU3RhdGU7CisgICAgU3RhdGUgbV9jdXJyZW50U3RhdGU7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggZmI5MGVmMTVmYTVhMDZkOWZlMTMwZTcxZWNiNDY1NWJj
OTAwNTJmMC4uN2Q3NzZhZjE5Nzk3ZTc4MDIzYTM1NzQ0MWRjOGZmNTkxMmQ3ZmIyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAt
MjEzLDcgKzIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNw
bGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4CiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlE
aXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9y
eURpc3BsYXlMaXN0PigpOwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciByZWNvcmRpbmdDb250
ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJh
bnNmb3JtKCksIG51bGxwdHIsIERpc3BsYXlMaXN0OjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdH
bHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KTsKKyAgICBEaXNwbGF5TGlzdDo6
UmVjb3JkZXIgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwg
RmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6Tm8pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhC
dWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IDg5
NDZlYjIwODQ1MWM4YmJiOTQwYWI0MTUwNzllYTgxNmU5YjU5YWUuLjllNWRiYzViNDk0MDA5OWQ4
MmM5ZWQ4YjYxZjJkOGMyZDA3ZmJlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0zNTQsNyArMzU0LDcgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9Ci0KKyAgICB2aXJ0dWFsIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBsYXN0U3RhdGVDaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVN0YXRlKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgR3Jh
cGhpY3NDb250ZXh0U3RhdGU6OlN0YXRlQ2hhbmdlRmxhZ3MpID0gMDsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZpcnR1YWwgdm9pZCBzYXZlKCk7CkBAIC00NzAsNiArNDcwLDExIEBAIHB1YmxpYzoK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3Qg
Rm9udENhc2NhZGUmLCBjb25zdCBUZXh0UnVuJiwgY29uc3QgQXRvbVN0cmluZyYgbWFyaywgY29u
c3QgRmxvYXRQb2ludCYsIHVuc2lnbmVkIGZyb20gPSAwLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiB0byA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGRy
YXdCaWRpVGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9h
dFBvaW50JiwgRm9udENhc2NhZGU6OkN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbiA9IEZvbnRDYXNj
YWRlOjpEb05vdFBhaW50SWZGb250Tm90UmVhZHkpOwogCisgICAgdmlydHVhbCB2b2lkIGRyYXdH
bHlwaHNBbmRDYWNoZUZvbnQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlw
aCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBj
b3VudCwgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNt
b290aGluZ01vZGUpCisgICAgeworICAgICAgICBkcmF3R2x5cGhzKGZvbnQsIGdseXBocywgYWR2
YW5jZXMsIGNvdW50LCBsb2NhbEFuY2hvciwgc21vb3RoaW5nTW9kZSk7CisgICAgfQorCiAgICAg
V0VCQ09SRV9FWFBPUlQgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3VuZHNGb3JUZXh0KGNv
bnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3QgRmxvYXRSZWN0JiwgYm9vbCBwcmludGluZywg
Ym9vbCBkb3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQg
dGhpY2tuZXNzLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBk
b3VibGVMaW5lcyA9IGZhbHNlLCBTdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTll
MzFmZDZlMTRkYjdhYmQwODVmNmVjMTQ1NzZiODJkYTYwMTg3NQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNv
cmRlckNvcmVUZXh0LmNwcApAQCAtMCwwICsxLDQ1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkRyYXdHbHlwaHNSZWNvcmRlci5oIgorCisjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKKyNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJGb250
LmgiCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRh
LmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRD
Ry5oIgorCisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKKyNpZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8cGFsL3NwaS93aW4vQ29yZVRl
eHRTUElXaW4uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBDR0Nv
bnRleHREZWxlZ2F0ZVJlZiBiZWdpbkxheWVyKENHQ29udGV4dERlbGVnYXRlUmVmIGRlbGVnYXRl
LCBDR1JlbmRlcmluZ1N0YXRlUmVmIHJzdGF0ZSwgQ0dHU3RhdGVSZWYgZ3N0YXRlLCBDR1JlY3Qg
cmVjdCwgQ0ZEaWN0aW9uYXJ5UmVmLCBDR0NvbnRleHREZWxlZ2F0ZVJlZikKK3sKKyAgICBEcmF3
R2x5cGhzUmVjb3JkZXImIHJlY29yZGVyID0gKnN0YXRpY19jYXN0PERyYXdHbHlwaHNSZWNvcmRl
cio+KENHQ29udGV4dERlbGVnYXRlR2V0SW5mbyhkZWxlZ2F0ZSkpOworICAgIHJlY29yZGVyLnJl
Y29yZEJlZ2luTGF5ZXIocnN0YXRlLCBnc3RhdGUsIHJlY3QpOworICAgIHJldHVybiBkZWxlZ2F0
ZTsKK30KKworc3RhdGljIENHQ29udGV4dERlbGVnYXRlUmVmIGVuZExheWVyKENHQ29udGV4dERl
bGVnYXRlUmVmIGRlbGVnYXRlLCBDR1JlbmRlcmluZ1N0YXRlUmVmIHJzdGF0ZSwgQ0dHU3RhdGVS
ZWYgZ3N0YXRlKQoreworICAgIERyYXdHbHlwaHNSZWNvcmRlciYgcmVjb3JkZXIgPSAqc3RhdGlj
X2Nhc3Q8RHJhd0dseXBoc1JlY29yZGVyKj4oQ0dDb250ZXh0RGVsZWdhdGVHZXRJbmZvKGRlbGVn
YXRlKSk7CisgICAgcmVjb3JkZXIucmVjb3JkRW5kTGF5ZXIocnN0YXRlLCBnc3RhdGUpOworICAg
IHJldHVybiBkZWxlZ2F0ZTsKK30KKworc3RhdGljIENHRXJyb3IgZHJhd0dseXBocyhDR0NvbnRl
eHREZWxlZ2F0ZVJlZiBkZWxlZ2F0ZSwgQ0dSZW5kZXJpbmdTdGF0ZVJlZiByc3RhdGUsIENHR1N0
YXRlUmVmIGdzdGF0ZSwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qIHRtLCBjb25zdCBDR0dseXBo
IGdseXBoc1tdLCBjb25zdCBDR1BvaW50IHBvc2l0aW9uc1tdLCBzaXplX3QgY291bnQpCit7Cisg
ICAgaWYgKENHR1N0YXRlR2V0QWxwaGEoZ3N0YXRlKSA+IDApIHsKKyAgICAgICAgRHJhd0dseXBo
c1JlY29yZGVyJiByZWNvcmRlciA9ICpzdGF0aWNfY2FzdDxEcmF3R2x5cGhzUmVjb3JkZXIqPihD
R0NvbnRleHREZWxlZ2F0ZUdldEluZm8oZGVsZWdhdGUpKTsKKyAgICAgICAgcmVjb3JkZXIucmVj
b3JkRHJhd0dseXBocyhyc3RhdGUsIGdzdGF0ZSwgdG0sIGdseXBocywgcG9zaXRpb25zLCBjb3Vu
dCk7CisgICAgfQorICAgIHJldHVybiBrQ0dFcnJvclN1Y2Nlc3M7Cit9CisKK3N0YXRpYyBDR0Vy
cm9yIGRyYXdJbWFnZShDR0NvbnRleHREZWxlZ2F0ZVJlZiBkZWxlZ2F0ZSwgQ0dSZW5kZXJpbmdT
dGF0ZVJlZiByc3RhdGUsIENHR1N0YXRlUmVmIGdzdGF0ZSwgQ0dSZWN0IHJlY3QsIENHSW1hZ2VS
ZWYgaW1hZ2UpCit7CisgICAgRHJhd0dseXBoc1JlY29yZGVyJiByZWNvcmRlciA9ICpzdGF0aWNf
Y2FzdDxEcmF3R2x5cGhzUmVjb3JkZXIqPihDR0NvbnRleHREZWxlZ2F0ZUdldEluZm8oZGVsZWdh
dGUpKTsKKyAgICByZWNvcmRlci5yZWNvcmREcmF3SW1hZ2UocnN0YXRlLCBnc3RhdGUsIHJlY3Qs
IGltYWdlKTsKKyAgICByZXR1cm4ga0NHRXJyb3JTdWNjZXNzOworfQorCitVbmlxdWVSZWY8R3Jh
cGhpY3NDb250ZXh0PiBEcmF3R2x5cGhzUmVjb3JkZXI6OmNyZWF0ZUludGVybmFsQ29udGV4dCgp
Cit7CisgICAgYXV0byBjb250ZXh0RGVsZWdhdGUgPSBhZG9wdENGKENHQ29udGV4dERlbGVnYXRl
Q3JlYXRlKHRoaXMpKTsKKyAgICBDR0NvbnRleHREZWxlZ2F0ZVNldENhbGxiYWNrKGNvbnRleHRE
ZWxlZ2F0ZS5nZXQoKSwgZGVCZWdpbkxheWVyLCByZWludGVycHJldF9jYXN0PENHQ29udGV4dERl
bGVnYXRlQ2FsbGJhY2s+KCZiZWdpbkxheWVyKSk7CisgICAgQ0dDb250ZXh0RGVsZWdhdGVTZXRD
YWxsYmFjayhjb250ZXh0RGVsZWdhdGUuZ2V0KCksIGRlRW5kTGF5ZXIsIHJlaW50ZXJwcmV0X2Nh
c3Q8Q0dDb250ZXh0RGVsZWdhdGVDYWxsYmFjaz4oJmVuZExheWVyKSk7CisgICAgQ0dDb250ZXh0
RGVsZWdhdGVTZXRDYWxsYmFjayhjb250ZXh0RGVsZWdhdGUuZ2V0KCksIGRlRHJhd0dseXBocywg
cmVpbnRlcnByZXRfY2FzdDxDR0NvbnRleHREZWxlZ2F0ZUNhbGxiYWNrPigmV2ViQ29yZTo6ZHJh
d0dseXBocykpOworICAgIENHQ29udGV4dERlbGVnYXRlU2V0Q2FsbGJhY2soY29udGV4dERlbGVn
YXRlLmdldCgpLCBkZURyYXdJbWFnZSwgcmVpbnRlcnByZXRfY2FzdDxDR0NvbnRleHREZWxlZ2F0
ZUNhbGxiYWNrPigmZHJhd0ltYWdlKSk7CisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRDRihDR0Nv
bnRleHRDcmVhdGVXaXRoRGVsZWdhdGUoY29udGV4dERlbGVnYXRlLmdldCgpLCBrQ0dDb250ZXh0
VHlwZVVua25vd24sIG51bGxwdHIsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVJl
ZjxHcmFwaGljc0NvbnRleHRDRz4oY29udGV4dC5nZXQoKSk7Cit9CisKK0RyYXdHbHlwaHNSZWNv
cmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29uc3Ry
dWN0RHJhd0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRGcm9tQ29udGV4
dCBkZXJpdmVGb250RnJvbUNvbnRleHQpCisgICAgOiBtX293bmVyKG93bmVyKQorICAgICwgbV9k
ZWNvbnN0cnVjdERyYXdHbHlwaHMoZGVjb25zdHJ1Y3REcmF3R2x5cGhzKQorICAgICwgbV9kZXJp
dmVGb250RnJvbUNvbnRleHQoZGVyaXZlRm9udEZyb21Db250ZXh0KQorICAgICwgbV9pbnRlcm5h
bENvbnRleHQoY3JlYXRlSW50ZXJuYWxDb250ZXh0KCkpCit7Cit9CisKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIGNvbnRleHRTdGF0ZSkKK3sKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9y
ID0gY29udGV4dFN0YXRlLmZpbGxDb2xvcjsKKyAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LmdyYWRpZW50ID0gY29udGV4dFN0YXRlLmZpbGxHcmFkaWVudDsKKyAgICBtX29yaWdpbmFsU3Rh
dGUuZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUuZmlsbEdy
YWRpZW50U3BhY2VUcmFuc2Zvcm07CisgICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5wYXR0
ZXJuID0gY29udGV4dFN0YXRlLmZpbGxQYXR0ZXJuOworCisgICAgbV9vcmlnaW5hbFN0YXRlLnN0
cm9rZVN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLnN0cm9rZUNvbG9yOworICAgIG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVu
dDsKKyAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9y
bSA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOworICAgIG1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLnN0cm9rZVBhdHRl
cm47CisKKyAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5nZXRDVE0oKTsgLy8gRklY
TUU6IERlYWwgd2l0aCBiYXNlIENUTS4KKworICAgIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zm
c2V0ID0gY29udGV4dFN0YXRlLnNoYWRvd09mZnNldDsKKyAgICBtX29yaWdpbmFsU3RhdGUuc2hh
ZG93LmJsdXIgPSBjb250ZXh0U3RhdGUuc2hhZG93Qmx1cjsKKyAgICBtX29yaWdpbmFsU3RhdGUu
c2hhZG93LmNvbG9yID0gY29udGV4dFN0YXRlLnNoYWRvd0NvbG9yOworICAgIG1fb3JpZ2luYWxT
dGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA9IGNvbnRleHRTdGF0ZS5zaGFkb3dzSWdub3Jl
VHJhbnNmb3JtczsKKworICAgIG1fY3VycmVudFN0YXRlID0gbV9vcmlnaW5hbFN0YXRlOworfQor
Cit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKK3sKKyAgICBpZiAobV9vcmlnaW5h
bFN0YXRlLmZpbGxTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG1faW50ZXJuYWxDb250
ZXh0LT5zZXRGaWxsQ29sb3IobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5jb2xvcik7CisgICAg
ZWxzZSBpZiAobV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudCkKKyAgICAgICAgbV9p
bnRlcm5hbENvbnRleHQtPnNldEZpbGxHcmFkaWVudCgqbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHls
ZS5ncmFkaWVudCwgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHlsZS5ncmFkaWVudFNwYWNlVHJhbnNm
b3JtKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUucGF0dGVybik7CisgICAgICAgIGlmIChtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRl
cm4pCisgICAgICAgICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbFBhdHRlcm4oKm1fb3Jp
Z2luYWxTdGF0ZS5maWxsU3R5bGUucGF0dGVybik7CisgICAgfQorCisgICAgaWYgKG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIG1faW50ZXJuYWxD
b250ZXh0LT5zZXRTdHJva2VDb2xvcihtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3Ip
OworICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCkKKyAg
ICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFN0cm9rZUdyYWRpZW50KCptX29yaWdpbmFsU3Rh
dGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFk
aWVudFNwYWNlVHJhbnNmb3JtKTsKKyAgICBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1fb3JpZ2lu
YWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKKyAgICAgICAgaWYgKG1fb3JpZ2luYWxTdGF0
ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKQorICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNl
dFN0cm9rZVBhdHRlcm4oKm1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuKTsKKyAg
ICB9CisKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0Q1RNKG1fb3JpZ2luYWxTdGF0ZS5jdG0p
OworCisgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKG1f
b3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3Jtcyk7CisgICAgbV9pbnRlcm5hbENv
bnRleHQtPnNldFNoYWRvdyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lm9mZnNldCwgbV9vcmlnaW5h
bFN0YXRlLnNoYWRvdy5ibHVyLCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmNvbG9yLCBjb250ZXh0
U3RhdGUuc2hhZG93UmFkaXVzTW9kZSk7CisKKyAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0VGV4
dERyYXdpbmdNb2RlKGNvbnRleHRTdGF0ZS50ZXh0RHJhd2luZ01vZGUpOworfQorCit2b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6cHJlcGFyZUludGVybmFsQ29udGV4dChjb25zdCBGb250JiBmb250
LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQoreworICAgIEFTU0VSVChDR0FmZmlu
ZVRyYW5zZm9ybUlzSWRlbnRpdHkoQ1RGb250R2V0TWF0cml4KGZvbnQucGxhdGZvcm1EYXRhKCku
Y3RGb250KCkpKSk7CisKKyAgICBtX29yaWdpbmFsRm9udCA9ICZmb250OworICAgIG1fc21vb3Ro
aW5nTW9kZSA9IHNtb290aGluZ01vZGU7CisKKyAgICBtX29yaWdpbmFsVGV4dE1hdHJpeCA9IGNv
bXB1dGVPdmVyYWxsVGV4dE1hdHJpeChmb250KTsKKyAgICBpZiAoZm9udC5wbGF0Zm9ybURhdGEo
KS5vcmllbnRhdGlvbigpID09IEZvbnRPcmllbnRhdGlvbjo6VmVydGljYWwpCisgICAgICAgIG1f
b3JpZ2luYWxUZXh0TWF0cml4ID0gY29tcHV0ZVZlcnRpY2FsVGV4dE1hdHJpeChmb250LCBtX29y
aWdpbmFsVGV4dE1hdHJpeCk7CisKKyAgICBhdXRvJiBjb250ZXh0U3RhdGUgPSBtX293bmVyLmxh
c3RTdGF0ZUNoYW5nZSgpOworICAgIHBvcHVsYXRlSW50ZXJuYWxTdGF0ZShjb250ZXh0U3RhdGUp
OworICAgIHBvcHVsYXRlSW50ZXJuYWxDb250ZXh0KGNvbnRleHRTdGF0ZSk7Cit9CisKK3ZvaWQg
RHJhd0dseXBoc1JlY29yZGVyOjpjb25jbHVkZUludGVybmFsQ29udGV4dCgpCit7CisgICAgdXBk
YXRlQ1RNKG1fb3JpZ2luYWxTdGF0ZS5jdG0pOworICAgIHVwZGF0ZUZpbGxDb2xvcihtX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9yLCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRp
ZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4uZ2V0KCkpOworICAg
IHVwZGF0ZVN0cm9rZUNvbG9yKG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciwgbV9v
cmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUu
c3Ryb2tlU3R5bGUucGF0dGVybi5nZXQoKSk7CisgICAgdXBkYXRlU2hhZG93KG1fb3JpZ2luYWxT
dGF0ZS5zaGFkb3cub2Zmc2V0LCBtX29yaWdpbmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2lu
YWxTdGF0ZS5zaGFkb3cuY29sb3IsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNm
b3JtcyA/IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtczo6Tm8pOworfQorCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbENvbG9y
KGNvbnN0IENvbG9yJiBuZXdDb2xvciwgR3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0ZXJuKiBu
ZXdQYXR0ZXJuKQoreworICAgIC8vIFRoaXMgY2hlY2sgbG9va3Mgd3JvbmcgYnV0IGl0IGFjdHVh
bGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0ZWQgdXNlLgorICAgIC8vIENUIHdpbGwgb25seSBldmVy
IHNldCB0aGlzIHRvIGEgc29saWQgY29sb3IsIHdoaWNoIHRoaXMgaXMgdGhlIGNvcnJlY3QgY2hl
Y2sgZm9yLgorICAgIC8vIEluIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCkgd2Ugc2V0IGl0IGJh
Y2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2luYWxseSwgd2hpY2ggdGhpcyBjaGVjayB3b3JrcyBjb3Jy
ZWN0bHkgZm9yIHRvby4KKyAgICBpZiAobmV3Q29sb3IgPT0gbV9jdXJyZW50U3RhdGUuZmlsbFN0
eWxlLmNvbG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBu
ZXdTdGF0ZTsKKyAgICBuZXdTdGF0ZS5maWxsQ29sb3IgPSBuZXdDb2xvcjsKKyAgICBpZiAobmV3
R3JhZGllbnQpCisgICAgICAgIG5ld1N0YXRlLmZpbGxHcmFkaWVudCA9IG5ld0dyYWRpZW50Owor
ICAgIGlmIChuZXdQYXR0ZXJuKQorICAgICAgICBuZXdTdGF0ZS5maWxsUGF0dGVybiA9IG5ld1Bh
dHRlcm47CisgICAgbV9vd25lci51cGRhdGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRl
eHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdlIH0pOworICAgIG1fY3VycmVudFN0YXRlLmZpbGxTdHls
ZS5jb2xvciA9IG5ld0NvbG9yOworfQorCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRl
U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImIG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQs
IFBhdHRlcm4qIG5ld1BhdHRlcm4pCit7CisgICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBi
dXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZvciBvdXIgbGltaXRlZCB1c2UuCisgICAgLy8gQ1Qgd2ls
bCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8gYSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUg
Y29ycmVjdCBjaGVjayBmb3IuCisgICAgLy8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3
ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNr
IHdvcmtzIGNvcnJlY3RseSBmb3IgdG9vLgorICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRT
dGF0ZS5zdHJva2VTdHlsZS5jb2xvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGUgbmV3U3RhdGU7CisgICAgbmV3U3RhdGUuc3Ryb2tlQ29sb3IgPSBuZXdDb2xv
cjsKKyAgICBpZiAobmV3R3JhZGllbnQpCisgICAgICAgIG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50
ID0gbmV3R3JhZGllbnQ7CisgICAgaWYgKG5ld1BhdHRlcm4pCisgICAgICAgIG5ld1N0YXRlLnN0
cm9rZVBhdHRlcm4gPSBuZXdQYXR0ZXJuOworICAgIG1fb3duZXIudXBkYXRlU3RhdGUobmV3U3Rh
dGUsIHsgR3JhcGhpY3NDb250ZXh0U3RhdGU6OlN0cm9rZUNvbG9yQ2hhbmdlIH0pOworICAgIG1f
Y3VycmVudFN0YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gbmV3Q29sb3I7Cit9CisKK3ZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjp1cGRhdGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0pCit7
CisgICAgaWYgKGN0bSA9PSBtX2N1cnJlbnRTdGF0ZS5jdG0pCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fb3duZXIuc2V0Q1RNKGN0bSk7CisgICAgbV9jdXJyZW50U3RhdGUuY3RtID0gY3RtOwor
fQorCitzdGF0aWMgYm9vbCBzaGFkb3dJc0NsZWFyZWQoY29uc3QgRmxvYXRTaXplJiBzaGFkb3dP
ZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIpCit7CisgICAgcmV0dXJuIHNoYWRvd09mZnNldCA9PSBG
bG9hdFNpemUoKSAmJiAhc2hhZG93Qmx1cjsKK30KKwordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnVwZGF0ZVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93
Qmx1ciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykKK3sKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNvbnNp
ZGVyIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zIGlmIG5vYm9keSBoYXMgYW55IHNoYWRvd3MuCisg
ICAgaWYgKHNoYWRvd0lzQ2xlYXJlZChzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpICYmIHNoYWRv
d0lzQ2xlYXJlZChtX2N1cnJlbnRTdGF0ZS5zaGFkb3cub2Zmc2V0LCBtX2N1cnJlbnRTdGF0ZS5z
aGFkb3cuYmx1cikpCisgICAgICAgIHJldHVybjsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRl
IG5ld1N0YXRlOworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIHN0
YXRlQ2hhbmdlRmxhZ3M7CisKKyAgICBpZiAoc2hhZG93T2Zmc2V0ICE9IG1fY3VycmVudFN0YXRl
LnNoYWRvdy5vZmZzZXQgfHwgc2hhZG93Qmx1ciAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1
ciB8fCBzaGFkb3dDb2xvciAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuY29sb3IpIHsKKyAgICAg
ICAgbmV3U3RhdGUuc2hhZG93T2Zmc2V0ID0gc2hhZG93T2Zmc2V0OworICAgICAgICBuZXdTdGF0
ZS5zaGFkb3dCbHVyID0gc2hhZG93Qmx1cjsKKyAgICAgICAgbmV3U3RhdGUuc2hhZG93Q29sb3Ig
PSBzaGFkb3dDb2xvcjsKKyAgICAgICAgc3RhdGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250
ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7CisgICAgfQorICAgIGlmIChzaGFkb3dzSWdub3JlVHJh
bnNmb3JtcyAhPSBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQgJiYgKHNoYWRv
d3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpICE9IG1f
Y3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zKSB7CisgICAgICAgIG5ld1N0YXRl
LnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID0gKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOworICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFk
ZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOwor
ICAgIH0KKyAgICBpZiAoc3RhdGVDaGFuZ2VGbGFncy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX293bmVyLnVwZGF0ZVN0YXRlKG5ld1N0YXRlLCBzdGF0ZUNoYW5nZUZsYWdzKTsK
KworICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQgPSBzaGFkb3dPZmZzZXQ7CisgICAg
bV9jdXJyZW50U3RhdGUuc2hhZG93LmJsdXIgPSBzaGFkb3dCbHVyOworICAgIG1fY3VycmVudFN0
YXRlLnNoYWRvdy5jb2xvciA9IHNoYWRvd0NvbG9yOworICAgIG1fY3VycmVudFN0YXRlLnNoYWRv
dy5pZ25vcmVUcmFuc2Zvcm1zID0gKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOjpZZXMpOworfQorCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBk
YXRlU2hhZG93KENHU3R5bGVSZWYgc3R5bGUpCit7CisgICAgaWYgKENHU3R5bGVHZXRUeXBlKHN0
eWxlKSAhPSBrQ0dTdHlsZVNoYWRvdykgeworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3Jl
IGtpbmRzIG9mIENHU3R5bGVzLgorICAgICAgICB1cGRhdGVTaGFkb3coezAsIDB9LCAwLCBDb2xv
cigpLCBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgY29uc3QgYXV0byYgc2hhZG93U3R5bGUgPSAqc3RhdGljX2Nhc3Q8
Y29uc3QgQ0dTaGFkb3dTdHlsZSo+KENHU3R5bGVHZXREYXRhKHN0eWxlKSk7CisgICAgYXV0byBy
YWQgPSBkZWcycmFkKHNoYWRvd1N0eWxlLmF6aW11dGggLSAxODApOworICAgIGF1dG8gc2hhZG93
T2Zmc2V0ID0gRmxvYXRTaXplKHN0ZDo6Y29zKHJhZCksIHN0ZDo6c2luKHJhZCkpICogc2hhZG93
U3R5bGUuaGVpZ2h0OworICAgIGF1dG8gc2hhZG93Q29sb3IgPSBDR1N0eWxlR2V0Q29sb3Ioc3R5
bGUpOworICAgIHVwZGF0ZVNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd1N0eWxlLnJhZGl1cywg
Q29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzaGFkb3dDb2xvciksIFNoYWRvd3NJ
Z25vcmVUcmFuc2Zvcm1zOjpZZXMpOworfQorCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVj
b3JkQmVnaW5MYXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENH
UmVjdCkKK3sKKyAgICB1cGRhdGVDVE0oKkNHR1N0YXRlR2V0Q1RNKGdzdGF0ZSkpOworICAgIGF1
dG8gYWxwaGEgPSBDR0dTdGF0ZUdldEFscGhhKGdzdGF0ZSk7CisgICAgbV9vd25lci5iZWdpblRy
YW5zcGFyZW5jeUxheWVyKGFscGhhKTsKK30KKwordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJl
Y29yZEVuZExheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZSkKK3sK
KyAgICB1cGRhdGVDVE0oKkNHR1N0YXRlR2V0Q1RNKGdzdGF0ZSkpOworICAgIG1fb3duZXIuZW5k
VHJhbnNwYXJlbmN5TGF5ZXIoKTsKK30KKworc3RhdGljIFZlY3RvcjxDR1NpemU+IGNvbXB1dGVB
ZHZhbmNlc0Zyb21Qb3NpdGlvbnMoY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2l6ZV90IGNv
dW50LCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSYgdGV4dE1hdHJpeCkKK3sKKyAgICBWZWN0b3I8
Q0dTaXplPiByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudCAtIDE7ICsr
aSkgeworICAgICAgICBhdXRvIG5leHRQb3NpdGlvbiA9IHBvc2l0aW9uc1tpICsgMV07CisgICAg
ICAgIGF1dG8gY3VycmVudFBvc2l0aW9uID0gcG9zaXRpb25zW2ldOworICAgICAgICBhdXRvIGFk
dmFuY2UgPSBDR1NpemVNYWtlKG5leHRQb3NpdGlvbi54IC0gY3VycmVudFBvc2l0aW9uLngsIG5l
eHRQb3NpdGlvbi55IC0gY3VycmVudFBvc2l0aW9uLnkpOworICAgICAgICByZXN1bHQuYXBwZW5k
KENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNmb3JtKGFkdmFuY2UsIHRleHRNYXRyaXgpKTsKKyAgICB9
CisgICAgcmVzdWx0LmNvbnN0cnVjdEFuZEFwcGVuZChDR1NpemVNYWtlKDAsIDApKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0ds
eXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIGNvbnN0IENHQWZm
aW5lVHJhbnNmb3JtKiwgY29uc3QgQ0dHbHlwaCBnbHlwaHNbXSwgY29uc3QgQ0dQb2ludCBwb3Np
dGlvbnNbXSwgc2l6ZV90IGNvdW50KQoreworICAgIEFTU0VSVF9JTVBMSUVTKG1fZGVyaXZlRm9u
dEZyb21Db250ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6Tm8sIG1fb3JpZ2luYWxGb250
KTsKKworICAgIGlmICghY291bnQpCisgICAgICAgIHJldHVybjsKKworICAgIENHRm9udFJlZiB1
c2VkRm9udCA9IENHR1N0YXRlR2V0Rm9udChnc3RhdGUpOworICAgIGlmIChtX2Rlcml2ZUZvbnRG
cm9tQ29udGV4dCA9PSBEZXJpdmVGb250RnJvbUNvbnRleHQ6Ok5vICYmIHVzZWRGb250ICE9IGFk
b3B0Q0YoQ1RGb250Q29weUdyYXBoaWNzRm9udChtX29yaWdpbmFsRm9udC0+cGxhdGZvcm1EYXRh
KCkuY3RGb250KCksIG51bGxwdHIpKS5nZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICBhdXRvIHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdldFRleHRQb3Np
dGlvbihtX2ludGVybmFsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgIEFTU0VSVCgh
dGV4dFBvc2l0aW9uLngpOworICAgIEFTU0VSVCghdGV4dFBvc2l0aW9uLnkpOworI2VuZGlmCisK
KyAgICB1cGRhdGVDVE0oKkNHR1N0YXRlR2V0Q1RNKGdzdGF0ZSkpOworCisgICAgLy8gV2Ugd2Fu
dCB0aGUgcmVwbGF5ZXIncyBDVE0gYW5kIHRleHQgbWF0cml4IHRvIG1hdGNoIHRoZSBjdXJyZW50
IENUTSBhbmQgdGV4dCBtYXRyaXguCisgICAgLy8gVGhlIGN1cnJlbnQgdGV4dCBtYXRyaXggaXMg
YSBjb25jYXRlbmF0aW9uIG9mIHdoYXRldmVyIFdlYktpdCBzZXRzIGl0IHRvIGFuZCB3aGF0ZXZl
cgorICAgIC8vIENvcmUgVGV4dCBhcHBlbmRzIHRvIGl0LiBTbywgd2UgaGF2ZQorICAgIC8vIENU
TSAqIG1fb3JpZ2luYWxUZXh0TWF0cml4ICogQ29yZSBUZXh0J3MgdGV4dCBtYXRyaXguCisgICAg
Ly8gSG93ZXZlciwgQ0dDb250ZXh0R2V0VGV4dE1hdHJpeCgpIGp1c3QgdGVsbHMgdXMgd2hhdCB0
aGUgd2hvbGUgdGV4dCBtYXRyaXggaXMsIHNvCisgICAgLy8gbV9vcmlnaW5hbFRleHRNYXRyaXgg
KiBDb3JlIFRleHQncyB0ZXh0IG1hdHJpeCA9IGN1cnJlbnRUZXh0TWF0cml4LgorICAgIC8vIFRo
ZSBvbmx5IHdheSB3ZSBjYW4gZW11bGF0ZSBDb3JlIFRleHQncyB0ZXh0IG1hdHJpeCBpcyBieSBt
b2RpZnlpbmcgdGhlIENUTSBoZXJlLgorICAgIC8vIFNvLCBpZiB3ZSBkbyB0aGF0LCB0aGUgR1BV
IHByb2Nlc3Mgd2lsbCBoYXZlCisgICAgLy8gQ1RNICogWCAqIG1fb3JpZ2luYWxUZXh0TWF0cml4
CisgICAgLy8gSWYgeW91IHNldCB0aGVzZSB0d28gZXF1YWwgdG8gZWFjaCBvdGhlciwgYW5kIHNv
bHZlIGZvciBYLCB5b3UgZ2V0CisgICAgLy8gQ1RNICogY3VycmVudFRleHRNYXRyaXggPSBDVE0g
KiBYICogbV9vcmlnaW5hbFRleHRNYXRyaXgKKyAgICAvLyBjdXJyZW50VGV4dE1hdHJpeCAqIGlu
dmVyc2UobV9vcmlnaW5hbFRleHRNYXRyaXgpID0gWAorICAgIEFmZmluZVRyYW5zZm9ybSBjdXJy
ZW50VGV4dE1hdHJpeCA9IENHQ29udGV4dEdldFRleHRNYXRyaXgobV9pbnRlcm5hbENvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtRml4dXA7CisgICAg
aWYgKGF1dG8gaW52ZXJ0ZWRPcmlnaW5hbFRleHRNYXRyaXggPSBtX29yaWdpbmFsVGV4dE1hdHJp
eC5pbnZlcnNlKCkpCisgICAgICAgIGN0bUZpeHVwID0gY3VycmVudFRleHRNYXRyaXggKiBpbnZl
cnRlZE9yaWdpbmFsVGV4dE1hdHJpeC52YWx1ZSgpOworICAgIEFmZmluZVRyYW5zZm9ybSBpbnZl
cnNlQ1RNRml4dXA7CisgICAgaWYgKGF1dG8gaW52ZXJzZSA9IGN0bUZpeHVwLmludmVyc2UoKSkK
KyAgICAgICAgaW52ZXJzZUNUTUZpeHVwID0gaW52ZXJzZS52YWx1ZSgpOworICAgIGVsc2UKKyAg
ICAgICAgY3RtRml4dXAgPSBBZmZpbmVUcmFuc2Zvcm0oKTsKKyAgICBtX293bmVyLmNvbmNhdENU
TShjdG1GaXh1cCk7CisKKyAgICBhdXRvIGZpbGxDb2xvciA9IENHR1N0YXRlR2V0RmlsbENvbG9y
KGdzdGF0ZSk7CisgICAgYXV0byBzdHJva2VDb2xvciA9IENHR1N0YXRlR2V0U3Ryb2tlQ29sb3Io
Z3N0YXRlKTsKKyAgICB1cGRhdGVGaWxsQ29sb3IoQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29s
b3JTcGFjZShmaWxsQ29sb3IpKTsKKyAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRl
QW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CisgICAgdXBkYXRlU2hhZG93KENH
R1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CisKKyAgICBhdXRvIGZvbnRTaXplID0gQ0dHU3RhdGVH
ZXRGb250U2l6ZShnc3RhdGUpOworICAgIFJlZiBmb250ID0gbV9kZXJpdmVGb250RnJvbUNvbnRl
eHQgPT0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpObyA/ICptX29yaWdpbmFsRm9udCA6IEZvbnQ6
OmNyZWF0ZShGb250UGxhdGZvcm1EYXRhKGFkb3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEdyYXBoaWNz
Rm9udCh1c2VkRm9udCwgZm9udFNpemUsIG51bGxwdHIsIG51bGxwdHIpKSwgZm9udFNpemUpKTsK
KyAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRl
QWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4
KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0p
LCBtX3Ntb290aGluZ01vZGUpOworCisgICAgbV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNUTUZp
eHVwKTsKK30KKwordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1Jl
bmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENHUmVjdCByZWN0LCBDR0ltYWdl
UmVmIGNnSW1hZ2UpCit7CisgICAgdXBkYXRlQ1RNKCpDR0dTdGF0ZUdldENUTShnc3RhdGUpKTsK
KyAgICB1cGRhdGVTaGFkb3coQ0dHU3RhdGVHZXRTdHlsZShnc3RhdGUpKTsKKworICAgIC8vIENv
cmUgR3JhcGhpY3MgYXNzdW1lcyBhICJ5IHVwIiBjb29yZGluYXRlIHN5c3RlbSwgYnV0IGluIFdl
YktpdCwgd2UgdXNlIGEgInktZG93biIgY29vcmRpbmF0ZSBzeXN0ZW0uCisgICAgLy8gVGhpcyBt
ZWFucyB0aGF0IFdlYktpdCdzIGRyYXdpbmcgcm91dGluZXMgKEdyYXBoaWNzQ29udGV4dDo6ZHJh
d0ltYWdlKCkpIGludGVudGlvbmFsbHkgZHJhdyBpbWFnZXMgdXBzaWRlLWRvd24gZnJvbSBDb3Jl
IEdyYXBoaWNzJ3MgcG9pbnQgb2Ygdmlldy4KKyAgICAvLyAoVGhlcmUncyBhIHktZmxpcCBpbnNp
ZGUgdGhlIGltcGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkuKQor
ICAgIC8vIFRoZSByZWN0IGhhcyB0aGUgcmlnaHQgYm91bmRzLCBidXQgd2UgbmVlZCB0byB0cmFu
c2Zvcm0gZnJvbSBDRydzIGNvb3JkaW5hdGUgc3lzdGVtIHRvIFdlYktpdCdzIGJ5IHBlcmZvcm1p
bmcgb3VyIG93biB5LWZsaXAgc28gaW1hZ2VzIGFyZSBkcmF3biB0aGUgcmlnaHQtc2lkZS11cC4K
KyAgICAvLyBXZSBkbyB0aGlzIGF0IHRoZSBib3VuZGFyeSBiZXR3ZWVuIHRoZSB0d28gQVBJcywg
d2hpY2ggaXMgcmlnaHQgaGVyZS4KKyAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCByZWN0LnNpemUu
aGVpZ2h0ICsgMiAqIHJlY3Qub3JpZ2luLnkpOworICAgIG1fb3duZXIuc2NhbGUoRmxvYXRTaXpl
KDEsIC0xKSk7CisKKyAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjZ0ltYWdl
KTsKKyAgICBtX293bmVyLmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIEZs
b2F0UmVjdChyZWN0KSwgRmxvYXRSZWN0IHt7IH0sIGltYWdlLT5zaXplKCl9LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyB7IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQgfSk7CisKKyAgICAv
LyBVbmRvIHRoZSBhYm92ZSB5LWZsaXAgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KKyAgICBtX293
bmVyLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworICAgIG1fb3duZXIudHJhbnNsYXRlKDAsIC0o
cmVjdC5zaXplLmhlaWdodCArIDIgKiByZWN0Lm9yaWdpbi55KSk7Cit9CisKK3N0cnVjdCBHbHlw
aHNBbmRBZHZhbmNlc1N0b3JhZ2UgeworICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPiBnbHlw
aHM7CisgICAgVmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZT4gYWR2YW5jZXM7Cit9OworCitzdHJ1
Y3QgR2x5cGhzQW5kQWR2YW5jZXMgeworICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBo
czsKKyAgICBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzOworICAgIHVuc2lnbmVk
IG51bUdseXBoczsKKyAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2U7CisgICAg
c3RkOjpvcHRpb25hbDxHbHlwaHNBbmRBZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7Cit9OworCitz
dGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMgZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9udCYg
Zm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFk
dmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMpCit7CisgICAgYXV0byBvdHN2Z0ds
eXBocyA9IGZvbnQuZmluZE9UU1ZHR2x5cGhzKGdseXBocywgbnVtR2x5cGhzKTsKKyAgICBpZiAo
IW90c3ZnR2x5cGhzKQorICAgICAgICByZXR1cm4geyBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlw
aHMsIG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2UoKSwgeyB9fTsKKworICAgIEFTU0VSVChvdHN2Z0ds
eXBocy0+c2l6ZSgpID49IG51bUdseXBocyk7CisKKyAgICBHbHlwaHNBbmRBZHZhbmNlcyByZXN1
bHQ7CisgICAgcmVzdWx0LmluaXRpYWxBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgp
OworICAgIHJlc3VsdC5zdG9yYWdlID0gR2x5cGhzQW5kQWR2YW5jZXNTdG9yYWdlKCk7CisKKyAg
ICByZXN1bHQuc3RvcmFnZS0+Z2x5cGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtR2x5cGhz
KTsKKyAgICByZXN1bHQuc3RvcmFnZS0+YWR2YW5jZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShu
dW1HbHlwaHMpOworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdseXBoczsgKytp
KSB7CisgICAgICAgIEFTU0VSVChyZXN1bHQuc3RvcmFnZS0+Z2x5cGhzLnNpemUoKSA9PSByZXN1
bHQuc3RvcmFnZS0+YWR2YW5jZXMuc2l6ZSgpKTsKKyAgICAgICAgaWYgKG90c3ZnR2x5cGhzLT5x
dWlja0dldChpKSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdC5zdG9yYWdlLT5hZHZhbmNlcy5p
c0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmVzdWx0LmluaXRpYWxBZHZhbmNlID0gbWFrZUds
eXBoQnVmZmVyQWR2YW5jZShzaXplKHJlc3VsdC5pbml0aWFsQWR2YW5jZSkgKyBzaXplKGFkdmFu
Y2VzW2ldKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LnN0b3Jh
Z2UtPmFkdmFuY2VzLmxhc3QoKSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2Uoc2l6ZShyZXN1bHQu
c3RvcmFnZS0+YWR2YW5jZXMubGFzdCgpKSArIHNpemUoYWR2YW5jZXNbaV0pKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdC5zdG9yYWdlLT5nbHlwaHMudW5jaGVja2VkQXBw
ZW5kKGdseXBoc1tpXSk7CisgICAgICAgICAgICByZXN1bHQuc3RvcmFnZS0+YWR2YW5jZXMudW5j
aGVja2VkQXBwZW5kKGFkdmFuY2VzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQocmVz
dWx0LnN0b3JhZ2UtPmdseXBocy5zaXplKCkgPT0gcmVzdWx0LnN0b3JhZ2UtPmFkdmFuY2VzLnNp
emUoKSk7CisgICAgfQorCisgICAgcmVzdWx0LmdseXBocyA9IHJlc3VsdC5zdG9yYWdlLT5nbHlw
aHMuZGF0YSgpOworICAgIHJlc3VsdC5hZHZhbmNlcyA9IHJlc3VsdC5zdG9yYWdlLT5hZHZhbmNl
cy5kYXRhKCk7CisgICAgcmVzdWx0Lm51bUdseXBocyA9IHJlc3VsdC5zdG9yYWdlLT5nbHlwaHMu
c2l6ZSgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCog
Z2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1H
bHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNt
b290aGluZ01vZGUpCit7CisgICAgaWYgKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29u
c3RydWN0RHJhd0dseXBoczo6Tm8pIHsKKyAgICAgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2Fj
aGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21v
b3RoaW5nTW9kZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQobV9kZWNv
bnN0cnVjdERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworCisgICAg
Ly8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83MDE2NjU1Mj4gUmVjb3JkIE9UU1ZHIGdseXBocy4K
KyAgICBHbHlwaHNBbmRBZHZhbmNlcyBnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBo
cyA9IGZpbHRlck91dE9UU1ZHR2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBo
cyk7CisgICAgQVNTRVJUKGdseXBoc0FuZEFkdmFuY2VzV2l0aG91dE9UU1ZHR2x5cGhzLmdseXBo
cyA9PSBnbHlwaHMgfHwgZ2x5cGhzQW5kQWR2YW5jZXNXaXRob3V0T1RTVkdHbHlwaHMuZ2x5cGhz
ID09IGdseXBoc0FuZEFkdmFuY2VzV2l0aG91dE9UU1ZHR2x5cGhzLnN0b3JhZ2UtPmdseXBocy5k
YXRhKCkpOworICAgIEFTU0VSVChnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5h
ZHZhbmNlcyA9PSBhZHZhbmNlcyB8fCBnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBo
cy5hZHZhbmNlcyA9PSBnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5zdG9yYWdl
LT5hZHZhbmNlcy5kYXRhKCkpOworCisgICAgcHJlcGFyZUludGVybmFsQ29udGV4dChmb250LCBz
bW9vdGhpbmdNb2RlKTsKKyAgICBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFsQ29u
dGV4dCwgZm9udCwgZ2x5cGhzQW5kQWR2YW5jZXNXaXRob3V0T1RTVkdHbHlwaHMuZ2x5cGhzLCBn
bHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5hZHZhbmNlcywgZ2x5cGhzQW5kQWR2
YW5jZXNXaXRob3V0T1RTVkdHbHlwaHMubnVtR2x5cGhzLCBzdGFydFBvaW50ICsgc2l6ZShnbHlw
aHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5pbml0aWFsQWR2YW5jZSksIHNtb290aGlu
Z01vZGUpOworICAgIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7Cit9CisKK3ZvaWQgRHJhd0ds
eXBoc1JlY29yZGVyOjpkcmF3TmF0aXZlVGV4dChDVExpbmVSZWYgbGluZSwgQ0dSZWN0IGxpbmVS
ZWN0LCBDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSkKK3sKKyAgICBBU1NFUlQobV9k
ZWNvbnN0cnVjdERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworCisg
ICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihtX293bmVyKTsKKworICAgIG1fb3du
ZXIudHJhbnNsYXRlKGxpbmVSZWN0Lm9yaWdpbi54LCBsaW5lUmVjdC5vcmlnaW4ueSArIGxpbmVS
ZWN0LnNpemUuaGVpZ2h0KTsKKyAgICBtX293bmVyLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwor
CisgICAgcHJlcGFyZUludGVybmFsQ29udGV4dChGb250OjpjcmVhdGUoRm9udFBsYXRmb3JtRGF0
YShmb250LCBmb250U2l6ZSkpLCBGb250U21vb3RoaW5nTW9kZTo6U3VicGl4ZWxBbnRpYWxpYXNl
ZCk7CisgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKG1faW50ZXJuYWxDb250ZXh0LT5wbGF0
Zm9ybUNvbnRleHQoKSwgMCwgMCk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLCBtX2ludGVybmFsQ29u
dGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOworICAgIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGQ3N2Y3NDE2ZGQ1NjVjM2QzZjliNDU1ODg2MzA4YjZhMzliNWVmOTAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJBZmZp
bmVUcmFuc2Zvcm0uaCIKLSNpbmNsdWRlICJDb2xvci5oIgotI2luY2x1ZGUgIkdyYWRpZW50Lmgi
Ci0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiUGF0dGVybi5oIgotI2lu
Y2x1ZGUgIlRleHRGbGFncy5oIgotI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KLQotI2lmIFVT
RShDT1JFX1RFWFQpCi0jaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgotI2lu
Y2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBGbG9hdFBvaW50OwotY2xhc3MgRm9udDsKLWNsYXNzIEdseXBo
QnVmZmVyOwotY2xhc3MgR3JhcGhpY3NDb250ZXh0OwotCi1uYW1lc3BhY2UgRGlzcGxheUxpc3Qg
ewotCi1jbGFzcyBSZWNvcmRlcjsKLQotY2xhc3MgRHJhd0dseXBoc1JlY29yZGVyIHsKLXB1Ymxp
YzoKLSAgICBlbnVtIGNsYXNzIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiB7Ci0gICAgICAgIERl
Y29uc3RydWN0LAotICAgICAgICBEb250RGVjb25zdHJ1Y3QKLSAgICB9OwotICAgIGV4cGxpY2l0
IERyYXdHbHlwaHNSZWNvcmRlcihSZWNvcmRlciYsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbik7
Ci0KLSAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyR2x5
cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0
IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7Ci0KLSNpZiBVU0Uo
Q09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQotICAgIHZvaWQgcmVjb3JkQmVnaW5MYXllcihD
R1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dSZWN0KTsKLSAgICB2b2lkIHJlY29y
ZEVuZExheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmKTsKLSAgICB2b2lkIHJl
Y29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYsIGNvbnN0IENH
QWZmaW5lVHJhbnNmb3JtKiwgY29uc3QgQ0dHbHlwaFtdLCBjb25zdCBDR1BvaW50IHBvc2l0aW9u
c1tdLCBzaXplX3QgY291bnQpOwotICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlKENHUmVuZGVyaW5n
U3RhdGVSZWYsIENHR1N0YXRlUmVmLCBDR1JlY3QsIENHSW1hZ2VSZWYpOwotI2VuZGlmCi0KLSAg
ICBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb247IH0KLQotcHJpdmF0ZToKLSNp
ZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQotICAgIFVuaXF1ZVJlZjxHcmFwaGlj
c0NvbnRleHQ+IGNyZWF0ZUludGVybmFsQ29udGV4dCgpOwotI2VuZGlmCi0KLSAgICB2b2lkIHBv
cHVsYXRlSW50ZXJuYWxTdGF0ZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYpOwotICAgIHZv
aWQgcG9wdWxhdGVJbnRlcm5hbENvbnRleHQoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmKTsK
LSAgICB2b2lkIHByZXBhcmVJbnRlcm5hbENvbnRleHQoY29uc3QgRm9udCYsIEZvbnRTbW9vdGhp
bmdNb2RlKTsKLSAgICB2b2lkIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7Ci0KLSAgICB2b2lk
IHVwZGF0ZUZpbGxDb2xvcihjb25zdCBDb2xvciYsIEdyYWRpZW50KiA9IG51bGxwdHIsIFBhdHRl
cm4qID0gbnVsbHB0cik7Ci0gICAgdm9pZCB1cGRhdGVTdHJva2VDb2xvcihjb25zdCBDb2xvciYs
IEdyYWRpZW50KiA9IG51bGxwdHIsIFBhdHRlcm4qID0gbnVsbHB0cik7Ci0gICAgdm9pZCB1cGRh
dGVDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7Ci0gICAgZW51bSBjbGFzcyBTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyB7Ci0gICAgICAgIFVuc3BlY2lmaWVkLAotICAgICAgICBZZXMsCi0gICAg
ICAgIE5vCi0gICAgfTsKLSAgICB2b2lkIHVwZGF0ZVNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNo
YWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1ciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBT
aGFkb3dzSWdub3JlVHJhbnNmb3Jtcyk7Ci0KLSNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZP
Uk0oV0lOKQotICAgIHZvaWQgdXBkYXRlU2hhZG93KENHU3R5bGVSZWYpOwotI2VuZGlmCi0KLSAg
ICBSZWNvcmRlciYgbV9vd25lcjsKLSAgICBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gbV9kcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb247Ci0KLSNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0o
V0lOKQotICAgIFVuaXF1ZVJlZjxHcmFwaGljc0NvbnRleHQ+IG1faW50ZXJuYWxDb250ZXh0Owot
I2VuZGlmCi0KLSAgICBjb25zdCBGb250KiBtX29yaWdpbmFsRm9udCB7IG51bGxwdHIgfTsKLSAg
ICBGb250U21vb3RoaW5nTW9kZSBtX3Ntb290aGluZ01vZGUgeyBGb250U21vb3RoaW5nTW9kZTo6
QXV0b1Ntb290aGluZyB9OwotICAgIEFmZmluZVRyYW5zZm9ybSBtX29yaWdpbmFsVGV4dE1hdHJp
eDsKLQotICAgIHN0cnVjdCBTdGF0ZSB7Ci0gICAgICAgIHN0cnVjdCBTdHlsZSB7Ci0gICAgICAg
ICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZ3JhZGllbnQ7
Ci0gICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gZ3JhZGllbnRTcGFjZVRyYW5zZm9ybTsKLSAg
ICAgICAgICAgIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuOwotICAgICAgICB9OwotICAgICAgICBT
dHlsZSBmaWxsU3R5bGU7Ci0gICAgICAgIFN0eWxlIHN0cm9rZVN0eWxlOwotCi0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBjdG07Ci0KLSAgICAgICAgc3RydWN0IFNoYWRvd1N0YXRlIHsKLSAgICAg
ICAgICAgIEZsb2F0U2l6ZSBvZmZzZXQ7Ci0gICAgICAgICAgICBmbG9hdCBibHVyIHsgMCB9Owot
ICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBib29sIGlnbm9yZVRyYW5zZm9y
bXMgeyBmYWxzZSB9OwotICAgICAgICB9OwotICAgICAgICBTaGFkb3dTdGF0ZSBzaGFkb3c7Ci0g
ICAgfTsKLSAgICBTdGF0ZSBtX29yaWdpbmFsU3RhdGU7Ci0gICAgU3RhdGUgbV9jdXJyZW50U3Rh
dGU7Ci19OwotCi19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTFiZTNjZGI5M2FiNDBiZGNlYjBlOTllYjhiYWRhMzViYTc3NDVjZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVj
b3JkZXJDb3JlVGV4dC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0MzYgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmgiCi0KLSNp
bmNsdWRlICJCaXRtYXBJbWFnZS5oIgotI2luY2x1ZGUgIkNvbG9yLmgiCi0jaW5jbHVkZSAiRGlz
cGxheUxpc3RJdGVtcy5oIgotI2luY2x1ZGUgIkRpc3BsYXlMaXN0UmVjb3JkZXIuaCIKLSNpbmNs
dWRlICJGbG9hdFBvaW50LmgiCi0jaW5jbHVkZSAiRm9udC5oIgotI2luY2x1ZGUgIkZvbnRDYXNj
YWRlLmgiCi0jaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKLSNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHRDRy5oIgotCi0jaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KLSNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+Ci0KLSNpZiBQTEFURk9STShXSU4pCi0jaW5jbHVkZSA8cGFsL3NwaS93aW4vQ29y
ZVRleHRTUElXaW4uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7Ci0KLXN0YXRpYyBDR0NvbnRleHREZWxlZ2F0ZVJlZiBiZWdpbkxheWVy
KENHQ29udGV4dERlbGVnYXRlUmVmIGRlbGVnYXRlLCBDR1JlbmRlcmluZ1N0YXRlUmVmIHJzdGF0
ZSwgQ0dHU3RhdGVSZWYgZ3N0YXRlLCBDR1JlY3QgcmVjdCwgQ0ZEaWN0aW9uYXJ5UmVmLCBDR0Nv
bnRleHREZWxlZ2F0ZVJlZikKLXsKLSAgICBEcmF3R2x5cGhzUmVjb3JkZXImIHJlY29yZGVyID0g
KnN0YXRpY19jYXN0PERyYXdHbHlwaHNSZWNvcmRlcio+KENHQ29udGV4dERlbGVnYXRlR2V0SW5m
byhkZWxlZ2F0ZSkpOwotICAgIHJlY29yZGVyLnJlY29yZEJlZ2luTGF5ZXIocnN0YXRlLCBnc3Rh
dGUsIHJlY3QpOwotICAgIHJldHVybiBkZWxlZ2F0ZTsKLX0KLQotc3RhdGljIENHQ29udGV4dERl
bGVnYXRlUmVmIGVuZExheWVyKENHQ29udGV4dERlbGVnYXRlUmVmIGRlbGVnYXRlLCBDR1JlbmRl
cmluZ1N0YXRlUmVmIHJzdGF0ZSwgQ0dHU3RhdGVSZWYgZ3N0YXRlKQotewotICAgIERyYXdHbHlw
aHNSZWNvcmRlciYgcmVjb3JkZXIgPSAqc3RhdGljX2Nhc3Q8RHJhd0dseXBoc1JlY29yZGVyKj4o
Q0dDb250ZXh0RGVsZWdhdGVHZXRJbmZvKGRlbGVnYXRlKSk7Ci0gICAgcmVjb3JkZXIucmVjb3Jk
RW5kTGF5ZXIocnN0YXRlLCBnc3RhdGUpOwotICAgIHJldHVybiBkZWxlZ2F0ZTsKLX0KLQotc3Rh
dGljIENHRXJyb3IgZHJhd0dseXBocyhDR0NvbnRleHREZWxlZ2F0ZVJlZiBkZWxlZ2F0ZSwgQ0dS
ZW5kZXJpbmdTdGF0ZVJlZiByc3RhdGUsIENHR1N0YXRlUmVmIGdzdGF0ZSwgY29uc3QgQ0dBZmZp
bmVUcmFuc2Zvcm0qIHRtLCBjb25zdCBDR0dseXBoIGdseXBoc1tdLCBjb25zdCBDR1BvaW50IHBv
c2l0aW9uc1tdLCBzaXplX3QgY291bnQpCi17Ci0gICAgaWYgKENHR1N0YXRlR2V0QWxwaGEoZ3N0
YXRlKSA+IDApIHsKLSAgICAgICAgRHJhd0dseXBoc1JlY29yZGVyJiByZWNvcmRlciA9ICpzdGF0
aWNfY2FzdDxEcmF3R2x5cGhzUmVjb3JkZXIqPihDR0NvbnRleHREZWxlZ2F0ZUdldEluZm8oZGVs
ZWdhdGUpKTsKLSAgICAgICAgcmVjb3JkZXIucmVjb3JkRHJhd0dseXBocyhyc3RhdGUsIGdzdGF0
ZSwgdG0sIGdseXBocywgcG9zaXRpb25zLCBjb3VudCk7Ci0gICAgfQotICAgIHJldHVybiBrQ0dF
cnJvclN1Y2Nlc3M7Ci19Ci0KLXN0YXRpYyBDR0Vycm9yIGRyYXdJbWFnZShDR0NvbnRleHREZWxl
Z2F0ZVJlZiBkZWxlZ2F0ZSwgQ0dSZW5kZXJpbmdTdGF0ZVJlZiByc3RhdGUsIENHR1N0YXRlUmVm
IGdzdGF0ZSwgQ0dSZWN0IHJlY3QsIENHSW1hZ2VSZWYgaW1hZ2UpCi17Ci0gICAgRHJhd0dseXBo
c1JlY29yZGVyJiByZWNvcmRlciA9ICpzdGF0aWNfY2FzdDxEcmF3R2x5cGhzUmVjb3JkZXIqPihD
R0NvbnRleHREZWxlZ2F0ZUdldEluZm8oZGVsZWdhdGUpKTsKLSAgICByZWNvcmRlci5yZWNvcmRE
cmF3SW1hZ2UocnN0YXRlLCBnc3RhdGUsIHJlY3QsIGltYWdlKTsKLSAgICByZXR1cm4ga0NHRXJy
b3JTdWNjZXNzOwotfQotCi1VbmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0PiBEcmF3R2x5cGhzUmVj
b3JkZXI6OmNyZWF0ZUludGVybmFsQ29udGV4dCgpCi17Ci0gICAgYXV0byBjb250ZXh0RGVsZWdh
dGUgPSBhZG9wdENGKENHQ29udGV4dERlbGVnYXRlQ3JlYXRlKHRoaXMpKTsKLSAgICBDR0NvbnRl
eHREZWxlZ2F0ZVNldENhbGxiYWNrKGNvbnRleHREZWxlZ2F0ZS5nZXQoKSwgZGVCZWdpbkxheWVy
LCByZWludGVycHJldF9jYXN0PENHQ29udGV4dERlbGVnYXRlQ2FsbGJhY2s+KCZiZWdpbkxheWVy
KSk7Ci0gICAgQ0dDb250ZXh0RGVsZWdhdGVTZXRDYWxsYmFjayhjb250ZXh0RGVsZWdhdGUuZ2V0
KCksIGRlRW5kTGF5ZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dDb250ZXh0RGVsZWdhdGVDYWxsYmFj
az4oJmVuZExheWVyKSk7Ci0gICAgQ0dDb250ZXh0RGVsZWdhdGVTZXRDYWxsYmFjayhjb250ZXh0
RGVsZWdhdGUuZ2V0KCksIGRlRHJhd0dseXBocywgcmVpbnRlcnByZXRfY2FzdDxDR0NvbnRleHRE
ZWxlZ2F0ZUNhbGxiYWNrPigmV2ViQ29yZTo6RGlzcGxheUxpc3Q6OmRyYXdHbHlwaHMpKTsKLSAg
ICBDR0NvbnRleHREZWxlZ2F0ZVNldENhbGxiYWNrKGNvbnRleHREZWxlZ2F0ZS5nZXQoKSwgZGVE
cmF3SW1hZ2UsIHJlaW50ZXJwcmV0X2Nhc3Q8Q0dDb250ZXh0RGVsZWdhdGVDYWxsYmFjaz4oJmRy
YXdJbWFnZSkpOwotICAgIGF1dG8gY29udGV4dCA9IGFkb3B0Q0YoQ0dDb250ZXh0Q3JlYXRlV2l0
aERlbGVnYXRlKGNvbnRleHREZWxlZ2F0ZS5nZXQoKSwga0NHQ29udGV4dFR5cGVVbmtub3duLCBu
dWxscHRyLCBudWxscHRyKSk7Ci0gICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8R3JhcGhpY3NDb250
ZXh0Q0c+KGNvbnRleHQuZ2V0KCkpOwotfQotCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlw
aHNSZWNvcmRlcihSZWNvcmRlciYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCi0gICAgOiBtX293bmVyKG93bmVyKQotICAgICwgbV9kcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24oZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgICwgbV9p
bnRlcm5hbENvbnRleHQoY3JlYXRlSW50ZXJuYWxDb250ZXh0KCkpCi17Ci19Ci0KLXZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjpwb3B1bGF0ZUludGVybmFsU3RhdGUoY29uc3QgR3JhcGhpY3NDb250
ZXh0U3RhdGUmIGNvbnRleHRTdGF0ZSkKLXsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxl
LmNvbG9yID0gY29udGV4dFN0YXRlLmZpbGxDb2xvcjsKLSAgICBtX29yaWdpbmFsU3RhdGUuZmls
bFN0eWxlLmdyYWRpZW50ID0gY29udGV4dFN0YXRlLmZpbGxHcmFkaWVudDsKLSAgICBtX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0gPSBjb250ZXh0U3RhdGUu
ZmlsbEdyYWRpZW50U3BhY2VUcmFuc2Zvcm07Ci0gICAgbV9vcmlnaW5hbFN0YXRlLmZpbGxTdHls
ZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLmZpbGxQYXR0ZXJuOwotCi0gICAgbV9vcmlnaW5hbFN0
YXRlLnN0cm9rZVN0eWxlLmNvbG9yID0gY29udGV4dFN0YXRlLnN0cm9rZUNvbG9yOwotICAgIG1f
b3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5ncmFkaWVudCA9IGNvbnRleHRTdGF0ZS5zdHJva2VH
cmFkaWVudDsKLSAgICBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRy
YW5zZm9ybSA9IGNvbnRleHRTdGF0ZS5zdHJva2VHcmFkaWVudFNwYWNlVHJhbnNmb3JtOwotICAg
IG1fb3JpZ2luYWxTdGF0ZS5zdHJva2VTdHlsZS5wYXR0ZXJuID0gY29udGV4dFN0YXRlLnN0cm9r
ZVBhdHRlcm47Ci0KLSAgICBtX29yaWdpbmFsU3RhdGUuY3RtID0gbV9vd25lci5jdXJyZW50U3Rh
dGUoKS5jdG07IC8vIEZJWE1FOiBEZWFsIHdpdGggYmFzZSBDVE0uCi0KLSAgICBtX29yaWdpbmFs
U3RhdGUuc2hhZG93Lm9mZnNldCA9IGNvbnRleHRTdGF0ZS5zaGFkb3dPZmZzZXQ7Ci0gICAgbV9v
cmlnaW5hbFN0YXRlLnNoYWRvdy5ibHVyID0gY29udGV4dFN0YXRlLnNoYWRvd0JsdXI7Ci0gICAg
bV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5jb2xvciA9IGNvbnRleHRTdGF0ZS5zaGFkb3dDb2xvcjsK
LSAgICBtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMgPSBjb250ZXh0U3Rh
dGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci0KLSAgICBtX2N1cnJlbnRTdGF0ZSA9IG1fb3Jp
Z2luYWxTdGF0ZTsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnBvcHVsYXRlSW50ZXJu
YWxDb250ZXh0KGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBjb250ZXh0U3RhdGUpCi17Ci0g
ICAgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuY29sb3IuaXNWYWxpZCgpKQotICAgICAg
ICBtX2ludGVybmFsQ29udGV4dC0+c2V0RmlsbENvbG9yKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5
bGUuY29sb3IpOwotICAgIGVsc2UgaWYgKG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGll
bnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRGaWxsR3JhZGllbnQoKm1fb3JpZ2lu
YWxTdGF0ZS5maWxsU3R5bGUuZ3JhZGllbnQsIG1fb3JpZ2luYWxTdGF0ZS5maWxsU3R5bGUuZ3Jh
ZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVChtX29yaWdp
bmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pOwotICAgICAgICBpZiAobV9vcmlnaW5hbFN0YXRl
LmZpbGxTdHlsZS5wYXR0ZXJuKQotICAgICAgICAgICAgbV9pbnRlcm5hbENvbnRleHQtPnNldEZp
bGxQYXR0ZXJuKCptX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLnBhdHRlcm4pOwotICAgIH0KLQot
ICAgIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUuY29sb3IuaXNWYWxpZCgpKQotICAg
ICAgICBtX2ludGVybmFsQ29udGV4dC0+c2V0U3Ryb2tlQ29sb3IobV9vcmlnaW5hbFN0YXRlLnN0
cm9rZVN0eWxlLmNvbG9yKTsKLSAgICBlbHNlIGlmIChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUuZ3JhZGllbnQpCi0gICAgICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VHcmFkaWVu
dCgqbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxlLmdyYWRpZW50LCBtX29yaWdpbmFsU3RhdGUu
c3Ryb2tlU3R5bGUuZ3JhZGllbnRTcGFjZVRyYW5zZm9ybSk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IEFTU0VSVChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybik7Ci0gICAgICAgIGlm
IChtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybikKLSAgICAgICAgICAgIG1faW50
ZXJuYWxDb250ZXh0LT5zZXRTdHJva2VQYXR0ZXJuKCptX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5
bGUucGF0dGVybik7Ci0gICAgfQotCi0gICAgbV9pbnRlcm5hbENvbnRleHQtPnNldENUTShtX29y
aWdpbmFsU3RhdGUuY3RtKTsKLQotICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3dzSWdu
b3JlVHJhbnNmb3JtcyhtX29yaWdpbmFsU3RhdGUuc2hhZG93Lmlnbm9yZVRyYW5zZm9ybXMpOwot
ICAgIG1faW50ZXJuYWxDb250ZXh0LT5zZXRTaGFkb3cobV9vcmlnaW5hbFN0YXRlLnNoYWRvdy5v
ZmZzZXQsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuYmx1ciwgbV9vcmlnaW5hbFN0YXRlLnNoYWRv
dy5jb2xvciwgY29udGV4dFN0YXRlLnNoYWRvd1JhZGl1c01vZGUpOwotCi0gICAgbV9pbnRlcm5h
bENvbnRleHQtPnNldFRleHREcmF3aW5nTW9kZShjb250ZXh0U3RhdGUudGV4dERyYXdpbmdNb2Rl
KTsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnByZXBhcmVJbnRlcm5hbENvbnRleHQo
Y29uc3QgRm9udCYgZm9udCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKLXsKLSAg
ICBBU1NFUlQoQ0dBZmZpbmVUcmFuc2Zvcm1Jc0lkZW50aXR5KENURm9udEdldE1hdHJpeChmb250
LnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpKSkpOwotCi0gICAgbV9vcmlnaW5hbEZvbnQgPSAmZm9u
dDsKLSAgICBtX3Ntb290aGluZ01vZGUgPSBzbW9vdGhpbmdNb2RlOwotCi0gICAgbV9vcmlnaW5h
bFRleHRNYXRyaXggPSBjb21wdXRlT3ZlcmFsbFRleHRNYXRyaXgoZm9udCk7Ci0gICAgaWYgKGZv
bnQucGxhdGZvcm1EYXRhKCkub3JpZW50YXRpb24oKSA9PSBGb250T3JpZW50YXRpb246OlZlcnRp
Y2FsKQotICAgICAgICBtX29yaWdpbmFsVGV4dE1hdHJpeCA9IGNvbXB1dGVWZXJ0aWNhbFRleHRN
YXRyaXgoZm9udCwgbV9vcmlnaW5hbFRleHRNYXRyaXgpOwotCi0gICAgYXV0byYgY29udGV4dFN0
YXRlID0gbV9vd25lci5jdXJyZW50U3RhdGUoKS5zdGF0ZUNoYW5nZS5tX3N0YXRlOwotICAgIHBv
cHVsYXRlSW50ZXJuYWxTdGF0ZShjb250ZXh0U3RhdGUpOwotICAgIHBvcHVsYXRlSW50ZXJuYWxD
b250ZXh0KGNvbnRleHRTdGF0ZSk7Ci19Ci0KLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpjb25j
bHVkZUludGVybmFsQ29udGV4dCgpCi17Ci0gICAgdXBkYXRlQ1RNKG1fb3JpZ2luYWxTdGF0ZS5j
dG0pOwotICAgIHVwZGF0ZUZpbGxDb2xvcihtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmNvbG9y
LCBtX29yaWdpbmFsU3RhdGUuZmlsbFN0eWxlLmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3Rh
dGUuZmlsbFN0eWxlLnBhdHRlcm4uZ2V0KCkpOwotICAgIHVwZGF0ZVN0cm9rZUNvbG9yKG1fb3Jp
Z2luYWxTdGF0ZS5zdHJva2VTdHlsZS5jb2xvciwgbV9vcmlnaW5hbFN0YXRlLnN0cm9rZVN0eWxl
LmdyYWRpZW50LmdldCgpLCBtX29yaWdpbmFsU3RhdGUuc3Ryb2tlU3R5bGUucGF0dGVybi5nZXQo
KSk7Ci0gICAgdXBkYXRlU2hhZG93KG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cub2Zmc2V0LCBtX29y
aWdpbmFsU3RhdGUuc2hhZG93LmJsdXIsIG1fb3JpZ2luYWxTdGF0ZS5zaGFkb3cuY29sb3IsIG1f
b3JpZ2luYWxTdGF0ZS5zaGFkb3cuaWdub3JlVHJhbnNmb3JtcyA/IFNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zOjpZZXMgOiBTaGFkb3dzSWdub3JlVHJhbnNmb3Jtczo6Tm8pOwotfQotCi12b2lkIERy
YXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlRmlsbENvbG9yKGNvbnN0IENvbG9yJiBuZXdDb2xvciwg
R3JhZGllbnQqIG5ld0dyYWRpZW50LCBQYXR0ZXJuKiBuZXdQYXR0ZXJuKQotewotICAgIC8vIFRo
aXMgY2hlY2sgbG9va3Mgd3JvbmcgYnV0IGl0IGFjdHVhbGx5IGlzbid0LCBmb3Igb3VyIGxpbWl0
ZWQgdXNlLgotICAgIC8vIENUIHdpbGwgb25seSBldmVyIHNldCB0aGlzIHRvIGEgc29saWQgY29s
b3IsIHdoaWNoIHRoaXMgaXMgdGhlIGNvcnJlY3QgY2hlY2sgZm9yLgotICAgIC8vIEluIGNvbmNs
dWRlSW50ZXJuYWxDb250ZXh0KCkgd2Ugc2V0IGl0IGJhY2sgdG8gd2hhdCBpdCB3YXMgb3JpZ2lu
YWxseSwgd2hpY2ggdGhpcyBjaGVjayB3b3JrcyBjb3JyZWN0bHkgZm9yIHRvby4KLSAgICBpZiAo
bmV3Q29sb3IgPT0gbV9jdXJyZW50U3RhdGUuZmlsbFN0eWxlLmNvbG9yKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBHcmFwaGljc0NvbnRleHRTdGF0ZSBuZXdTdGF0ZTsKLSAgICBuZXdTdGF0ZS5m
aWxsQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQpCi0gICAgICAgIG5ld1N0
YXRlLmZpbGxHcmFkaWVudCA9IG5ld0dyYWRpZW50OwotICAgIGlmIChuZXdQYXR0ZXJuKQotICAg
ICAgICBuZXdTdGF0ZS5maWxsUGF0dGVybiA9IG5ld1BhdHRlcm47Ci0gICAgbV9vd25lci51cGRh
dGVTdGF0ZShuZXdTdGF0ZSwgeyBHcmFwaGljc0NvbnRleHRTdGF0ZTo6RmlsbENvbG9yQ2hhbmdl
IH0pOwotICAgIG1fY3VycmVudFN0YXRlLmZpbGxTdHlsZS5jb2xvciA9IG5ld0NvbG9yOwotfQot
Ci12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU3Ryb2tlQ29sb3IoY29uc3QgQ29sb3Im
IG5ld0NvbG9yLCBHcmFkaWVudCogbmV3R3JhZGllbnQsIFBhdHRlcm4qIG5ld1BhdHRlcm4pCi17
Ci0gICAgLy8gVGhpcyBjaGVjayBsb29rcyB3cm9uZyBidXQgaXQgYWN0dWFsbHkgaXNuJ3QsIGZv
ciBvdXIgbGltaXRlZCB1c2UuCi0gICAgLy8gQ1Qgd2lsbCBvbmx5IGV2ZXIgc2V0IHRoaXMgdG8g
YSBzb2xpZCBjb2xvciwgd2hpY2ggdGhpcyBpcyB0aGUgY29ycmVjdCBjaGVjayBmb3IuCi0gICAg
Ly8gSW4gY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKSB3ZSBzZXQgaXQgYmFjayB0byB3aGF0IGl0
IHdhcyBvcmlnaW5hbGx5LCB3aGljaCB0aGlzIGNoZWNrIHdvcmtzIGNvcnJlY3RseSBmb3IgdG9v
LgotICAgIGlmIChuZXdDb2xvciA9PSBtX2N1cnJlbnRTdGF0ZS5zdHJva2VTdHlsZS5jb2xvcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgR3JhcGhpY3NDb250ZXh0U3RhdGUgbmV3U3RhdGU7Ci0g
ICAgbmV3U3RhdGUuc3Ryb2tlQ29sb3IgPSBuZXdDb2xvcjsKLSAgICBpZiAobmV3R3JhZGllbnQp
Ci0gICAgICAgIG5ld1N0YXRlLnN0cm9rZUdyYWRpZW50ID0gbmV3R3JhZGllbnQ7Ci0gICAgaWYg
KG5ld1BhdHRlcm4pCi0gICAgICAgIG5ld1N0YXRlLnN0cm9rZVBhdHRlcm4gPSBuZXdQYXR0ZXJu
OwotICAgIG1fb3duZXIudXBkYXRlU3RhdGUobmV3U3RhdGUsIHsgR3JhcGhpY3NDb250ZXh0U3Rh
dGU6OlN0cm9rZUNvbG9yQ2hhbmdlIH0pOwotICAgIG1fY3VycmVudFN0YXRlLnN0cm9rZVN0eWxl
LmNvbG9yID0gbmV3Q29sb3I7Ci19Ci0KLXZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjp1cGRhdGVD
VE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBjdG0pCi17Ci0gICAgaWYgKGN0bSA9PSBtX2N1cnJl
bnRTdGF0ZS5jdG0pCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fb3duZXIuc2V0Q1RNKGN0bSk7
Ci0gICAgbV9jdXJyZW50U3RhdGUuY3RtID0gY3RtOwotfQotCi1zdGF0aWMgYm9vbCBzaGFkb3dJ
c0NsZWFyZWQoY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIp
Ci17Ci0gICAgcmV0dXJuIHNoYWRvd09mZnNldCA9PSBGbG9hdFNpemUoKSAmJiAhc2hhZG93Qmx1
cjsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnVwZGF0ZVNoYWRvdyhjb25zdCBGbG9h
dFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1ciwgY29uc3QgQ29sb3ImIHNoYWRv
d0NvbG9yLCBTaGFkb3dzSWdub3JlVHJhbnNmb3JtcyBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcykK
LXsKLSAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNvbnNpZGVyIHNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zIGlmIG5vYm9keSBoYXMgYW55IHNoYWRvd3MuCi0gICAgaWYgKHNoYWRvd0lzQ2xlYXJlZChz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpICYmIHNoYWRvd0lzQ2xlYXJlZChtX2N1cnJlbnRTdGF0
ZS5zaGFkb3cub2Zmc2V0LCBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1cikpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlIG5ld1N0YXRlOwotICAgIEdyYXBoaWNz
Q29udGV4dFN0YXRlOjpTdGF0ZUNoYW5nZUZsYWdzIHN0YXRlQ2hhbmdlRmxhZ3M7Ci0KLSAgICBp
ZiAoc2hhZG93T2Zmc2V0ICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5vZmZzZXQgfHwgc2hhZG93
Qmx1ciAhPSBtX2N1cnJlbnRTdGF0ZS5zaGFkb3cuYmx1ciB8fCBzaGFkb3dDb2xvciAhPSBtX2N1
cnJlbnRTdGF0ZS5zaGFkb3cuY29sb3IpIHsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93T2Zmc2V0
ID0gc2hhZG93T2Zmc2V0OwotICAgICAgICBuZXdTdGF0ZS5zaGFkb3dCbHVyID0gc2hhZG93Qmx1
cjsKLSAgICAgICAgbmV3U3RhdGUuc2hhZG93Q29sb3IgPSBzaGFkb3dDb2xvcjsKLSAgICAgICAg
c3RhdGVDaGFuZ2VGbGFncy5hZGQoR3JhcGhpY3NDb250ZXh0U3RhdGU6OlNoYWRvd0NoYW5nZSk7
Ci0gICAgfQotICAgIGlmIChzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyAhPSBTaGFkb3dzSWdub3Jl
VHJhbnNmb3Jtczo6VW5zcGVjaWZpZWQgJiYgKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpICE9IG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25v
cmVUcmFuc2Zvcm1zKSB7Ci0gICAgICAgIG5ld1N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
ID0gKHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZ
ZXMpOwotICAgICAgICBzdGF0ZUNoYW5nZUZsYWdzLmFkZChHcmFwaGljc0NvbnRleHRTdGF0ZTo6
U2hhZG93c0lnbm9yZVRyYW5zZm9ybXNDaGFuZ2UpOwotICAgIH0KLSAgICBpZiAoc3RhdGVDaGFu
Z2VGbGFncy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX293bmVyLnVwZGF0ZVN0
YXRlKG5ld1N0YXRlLCBzdGF0ZUNoYW5nZUZsYWdzKTsKLQotICAgIG1fY3VycmVudFN0YXRlLnNo
YWRvdy5vZmZzZXQgPSBzaGFkb3dPZmZzZXQ7Ci0gICAgbV9jdXJyZW50U3RhdGUuc2hhZG93LmJs
dXIgPSBzaGFkb3dCbHVyOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5jb2xvciA9IHNoYWRv
d0NvbG9yOwotICAgIG1fY3VycmVudFN0YXRlLnNoYWRvdy5pZ25vcmVUcmFuc2Zvcm1zID0gKHNo
YWRvd3NJZ25vcmVUcmFuc2Zvcm1zID09IFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwot
fQotCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6dXBkYXRlU2hhZG93KENHU3R5bGVSZWYgc3R5
bGUpCi17Ci0gICAgaWYgKENHU3R5bGVHZXRUeXBlKHN0eWxlKSAhPSBrQ0dTdHlsZVNoYWRvdykg
ewotICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBtb3JlIGtpbmRzIG9mIENHU3R5bGVzLgotICAg
ICAgICB1cGRhdGVTaGFkb3coezAsIDB9LCAwLCBDb2xvcigpLCBTaGFkb3dzSWdub3JlVHJhbnNm
b3Jtczo6VW5zcGVjaWZpZWQpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY29uc3Qg
YXV0byYgc2hhZG93U3R5bGUgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgQ0dTaGFkb3dTdHlsZSo+KENH
U3R5bGVHZXREYXRhKHN0eWxlKSk7Ci0gICAgYXV0byByYWQgPSBkZWcycmFkKHNoYWRvd1N0eWxl
LmF6aW11dGggLSAxODApOwotICAgIGF1dG8gc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHN0ZDo6
Y29zKHJhZCksIHN0ZDo6c2luKHJhZCkpICogc2hhZG93U3R5bGUuaGVpZ2h0OwotICAgIGF1dG8g
c2hhZG93Q29sb3IgPSBDR1N0eWxlR2V0Q29sb3Ioc3R5bGUpOwotICAgIHVwZGF0ZVNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd1N0eWxlLnJhZGl1cywgQ29sb3I6OmNyZWF0ZUFuZFByZXNlcnZl
Q29sb3JTcGFjZShzaGFkb3dDb2xvciksIFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOjpZZXMpOwot
fQotCi12b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkQmVnaW5MYXllcihDR1JlbmRlcmlu
Z1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENHUmVjdCkKLXsKLSAgICB1cGRhdGVDVE0o
KkNHR1N0YXRlR2V0Q1RNKGdzdGF0ZSkpOwotICAgIGF1dG8gYWxwaGEgPSBDR0dTdGF0ZUdldEFs
cGhhKGdzdGF0ZSk7Ci0gICAgbV9vd25lci5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsK
LX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZEVuZExheWVyKENHUmVuZGVyaW5n
U3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZSkKLXsKLSAgICB1cGRhdGVDVE0oKkNHR1N0YXRl
R2V0Q1RNKGdzdGF0ZSkpOwotICAgIG1fb3duZXIuZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLX0K
LQotc3RhdGljIFZlY3RvcjxDR1NpemU+IGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMoY29u
c3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2l6ZV90IGNvdW50LCBjb25zdCBDR0FmZmluZVRyYW5z
Zm9ybSYgdGV4dE1hdHJpeCkKLXsKLSAgICBWZWN0b3I8Q0dTaXplPiByZXN1bHQ7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBjb3VudCAtIDE7ICsraSkgewotICAgICAgICBhdXRvIG5leHRQ
b3NpdGlvbiA9IHBvc2l0aW9uc1tpICsgMV07Ci0gICAgICAgIGF1dG8gY3VycmVudFBvc2l0aW9u
ID0gcG9zaXRpb25zW2ldOwotICAgICAgICBhdXRvIGFkdmFuY2UgPSBDR1NpemVNYWtlKG5leHRQ
b3NpdGlvbi54IC0gY3VycmVudFBvc2l0aW9uLngsIG5leHRQb3NpdGlvbi55IC0gY3VycmVudFBv
c2l0aW9uLnkpOwotICAgICAgICByZXN1bHQuYXBwZW5kKENHU2l6ZUFwcGx5QWZmaW5lVHJhbnNm
b3JtKGFkdmFuY2UsIHRleHRNYXRyaXgpKTsKLSAgICB9Ci0gICAgcmVzdWx0LmNvbnN0cnVjdEFu
ZEFwcGVuZChDR1NpemVNYWtlKDAsIDApKTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi12b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVm
LCBDR0dTdGF0ZVJlZiBnc3RhdGUsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtKiwgY29uc3QgQ0dH
bHlwaCBnbHlwaHNbXSwgY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2l6ZV90IGNvdW50KQot
ewotICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIENHRm9udFJlZiB1c2Vk
Rm9udCA9IENHR1N0YXRlR2V0Rm9udChnc3RhdGUpOwotICAgIGlmICh1c2VkRm9udCAhPSBhZG9w
dENGKENURm9udENvcHlHcmFwaGljc0ZvbnQobV9vcmlnaW5hbEZvbnQtPnBsYXRmb3JtRGF0YSgp
LmN0Rm9udCgpLCBudWxscHRyKSkuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotI2lmIEFTU0VS
VF9FTkFCTEVECi0gICAgYXV0byB0ZXh0UG9zaXRpb24gPSBDR0NvbnRleHRHZXRUZXh0UG9zaXRp
b24obV9pbnRlcm5hbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICBBU1NFUlQoIXRl
eHRQb3NpdGlvbi54KTsKLSAgICBBU1NFUlQoIXRleHRQb3NpdGlvbi55KTsKLSNlbmRpZgotCi0g
ICAgdXBkYXRlQ1RNKCpDR0dTdGF0ZUdldENUTShnc3RhdGUpKTsKLQotICAgIC8vIFdlIHdhbnQg
dGhlIHJlcGxheWVyJ3MgQ1RNIGFuZCB0ZXh0IG1hdHJpeCB0byBtYXRjaCB0aGUgY3VycmVudCBD
VE0gYW5kIHRleHQgbWF0cml4LgotICAgIC8vIFRoZSBjdXJyZW50IHRleHQgbWF0cml4IGlzIGEg
Y29uY2F0ZW5hdGlvbiBvZiB3aGF0ZXZlciBXZWJLaXQgc2V0cyBpdCB0byBhbmQgd2hhdGV2ZXIK
LSAgICAvLyBDb3JlIFRleHQgYXBwZW5kcyB0byBpdC4gU28sIHdlIGhhdmUKLSAgICAvLyBDVE0g
KiBtX29yaWdpbmFsVGV4dE1hdHJpeCAqIENvcmUgVGV4dCdzIHRleHQgbWF0cml4LgotICAgIC8v
IEhvd2V2ZXIsIENHQ29udGV4dEdldFRleHRNYXRyaXgoKSBqdXN0IHRlbGxzIHVzIHdoYXQgdGhl
IHdob2xlIHRleHQgbWF0cml4IGlzLCBzbwotICAgIC8vIG1fb3JpZ2luYWxUZXh0TWF0cml4ICog
Q29yZSBUZXh0J3MgdGV4dCBtYXRyaXggPSBjdXJyZW50VGV4dE1hdHJpeC4KLSAgICAvLyBUaGUg
b25seSB3YXkgd2UgY2FuIGVtdWxhdGUgQ29yZSBUZXh0J3MgdGV4dCBtYXRyaXggaXMgYnkgbW9k
aWZ5aW5nIHRoZSBDVE0gaGVyZS4KLSAgICAvLyBTbywgaWYgd2UgZG8gdGhhdCwgdGhlIEdQVSBw
cm9jZXNzIHdpbGwgaGF2ZQotICAgIC8vIENUTSAqIFggKiBtX29yaWdpbmFsVGV4dE1hdHJpeAot
ICAgIC8vIElmIHlvdSBzZXQgdGhlc2UgdHdvIGVxdWFsIHRvIGVhY2ggb3RoZXIsIGFuZCBzb2x2
ZSBmb3IgWCwgeW91IGdldAotICAgIC8vIENUTSAqIGN1cnJlbnRUZXh0TWF0cml4ID0gQ1RNICog
WCAqIG1fb3JpZ2luYWxUZXh0TWF0cml4Ci0gICAgLy8gY3VycmVudFRleHRNYXRyaXggKiBpbnZl
cnNlKG1fb3JpZ2luYWxUZXh0TWF0cml4KSA9IFgKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3VycmVu
dFRleHRNYXRyaXggPSBDR0NvbnRleHRHZXRUZXh0TWF0cml4KG1faW50ZXJuYWxDb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIGN0bUZpeHVwOwotICAgIGlm
IChhdXRvIGludmVydGVkT3JpZ2luYWxUZXh0TWF0cml4ID0gbV9vcmlnaW5hbFRleHRNYXRyaXgu
aW52ZXJzZSgpKQotICAgICAgICBjdG1GaXh1cCA9IGN1cnJlbnRUZXh0TWF0cml4ICogaW52ZXJ0
ZWRPcmlnaW5hbFRleHRNYXRyaXgudmFsdWUoKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJz
ZUNUTUZpeHVwOwotICAgIGlmIChhdXRvIGludmVyc2UgPSBjdG1GaXh1cC5pbnZlcnNlKCkpCi0g
ICAgICAgIGludmVyc2VDVE1GaXh1cCA9IGludmVyc2UudmFsdWUoKTsKLSAgICBlbHNlCi0gICAg
ICAgIGN0bUZpeHVwID0gQWZmaW5lVHJhbnNmb3JtKCk7Ci0gICAgbV9vd25lci5jb25jYXRDVE0o
Y3RtRml4dXApOwotCi0gICAgYXV0byBmaWxsQ29sb3IgPSBDR0dTdGF0ZUdldEZpbGxDb2xvcihn
c3RhdGUpOwotICAgIGF1dG8gc3Ryb2tlQ29sb3IgPSBDR0dTdGF0ZUdldFN0cm9rZUNvbG9yKGdz
dGF0ZSk7Ci0gICAgdXBkYXRlRmlsbENvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNvbG9y
U3BhY2UoZmlsbENvbG9yKSk7Ci0gICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFu
ZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOwotICAgIHVwZGF0ZVNoYWRvdyhDR0dT
dGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwotCi0gICAgbV9vd25lci5hcHBlbmREcmF3R2x5cGhzSXRl
bVdpdGhDYWNoZWRGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNG
cm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4KS5kYXRhKCks
IGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0pLCBtX3Ntb290
aGluZ01vZGUpOwotCi0gICAgbV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNUTUZpeHVwKTsKLX0K
LQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0
YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIENHUmVjdCByZWN0LCBDR0ltYWdlUmVmIGNnSW1h
Z2UpCi17Ci0gICAgdXBkYXRlQ1RNKCpDR0dTdGF0ZUdldENUTShnc3RhdGUpKTsKLSAgICB1cGRh
dGVTaGFkb3coQ0dHU3RhdGVHZXRTdHlsZShnc3RhdGUpKTsKLQotICAgIC8vIENvcmUgR3JhcGhp
Y3MgYXNzdW1lcyBhICJ5IHVwIiBjb29yZGluYXRlIHN5c3RlbSwgYnV0IGluIFdlYktpdCwgd2Ug
dXNlIGEgInktZG93biIgY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgLy8gVGhpcyBtZWFucyB0aGF0
IFdlYktpdCdzIGRyYXdpbmcgcm91dGluZXMgKEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkp
IGludGVudGlvbmFsbHkgZHJhdyBpbWFnZXMgdXBzaWRlLWRvd24gZnJvbSBDb3JlIEdyYXBoaWNz
J3MgcG9pbnQgb2Ygdmlldy4KLSAgICAvLyAoVGhlcmUncyBhIHktZmxpcCBpbnNpZGUgdGhlIGlt
cGxlbWVudGF0aW9uIG9mIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ltYWdlKCkuKQotICAgIC8vIFRo
ZSByZWN0IGhhcyB0aGUgcmlnaHQgYm91bmRzLCBidXQgd2UgbmVlZCB0byB0cmFuc2Zvcm0gZnJv
bSBDRydzIGNvb3JkaW5hdGUgc3lzdGVtIHRvIFdlYktpdCdzIGJ5IHBlcmZvcm1pbmcgb3VyIG93
biB5LWZsaXAgc28gaW1hZ2VzIGFyZSBkcmF3biB0aGUgcmlnaHQtc2lkZS11cC4KLSAgICAvLyBX
ZSBkbyB0aGlzIGF0IHRoZSBib3VuZGFyeSBiZXR3ZWVuIHRoZSB0d28gQVBJcywgd2hpY2ggaXMg
cmlnaHQgaGVyZS4KLSAgICBtX293bmVyLnRyYW5zbGF0ZSgwLCByZWN0LnNpemUuaGVpZ2h0ICsg
MiAqIHJlY3Qub3JpZ2luLnkpOwotICAgIG1fb3duZXIuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7
Ci0KLSAgICBhdXRvIGltYWdlID0gTmF0aXZlSW1hZ2U6OmNyZWF0ZShjZ0ltYWdlKTsKLSAgICBt
X293bmVyLmRyYXdOYXRpdmVJbWFnZSgqaW1hZ2UsIGltYWdlLT5zaXplKCksIEZsb2F0UmVjdChy
ZWN0KSwgRmxvYXRSZWN0IHt7IH0sIGltYWdlLT5zaXplKCl9LCBJbWFnZVBhaW50aW5nT3B0aW9u
cyB7IEltYWdlT3JpZW50YXRpb246Ok9yaWdpblRvcExlZnQgfSk7Ci0KLSAgICAvLyBVbmRvIHRo
ZSBhYm92ZSB5LWZsaXAgdG8gcmVzdG9yZSB0aGUgY29udGV4dC4KLSAgICBtX293bmVyLnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgIG1fb3duZXIudHJhbnNsYXRlKDAsIC0ocmVjdC5zaXpl
LmhlaWdodCArIDIgKiByZWN0Lm9yaWdpbi55KSk7Ci19Ci0KLXN0cnVjdCBHbHlwaHNBbmRBZHZh
bmNlc1N0b3JhZ2UgewotICAgIFZlY3RvcjxHbHlwaEJ1ZmZlckdseXBoPiBnbHlwaHM7Ci0gICAg
VmVjdG9yPEdseXBoQnVmZmVyQWR2YW5jZT4gYWR2YW5jZXM7Ci19OwotCi1zdHJ1Y3QgR2x5cGhz
QW5kQWR2YW5jZXMgewotICAgIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBoczsKLSAgICBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzOwotICAgIHVuc2lnbmVkIG51bUdseXBo
czsKLSAgICBHbHlwaEJ1ZmZlckFkdmFuY2UgaW5pdGlhbEFkdmFuY2U7Ci0gICAgc3RkOjpvcHRp
b25hbDxHbHlwaHNBbmRBZHZhbmNlc1N0b3JhZ2U+IHN0b3JhZ2U7Ci19OwotCi1zdGF0aWMgR2x5
cGhzQW5kQWR2YW5jZXMgZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29u
c3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFk
dmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMpCi17Ci0gICAgYXV0byBvdHN2Z0dseXBocyA9IGZv
bnQuZmluZE9UU1ZHR2x5cGhzKGdseXBocywgbnVtR2x5cGhzKTsKLSAgICBpZiAoIW90c3ZnR2x5
cGhzKQotICAgICAgICByZXR1cm4geyBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIG1ha2VH
bHlwaEJ1ZmZlckFkdmFuY2UoKSwgeyB9fTsKLQotICAgIEFTU0VSVChvdHN2Z0dseXBocy0+c2l6
ZSgpID49IG51bUdseXBocyk7Ci0KLSAgICBHbHlwaHNBbmRBZHZhbmNlcyByZXN1bHQ7Ci0gICAg
cmVzdWx0LmluaXRpYWxBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVyQWR2YW5jZSgpOwotICAgIHJl
c3VsdC5zdG9yYWdlID0gR2x5cGhzQW5kQWR2YW5jZXNTdG9yYWdlKCk7Ci0KLSAgICByZXN1bHQu
c3RvcmFnZS0+Z2x5cGhzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtR2x5cGhzKTsKLSAgICBy
ZXN1bHQuc3RvcmFnZS0+YWR2YW5jZXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1HbHlwaHMp
OwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdseXBoczsgKytpKSB7Ci0gICAg
ICAgIEFTU0VSVChyZXN1bHQuc3RvcmFnZS0+Z2x5cGhzLnNpemUoKSA9PSByZXN1bHQuc3RvcmFn
ZS0+YWR2YW5jZXMuc2l6ZSgpKTsKLSAgICAgICAgaWYgKG90c3ZnR2x5cGhzLT5xdWlja0dldChp
KSkgewotICAgICAgICAgICAgaWYgKHJlc3VsdC5zdG9yYWdlLT5hZHZhbmNlcy5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmluaXRpYWxBZHZhbmNlID0gbWFrZUdseXBoQnVmZmVy
QWR2YW5jZShzaXplKHJlc3VsdC5pbml0aWFsQWR2YW5jZSkgKyBzaXplKGFkdmFuY2VzW2ldKSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0LnN0b3JhZ2UtPmFkdmFu
Y2VzLmxhc3QoKSA9IG1ha2VHbHlwaEJ1ZmZlckFkdmFuY2Uoc2l6ZShyZXN1bHQuc3RvcmFnZS0+
YWR2YW5jZXMubGFzdCgpKSArIHNpemUoYWR2YW5jZXNbaV0pKTsKLSAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHJlc3VsdC5zdG9yYWdlLT5nbHlwaHMudW5jaGVja2VkQXBwZW5kKGdseXBo
c1tpXSk7Ci0gICAgICAgICAgICByZXN1bHQuc3RvcmFnZS0+YWR2YW5jZXMudW5jaGVja2VkQXBw
ZW5kKGFkdmFuY2VzW2ldKTsKLSAgICAgICAgfQotICAgICAgICBBU1NFUlQocmVzdWx0LnN0b3Jh
Z2UtPmdseXBocy5zaXplKCkgPT0gcmVzdWx0LnN0b3JhZ2UtPmFkdmFuY2VzLnNpemUoKSk7Ci0g
ICAgfQotCi0gICAgcmVzdWx0LmdseXBocyA9IHJlc3VsdC5zdG9yYWdlLT5nbHlwaHMuZGF0YSgp
OwotICAgIHJlc3VsdC5hZHZhbmNlcyA9IHJlc3VsdC5zdG9yYWdlLT5hZHZhbmNlcy5kYXRhKCk7
Ci0gICAgcmVzdWx0Lm51bUdseXBocyA9IHJlc3VsdC5zdG9yYWdlLT5nbHlwaHMuc2l6ZSgpOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdH
bHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBj
b25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01v
ZGUpCi17Ci0gICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7Ci0gICAgICAgIG1fb3duZXIuYXBwZW5k
RHJhd0dseXBoc0l0ZW1XaXRoQ2FjaGVkRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgQVNTRVJUKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOwotCi0gICAgLy8gRklYTUU6IDxyZGFyOi8vcHJv
YmxlbS83MDE2NjU1Mj4gUmVjb3JkIE9UU1ZHIGdseXBocy4KLSAgICBHbHlwaHNBbmRBZHZhbmNl
cyBnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocyA9IGZpbHRlck91dE9UU1ZHR2x5
cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocyk7Ci0gICAgQVNTRVJUKGdseXBo
c0FuZEFkdmFuY2VzV2l0aG91dE9UU1ZHR2x5cGhzLmdseXBocyA9PSBnbHlwaHMgfHwgZ2x5cGhz
QW5kQWR2YW5jZXNXaXRob3V0T1RTVkdHbHlwaHMuZ2x5cGhzID09IGdseXBoc0FuZEFkdmFuY2Vz
V2l0aG91dE9UU1ZHR2x5cGhzLnN0b3JhZ2UtPmdseXBocy5kYXRhKCkpOwotICAgIEFTU0VSVChn
bHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5hZHZhbmNlcyA9PSBhZHZhbmNlcyB8
fCBnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5hZHZhbmNlcyA9PSBnbHlwaHNB
bmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocy5zdG9yYWdlLT5hZHZhbmNlcy5kYXRhKCkpOwot
Ci0gICAgcHJlcGFyZUludGVybmFsQ29udGV4dChmb250LCBzbW9vdGhpbmdNb2RlKTsKLSAgICBG
b250Q2FzY2FkZTo6ZHJhd0dseXBocyhtX2ludGVybmFsQ29udGV4dCwgZm9udCwgZ2x5cGhzQW5k
QWR2YW5jZXNXaXRob3V0T1RTVkdHbHlwaHMuZ2x5cGhzLCBnbHlwaHNBbmRBZHZhbmNlc1dpdGhv
dXRPVFNWR0dseXBocy5hZHZhbmNlcywgZ2x5cGhzQW5kQWR2YW5jZXNXaXRob3V0T1RTVkdHbHlw
aHMubnVtR2x5cGhzLCBzdGFydFBvaW50ICsgc2l6ZShnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRP
VFNWR0dseXBocy5pbml0aWFsQWR2YW5jZSksIHNtb290aGluZ01vZGUpOwotICAgIGNvbmNsdWRl
SW50ZXJuYWxDb250ZXh0KCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNDE2NzNiNjE1OWM5MGNhOTdhYTQyMDc2ZWRiMzBjMmRlZDk1NjA5NC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhz
UmVjb3JkZXJIYXJmQnV6ei5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIuaCIKLQot
I2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKLSNpbmNsdWRlICJEaXNwbGF5TGlzdFJlY29y
ZGVyLmgiCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIkZvbnQuaCIKLSNpbmNs
dWRlICJHbHlwaEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBE
aXNwbGF5TGlzdCB7Ci0KLURyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKFJl
Y29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAgIDogbV9vd25lcihv
d25lcikKLXsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1
ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9p
bnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCi17Ci0gICAg
bV9vd25lci5hcHBlbmREcmF3R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250KGZvbnQsIGdseXBocywg
YWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIERpc3BsYXlMaXN0Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXJXaW4u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNWQ0MWRjYThhY2IwMTJhYzI5YmNj
NmJlNDVmOTdmZmEyODY3MGZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3R2x5cGhz
UmVjb3JkZXIuaCIKLQotI2luY2x1ZGUgIkRpc3BsYXlMaXN0SXRlbXMuaCIKLSNpbmNsdWRlICJE
aXNwbGF5TGlzdFJlY29yZGVyLmgiCi0jaW5jbHVkZSAiRmxvYXRQb2ludC5oIgotI2luY2x1ZGUg
IkZvbnQuaCIKLSNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLW5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7Ci0KLURyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc1JlY29yZGVyKFJlY29yZGVyJiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQot
ICAgIDogbV9vd25lcihvd25lcikKLXsKLX0KLQotdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRy
YXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhz
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGlu
Z01vZGUpCi17Ci0gICAgbV9vd25lci5hcHBlbmREcmF3R2x5cGhzSXRlbVdpdGhDYWNoZWRGb250
KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgbV9zbW9vdGhp
bmdNb2RlKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgRGlzcGxheUxpc3QKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4
IDFlNDcyMTdlMDc0Y2U1ODdiY2FmZmNmZWFiNGMzMTAwYmRhMTVjYTQuLjE2NjA0MGUzNDU3YTU2
OTE0NmM3MTg2ZDg1OWIzMGExY2Y2MWYwMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxp
c3RSZWNvcmRlci5jcHAKQEAgLTQwLDExICs0MCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
bmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKERpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25z
dHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorUmVjb3JkZXI6OlJlY29yZGVyKERp
c3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRl
LCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGlu
aXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0
cnVjdERyYXdHbHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhzKQogICAgIDogbV9kaXNwbGF5TGlz
dChkaXNwbGF5TGlzdCkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgLCBtX2lzTmVz
dGVkKGZhbHNlKQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbikKKyAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkZWNvbnN0
cnVjdERyYXdHbHlwaHMpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3Ry
ZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAgbV9z
dGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKQEAg
LTU0LDcgKzU0LDcgQEAgUmVjb3JkZXI6OlJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmwKICAgICA6IG1fZGlzcGxheUxp
c3QocGFyZW50Lm1fZGlzcGxheUxpc3QpCiAgICAgLCBtX2RlbGVnYXRlKHBhcmVudC5tX2RlbGVn
YXRlKQogICAgICwgbV9pc05lc3RlZCh0cnVlKQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIo
KnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b24oKSkKKyAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBwYXJlbnQubV9kcmF3R2x5
cGhzUmVjb3JkZXIuZGVjb25zdHJ1Y3REcmF3R2x5cGhzKCkpCiB7CiAgICAgbV9zdGF0ZVN0YWNr
LmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKIH0KQEAgLTE5MCw3
ICsxOTAsNyBAQCB2b2lkIFJlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNv
bnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29ucwogICAgIG1fZHJhd0dseXBoc1JlY29y
ZGVyLmRyYXdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBv
aW50LCBzbW9vdGhpbmdNb2RlKTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6YXBwZW5kRHJhd0dseXBo
c0l0ZW1XaXRoQ2FjaGVkRm9udChjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckds
eXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVk
IGNvdW50LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbEFuY2hvciwgRm9udFNtb290aGluZ01vZGUg
c21vb3RoaW5nTW9kZSkKK3ZvaWQgUmVjb3JkZXI6OmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoY29u
c3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlw
aEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBjb3VudCwgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxBbmNob3IsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGluZ01vZGUpCiB7CiAgICAg
aWYgKG1fZGVsZWdhdGUpCiAgICAgICAgIG1fZGVsZWdhdGUtPnJlY29yZEZvbnRVc2UoY29uc3Rf
Y2FzdDxGb250Jj4oZm9udCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgK
aW5kZXggMzFhNTIyODkwYjdlZTRlNjUwZjViYTViYjFiN2U1MjQ2MmFmMTYxMC4uNTBjZDcxYzc3
Y2MxNTdiMzI3MjBlODhlM2FjNzliNDExZTA3ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5oCkBAIC0yNiw4ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkRpc3BsYXlMaXN0LmgiCi0jaW5jbHVkZSAiRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3Jk
ZXIuaCIKICNpbmNsdWRlICJEaXNwbGF5TGlzdEl0ZW1zLmgiCisjaW5jbHVkZSAiRHJhd0dseXBo
c1JlY29yZGVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1h
Z2UuaCIgLy8gRm9yIEltYWdlOjpUaWxlUnVsZS4KICNpbmNsdWRlICJUZXh0RmxhZ3MuaCIKQEAg
LTU1LDcgKzU1LDcgQEAgY2xhc3MgUmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6CiAgICAgY2xhc3Mg
RGVsZWdhdGU7Ci0gICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoRGlzcGxheUxpc3QmLCBjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdHbHlwaHNSZWNv
cmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBS
ZWNvcmRlcihEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUq
ID0gbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgPSBE
cmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBj
b25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKQEAgLTk1LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGZpbGxSb3VuZGVkUmVjdEltcGwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYsIGNvbnN0
IENvbG9yJikgZmluYWwgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZvaWQgZHJhd0xp
bmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wsIGJvb2wsIFN0cm9rZVN0eWxlKSBmaW5h
bCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKKyAgICBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYgbGFzdFN0YXRlQ2hhbmdlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gY3VycmVudFN0YXRl
KCkuc3RhdGVDaGFuZ2UubV9zdGF0ZTsgfQogICAgIHZvaWQgdXBkYXRlU3RhdGUoY29uc3QgR3Jh
cGhpY3NDb250ZXh0U3RhdGUmLCBHcmFwaGljc0NvbnRleHRTdGF0ZTo6U3RhdGVDaGFuZ2VGbGFn
cykgZmluYWw7CiAKICAgICB2b2lkIHNldExpbmVDYXAoTGluZUNhcCkgZmluYWw7CkBAIC0xMjEs
OCArMTIyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0
IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNl
KiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9u
dFNtb290aGluZ01vZGUpIGZpbmFsOwotCi0gICAgdm9pZCBhcHBlbmREcmF3R2x5cGhzSXRlbVdp
dGhDYWNoZWRGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3Qg
R2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsQW5jaG9yLCBGb250U21vb3RoaW5nTW9kZSk7CisgICAgdm9pZCBkcmF3R2x5cGhzQW5kQ2Fj
aGVGb250KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhC
dWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgY291bnQsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsQW5j
aG9yLCBGb250U21vb3RoaW5nTW9kZSkgZmluYWw7CiAKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZl
cihXZWJDb3JlOjpJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNv
bnN0IEZsb2F0UmVjdCYgc291cmNlLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYpIGZpbmFs
OwogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKE5hdGl2ZUltYWdlJiwgY29uc3QgRmxvYXRTaXpl
JiBpbWFnZVNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
c3JjUmVjdCwgY29uc3QgSW1hZ2VQYWludGluZ09wdGlvbnMmKSBmaW5hbDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNv
cmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2M2NzhhZmI1
ZjI1MGY4ZjBlOGNjZTczNTViMGM2MmQ1MmUyYzU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFy
ZkJ1enouY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEcmF3
R2x5cGhzUmVjb3JkZXIuaCIKKworI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNsdWRlICJG
b250LmgiCisjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQm
IG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbHlwaHMpCisgICAgOiBtX293bmVyKG93bmVyKQorewor
fQorCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250
LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5j
ZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQ
b2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKK3sKKyAgICBtX293bmVyLmRy
YXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBz
dGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlw
aHNSZWNvcmRlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
RHJhd0dseXBoc1JlY29yZGVyV2luLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MzJlZWNiODFjMTk4ZjI2NWVm
MGQxN2Y1OWRiMWJiZTJhZjBiNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKQEAgLTAsMCAr
MSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRyYXdHbHlwaHNSZWNvcmRlci5oIgor
CisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2luY2x1ZGUgIkZvbnQuaCIKKyNpbmNsdWRlICJH
bHlwaEJ1ZmZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RyYXdHbHlwaHNSZWNvcmRl
cjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29uc3RydWN0
RHJhd0dseXBocykKKyAgICA6IG1fb3duZXIob3duZXIpCit7Cit9CisKK3ZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdseXBocywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWdu
ZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5n
TW9kZSBzbW9vdGhpbmdNb2RlKQoreworICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hlRm9u
dChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0UG9pbnQsIG1fc21vb3Ro
aW5nTW9kZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQppbmRleCA0ODI3NTE3ZDRlZmQ0MTFiODQ4M2FkOTdk
MGZmZjZiMWIyZmM2ZWZmLi4zYTA2MGJhZWExMDBkN2Q1N2Y2YmI1YzYzODM0MzIxOGM1MzA3YmI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zNyw2
ICszNyw3IEBACiAjaW1wb3J0ICJDb2xvcklPUy5oIgogI2ltcG9ydCAiRGF0ZUNvbXBvbmVudHMu
aCIKICNpbXBvcnQgIkRvY3VtZW50LmgiCisjaW1wb3J0ICJEcmF3R2x5cGhzUmVjb3JkZXIuaCIK
ICNpbXBvcnQgIkZpbGUuaCIKICNpbXBvcnQgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbXBvcnQg
IkZvbnRDYWNoZS5oIgpAQCAtMTUzNiw2ICsxNTM3LDcgQEAgc3RydWN0IFJlbmRlckF0dGFjaG1l
bnRJbmZvIHsKICAgICBzdHJ1Y3QgTGFiZWxMaW5lIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3Q7
CiAgICAgICAgIFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmU7CisgICAgICAgIFJldGFpblB0cjxD
VEZvbnRSZWY+IGZvbnQ7CiAgICAgfTsKICAgICBWZWN0b3I8TGFiZWxMaW5lPiBsaW5lczsKIApA
QCAtMTU0NSwxMCArMTU0NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRXcmFwcGVkTGlu
ZXMoY29uc3QgU3RyaW5nJiwgQ1RGb250UmVmLCBVSUNvbG9yICosIHVuc2lnbmVkIG1heGltdW1M
aW5lQ291bnQpOwogICAgIHZvaWQgYnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYsIENURm9u
dFJlZiwgVUlDb2xvciAqKTsKIAotICAgIHZvaWQgYWRkTGluZShDVExpbmVSZWYpOworICAgIHZv
aWQgYWRkTGluZShDVExpbmVSZWYsIENURm9udFJlZik7CiB9OwogCi12b2lkIFJlbmRlckF0dGFj
aG1lbnRJbmZvOjphZGRMaW5lKENUTGluZVJlZiBsaW5lKQordm9pZCBSZW5kZXJBdHRhY2htZW50
SW5mbzo6YWRkTGluZShDVExpbmVSZWYgbGluZSwgQ1RGb250UmVmIGZvbnQpCiB7CiAgICAgQ0dS
ZWN0IGxpbmVCb3VuZHMgPSBDVExpbmVHZXRCb3VuZHNXaXRoT3B0aW9ucyhsaW5lLCBrQ1RMaW5l
Qm91bmRzRXhjbHVkZVR5cG9ncmFwaGljTGVhZGluZyk7CiAgICAgQ0dGbG9hdCB0cmFpbGluZ1do
aXRlc3BhY2VXaWR0aCA9IENUTGluZUdldFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoKGxpbmUpOwpA
QCAtMTU1OSw2ICsxNTYxLDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YWRkTGluZShD
VExpbmVSZWYgbGluZSkKICAgICBMYWJlbExpbmUgbGFiZWxMaW5lOwogICAgIGxhYmVsTGluZS5s
aW5lID0gbGluZTsKICAgICBsYWJlbExpbmUucmVjdCA9IEZsb2F0UmVjdCh4T2Zmc2V0LCAwLCBs
aW5lV2lkdGhJZ25vcmluZ1RyYWlsaW5nV2hpdGVzcGFjZSwgbGluZUhlaWdodCk7CisgICAgbGFi
ZWxMaW5lLmZvbnQgPSBmb250OwogCiAgICAgbGluZXMuYXBwZW5kKGxhYmVsTGluZSk7CiB9CkBA
IC0xNTkxLDcgKzE1OTQsNyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBw
ZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LAogICAgIENGSW5kZXgg
bGluZUluZGV4ID0gMDsKICAgICBDRkluZGV4IG5vblRydW5jYXRlZExpbmVDb3VudCA9IHN0ZDo6
bWluPENGSW5kZXg+KG1heGltdW1MaW5lQ291bnQgLSAxLCBsaW5lQ291bnQpOwogICAgIGZvciAo
OyBsaW5lSW5kZXggPCBub25UcnVuY2F0ZWRMaW5lQ291bnQ7ICsrbGluZUluZGV4KQotICAgICAg
ICBhZGRMaW5lKChDVExpbmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5l
SW5kZXgpKTsKKyAgICAgICAgYWRkTGluZSgoQ1RMaW5lUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoY3RMaW5lcywgbGluZUluZGV4KSwgZm9udCk7CiAKICAgICBpZiAobGluZUluZGV4ID09IGxp
bmVDb3VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxMSw3ICsxNjE0LDcgQEAgdm9pZCBSZW5k
ZXJBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBD
VEZvbnRSZWYgZm9udCwKICAgICBpZiAoIXRydW5jYXRlZExpbmUpCiAgICAgICAgIHRydW5jYXRl
ZExpbmUgPSByZW1haW5pbmdMaW5lOwogCi0gICAgYWRkTGluZSh0cnVuY2F0ZWRMaW5lLmdldCgp
KTsKKyAgICBhZGRMaW5lKHRydW5jYXRlZExpbmUuZ2V0KCksIGZvbnQpOwogfQogCiB2b2lkIFJl
bmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUoY29uc3QgU3RyaW5nJiB0ZXh0LCBD
VEZvbnRSZWYgZm9udCwgVUlDb2xvciAqY29sb3IpCkBAIC0xNjI1LDcgKzE2MjgsNyBAQCB2b2lk
IFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUoY29uc3QgU3RyaW5nJiB0ZXh0
LCBDVEZvbnRSZWYgZm9udCwgVQogICAgIH07CiAgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0
cmluZz4gYXR0cmlidXRlZFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzp0ZXh0IGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKIAotICAg
IGFkZExpbmUoYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRy
aWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRUZXh0LmdldCgpKSkuZ2V0KCkpOworICAgIGFkZExp
bmUoYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRyaWJ1dGVk
U3RyaW5nUmVmKWF0dHJpYnV0ZWRUZXh0LmdldCgpKSkuZ2V0KCksIGZvbnQpOwogfQogCiBzdGF0
aWMgQk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0
YWNobWVudCwgZmxvYXQmIHByb2dyZXNzKQpAQCAtMTc2NiwxNSArMTc2OSwxMCBAQCBzdGF0aWMg
dm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVy
QXR0YWNobWVudEluZm8mCiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGxpbmUgOiBpbmZvLmxpbmVzKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CisgICAgRHJhd0dseXBoc1JlY29yZGVyIHJl
Y29yZGVyKGNvbnRleHQsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhz
OjpZZXMsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVyaXZlRm9udEZyb21Db250ZXh0OjpZZXMpOwog
Ci0gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKGxpbmUucmVjdC5taW5YTWF4
WUNvcm5lcigpKSk7Ci0gICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0K
LSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIDAsIDApOwotICAgICAgICBDVExpbmVEcmF3KGxpbmUubGluZS5nZXQoKSwgY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbGluZSA6IGlu
Zm8ubGluZXMpCisgICAgICAgIHJlY29yZGVyLmRyYXdOYXRpdmVUZXh0KGxpbmUubGluZS5nZXQo
KSwgbGluZS5yZWN0LCBsaW5lLmZvbnQuZ2V0KCksIENURm9udEdldFNpemUobGluZS5mb250Lmdl
dCgpKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFByb2dyZXNzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439548</attachid>
            <date>2021-09-28 17:16:25 -0700</date>
            <delta_ts>2021-09-30 12:37:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20210928171625.patch</filename>
            <type>text/plain</type>
            <size>20481</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyMjA1ODdlYjBiZDY5NTA4NTFkZjg3NTk2YTUwMDZkNTlhNGMzNDkxLi4w
YmIwMTIyZmVkMmUyZWE0N2I2ZTFkMmUwZWQ3ZDZiOWRkYzllZWFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRlY29uc3RydWN0RHJhd0dseXBocyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uYC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Ry
YXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIEFkZCBhIG5ldyBwYXJhbWV0ZXIg
dG8gYERyYXdHbHlwaHNSZW5kZXJlcmAgdGhhdCBjb250cm9scyB3aGV0aGVyIGZvbnRzIG90aGVy
IHRoYW4gdGhlIG9uZQorICAgICAgICBpbml0aWFsbHkgcHJvdmlkZWQgdG8gYGRyYXdHbHlwaHNg
L2BkcmF3TmF0aXZlVGV4dGAgY2FuIGJlIHVzZWQgdG8gZHJhdyBnbHlwaHMuIFRoaXMgaXMgb25s
eQorICAgICAgICB1c2VkIGJ5IHRoZSBhYm92ZSBhcyB3ZSBrbm93IHRoYXQgdGhlIGluaXRpYWwg
Zm9udCBpcyBhIHN5c3RlbSBmb250LCBhbmQgdGhlcmVmb3JlIHRoYXQgdGhlCisgICAgICAgIGZh
bGxiYWNrIGxpc3Qgd2lsbCBhbHNvIG9ubHkgY29udGFpbiBzeXN0ZW0gZm9udHMsIG1lYW5pbmcg
dGhhdCBzZW5kaW5nIHRoZSBmb250IHRvIHRoZQorICAgICAgICBHUFVQcm9jZXNzIGlzIGNoZWFw
IChhIGZpbGUgcGF0aCBpbnN0ZWFkIG9mIGFjdHVhbCBkYXRhKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgRHJpdmUtYnk6
IFJlbmFtZSBgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uYCB0byBgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzYCBhcyBpdCByZWFkcyBiZXR0ZXIuCisKIDIwMjEtMDktMjggIERldmluIFJvdXNzbyAgPGRy
b3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbG93IGBEcmF3R2x5cGhzUmVjb3JkZXJgIHRv
IGJlIHVzZWQgd2l0aCBhbnkgYEdyYXBoaWNzQ29udGV4dGAgaW5zdGVhZCBvZiBqdXN0IGBEaXNw
bGF5TGlzdDo6UmVjb3JkZXJgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCAwYmRhMjEzYjZlZTk5OGZm
MTkwYWU0MjllNGVhYzkyYTdkOWYxN2VhLi45MjAzNmRiZTYyYzZjNTQzNmFkMDhiMWZkM2EyYTNj
YTVlZGQ2ZGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOS0y
OCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11bR1BV
IFByb2Nlc3NdIHN1cHBvcnQgYDxhdHRhY2htZW50PmAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NzA4ODQwOTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAg
ICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgorCiAyMDIxLTA5LTI4ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTW9zdGx5IGZp
eCBNYWMgQ01ha2UgYnVpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3Bp
L2NnL0NvcmVHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29y
ZUdyYXBoaWNzU1BJLmgKaW5kZXggMGQ1OTdkYzRiMzMzZDdhNTA1NzBkZWViOTVjN2MxOTg4Zjk1
NzliMi4uNmM1NjIxMDhjMDc4ZTBhMjE5MWYzZTQwNTgxNTQxMzdkOGYyZDkyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKQEAgLTI3MCw2
ICsyNzAsNyBAQCB2b2lkKiBDR0NvbnRleHREZWxlZ2F0ZUdldEluZm8oQ0dDb250ZXh0RGVsZWdh
dGVSZWYpOwogdm9pZCBDR0NvbnRleHREZWxlZ2F0ZVJlbGVhc2UoQ0dDb250ZXh0RGVsZWdhdGVS
ZWYpOwogQ0dGbG9hdCBDR0dTdGF0ZUdldEFscGhhKENHR1N0YXRlUmVmKTsKIENHRm9udFJlZiBD
R0dTdGF0ZUdldEZvbnQoQ0dHU3RhdGVSZWYpOworQ0dGbG9hdCBDR0dTdGF0ZUdldEZvbnRTaXpl
KENHR1N0YXRlUmVmKTsKIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICpDR0dTdGF0ZUdldENUTShD
R0dTdGF0ZVJlZik7CiBDR0NvbG9yUmVmIENHR1N0YXRlR2V0RmlsbENvbG9yKENHR1N0YXRlUmVm
KTsKIENHQ29sb3JSZWYgQ0dHU3RhdGVHZXRTdHJva2VDb2xvcihDR0dTdGF0ZVJlZik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3Jk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRl
ci5oCmluZGV4IDJmZmZiNDcxZDgzNmE3YWM3YjBlZTIxNGI1NTA0NWIyMTYxNWRhMjEuLjIzMTk1
NDZkNzcxZjk5NjNlNjdkNzA4MjdiMTc2NTY5MzMyOGI3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBAIC0zNSw2
ICszNSw4IEBACiAKICNpZiBVU0UoQ09SRV9URVhUKQogI2luY2x1ZGUgPENvcmVHcmFwaGljcy9D
b3JlR3JhcGhpY3MuaD4KKyNpbmNsdWRlIDxDb3JlVGV4dC9Db3JlVGV4dC5oPgorI2luY2x1ZGUg
PHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NnL0NvcmVHcmFw
aGljc1NQSS5oPgogI2VuZGlmCiAKQEAgLTQ3LDIyICs0OSwyMiBAQCBjbGFzcyBHcmFwaGljc0Nv
bnRleHQ7CiAKIGNsYXNzIERyYXdHbHlwaHNSZWNvcmRlciB7CiBwdWJsaWM6Ci0gICAgZW51bSBj
bGFzcyBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gewotICAgICAgICBEZWNvbnN0cnVjdCwKLSAg
ICAgICAgRG9udERlY29uc3RydWN0Ci0gICAgfTsKLSAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVj
b3JkZXIoR3JhcGhpY3NDb250ZXh0JiwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKTsKKyAgICBl
bnVtIGNsYXNzIERlY29uc3RydWN0RHJhd0dseXBocyA6IGJvb2wgeyBObywgWWVzIH07CisgICAg
ZW51bSBjbGFzcyBEZXJpdmVGb250RnJvbUNvbnRleHQgOiBib29sIHsgTm8sIFllcyB9OworICAg
IGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEZWNvbnN0cnVj
dERyYXdHbHlwaHMgPSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6Ok5vLCBEZXJpdmVGb250RnJvbUNv
bnRleHQgPSBEZXJpdmVGb250RnJvbUNvbnRleHQ6Ok5vKTsKIAogICAgIHZvaWQgZHJhd0dseXBo
cyhjb25zdCBGb250JiwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCosIGNvbnN0IEdseXBoQnVmZmVy
QWR2YW5jZSosIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yUG9p
bnQsIEZvbnRTbW9vdGhpbmdNb2RlKTsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9S
TShXSU4pCisgICAgdm9pZCBkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYsIENHRmxvYXQgZm9udFNp
emUsIENUTGluZVJlZiwgQ0dSZWN0IGxpbmVSZWN0KTsKKwogICAgIHZvaWQgcmVjb3JkQmVnaW5M
YXllcihDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dSZWN0KTsKICAgICB2b2lk
IHJlY29yZEVuZExheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmKTsKICAgICB2
b2lkIHJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYsIGNv
bnN0IENHQWZmaW5lVHJhbnNmb3JtKiwgY29uc3QgQ0dHbHlwaFtdLCBjb25zdCBDR1BvaW50IHBv
c2l0aW9uc1tdLCBzaXplX3QgY291bnQpOwogICAgIHZvaWQgcmVjb3JkRHJhd0ltYWdlKENHUmVu
ZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBDR1JlY3QsIENHSW1hZ2VSZWYpOwogI2VuZGlm
CiAKLSAgICBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9u
KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb247IH0KKyAgICBEZWNv
bnN0cnVjdERyYXdHbHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhzKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNvbnN0cnVjdERyYXdHbHlwaHM7IH0KIAogcHJpdmF0ZToKICNpZiBVU0UoQ09SRV9URVhU
KSAmJiAhUExBVEZPUk0oV0lOKQpAQCAtODksNyArOTEsOCBAQCBwcml2YXRlOgogI2VuZGlmCiAK
ICAgICBHcmFwaGljc0NvbnRleHQmIG1fb3duZXI7Ci0gICAgRHJhd0dseXBoc0RlY29uc3RydWN0
aW9uIG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uOworICAgIERlY29uc3RydWN0RHJhd0dseXBo
cyBtX2RlY29uc3RydWN0RHJhd0dseXBoczsKKyAgICBEZXJpdmVGb250RnJvbUNvbnRleHQgbV9k
ZXJpdmVGb250RnJvbUNvbnRleHQ7CiAKICNpZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0o
V0lOKQogICAgIFVuaXF1ZVJlZjxHcmFwaGljc0NvbnRleHQ+IG1faW50ZXJuYWxDb250ZXh0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmlu
ZGV4IDUzNTYxOTdhMzQ0YTY5OWVjODkwOGIxODA2YzE3NTY5OTM4MGJhNmQuLjdkNzc2YWYxOTc5
N2U3ODAyM2EzNTc0NDFkYzhmZjU5MTJkN2ZiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IEZvbnRDYXNjYWRl
OjpkaXNwbGF5TGlzdEZvclRleAogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RGlzcGxheUxpc3Q6OkluTWVtb3J5RGlzcGxheUxpc3Q+IGRpc3BsYXlM
aXN0ID0gbWFrZVVuaXF1ZTxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4oKTsKLSAg
ICBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3QsIGNv
bnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRyLCBE
cmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3Ry
dWN0KTsKKyAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXIgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxh
eUxpc3QsIGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBu
dWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6Tm8pOwog
ICAgIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpz
aXplKGdseXBoQnVmZmVyLmluaXRpYWxBZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIo
cmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhCdWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RS
ZWFkeUFjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5j
cHAKaW5kZXggZTIzMmYxNzE5NDhlMWNmNDI2MjVhMWYyM2M4NjdiYjkzMjZmNTY5Zi4uNmZiOWYz
YzNlYjZkMWU3MTkwM2FmYzQ1MTRmNDE5MmVlZTIyZGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0Ry
YXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUu
aCIKKyNpbmNsdWRlICJGb250UGxhdGZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIu
aCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRDRy5oIgogCkBAIC04NCw5ICs4NSwxMCBAQCBV
bmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0PiBEcmF3R2x5cGhzUmVjb3JkZXI6OmNyZWF0ZUludGVy
bmFsQ29udGV4dCgpCiAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0Q0c+
KGNvbnRleHQuZ2V0KCkpOwogfQogCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNv
cmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJh
d0dseXBoc0RlY29uc3RydWN0aW9uKQorRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVj
b3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGRlY29u
c3RydWN0RHJhd0dseXBocywgRGVyaXZlRm9udEZyb21Db250ZXh0IGRlcml2ZUZvbnRGcm9tQ29u
dGV4dCkKICAgICA6IG1fb3duZXIob3duZXIpCi0gICAgLCBtX2RyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbihkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCisgICAgLCBtX2RlY29uc3RydWN0RHJhd0ds
eXBocyhkZWNvbnN0cnVjdERyYXdHbHlwaHMpCisgICAgLCBtX2Rlcml2ZUZvbnRGcm9tQ29udGV4
dChkZXJpdmVGb250RnJvbUNvbnRleHQpCiAgICAgLCBtX2ludGVybmFsQ29udGV4dChjcmVhdGVJ
bnRlcm5hbENvbnRleHQoKSkKIHsKIH0KQEAgLTI4OSwxMSArMjkxLDEzIEBAIHN0YXRpYyBWZWN0
b3I8Q0dTaXplPiBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKGNvbnN0IENHUG9pbnQgcG9z
aXRpb25zW10sIHNpCiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhz
KENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0ZSwgY29uc3QgQ0dBZmZpbmVU
cmFuc2Zvcm0qLCBjb25zdCBDR0dseXBoIGdseXBoc1tdLCBjb25zdCBDR1BvaW50IHBvc2l0aW9u
c1tdLCBzaXplX3QgY291bnQpCiB7CisgICAgQVNTRVJUX0lNUExJRVMobV9kZXJpdmVGb250RnJv
bUNvbnRleHQgPT0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpObywgbV9vcmlnaW5hbEZvbnQpOwor
CiAgICAgaWYgKCFjb3VudCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dGb250UmVmIHVzZWRG
b250ID0gQ0dHU3RhdGVHZXRGb250KGdzdGF0ZSk7Ci0gICAgaWYgKHVzZWRGb250ICE9IGFkb3B0
Q0YoQ1RGb250Q29weUdyYXBoaWNzRm9udChtX29yaWdpbmFsRm9udC0+cGxhdGZvcm1EYXRhKCku
Y3RGb250KCksIG51bGxwdHIpKS5nZXQoKSkKKyAgICBpZiAobV9kZXJpdmVGb250RnJvbUNvbnRl
eHQgPT0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpObyAmJiB1c2VkRm9udCAhPSBhZG9wdENGKENU
Rm9udENvcHlHcmFwaGljc0ZvbnQobV9vcmlnaW5hbEZvbnQtPnBsYXRmb3JtRGF0YSgpLmN0Rm9u
dCgpLCBudWxscHRyKSkuZ2V0KCkpCiAgICAgICAgIHJldHVybjsKIAogI2lmIEFTU0VSVF9FTkFC
TEVECkBAIC0zMzMsNyArMzM3LDkgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERy
YXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXQKICAgICB1cGRh
dGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5kUHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNv
bG9yKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKLSAg
ICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMs
IGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRl
eHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0
aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CisgICAgYXV0byBmb250U2l6ZSA9IENHR1N0YXRl
R2V0Rm9udFNpemUoZ3N0YXRlKTsKKyAgICBSZWYgZm9udCA9IG1fZGVyaXZlRm9udEZyb21Db250
ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6Tm8gPyAqbV9vcmlnaW5hbEZvbnQgOiBGb250
OjpjcmVhdGUoRm9udFBsYXRmb3JtRGF0YShhZG9wdENGKENURm9udENyZWF0ZVdpdGhHcmFwaGlj
c0ZvbnQodXNlZEZvbnQsIGZvbnRTaXplLCBudWxscHRyLCBudWxscHRyKSksIGZvbnRTaXplKSk7
CisgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgY29tcHV0
ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlvbnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJp
eCkuZGF0YSgpLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBd
KSwgbV9zbW9vdGhpbmdNb2RlKTsKIAogICAgIG1fb3duZXIuY29uY2F0Q1RNKGludmVyc2VDVE1G
aXh1cCk7CiB9CkBAIC00MTAsMTIgKzQxNiwxMiBAQCBzdGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMg
ZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZQog
CiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMsIGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSog
YWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywgY29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2lu
dCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5nTW9kZSkKIHsKLSAgICBpZiAobV9kcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEb250RGVjb25z
dHJ1Y3QpIHsKKyAgICBpZiAobV9kZWNvbnN0cnVjdERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3RE
cmF3R2x5cGhzOjpObykgewogICAgICAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQo
Zm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdN
b2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEFTU0VSVChtX2RyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbiA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsK
KyAgICBBU1NFUlQobV9kZWNvbnN0cnVjdERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5
cGhzOjpZZXMpOwogCiAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS83MDE2NjU1Mj4gUmVj
b3JkIE9UU1ZHIGdseXBocy4KICAgICBHbHlwaHNBbmRBZHZhbmNlcyBnbHlwaHNBbmRBZHZhbmNl
c1dpdGhvdXRPVFNWR0dseXBocyA9IGZpbHRlck91dE9UU1ZHR2x5cGhzKGZvbnQsIGdseXBocywg
YWR2YW5jZXMsIG51bUdseXBocyk7CkBAIC00MjcsNCArNDMzLDE5IEBAIHZvaWQgRHJhd0dseXBo
c1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqIGdsCiAgICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKIH0KIAordm9pZCBEcmF3
R2x5cGhzUmVjb3JkZXI6OmRyYXdOYXRpdmVUZXh0KENURm9udFJlZiBmb250LCBDR0Zsb2F0IGZv
bnRTaXplLCBDVExpbmVSZWYgbGluZSwgQ0dSZWN0IGxpbmVSZWN0KQoreworICAgIEFTU0VSVCht
X2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CisK
KyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHNhdmVyKG1fb3duZXIpOworCisgICAgbV9v
d25lci50cmFuc2xhdGUobGluZVJlY3Qub3JpZ2luLngsIGxpbmVSZWN0Lm9yaWdpbi55ICsgbGlu
ZVJlY3Quc2l6ZS5oZWlnaHQpOworICAgIG1fb3duZXIuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7
CisKKyAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0KEZvbnQ6OmNyZWF0ZShGb250UGxhdGZvcm1E
YXRhKGZvbnQsIGZvbnRTaXplKSksIEZvbnRTbW9vdGhpbmdNb2RlOjpTdWJwaXhlbEFudGlhbGlh
c2VkKTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24obV9pbnRlcm5hbENvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLCAwLCAwKTsKKyAgICBDVExpbmVEcmF3KGxpbmUsIG1faW50ZXJuYWxD
b250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7CisgICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlM
aXN0UmVjb3JkZXIuY3BwCmluZGV4IDNjYjdiZDRkZmIyNTc0ZWY5MjY3NDM2MmUxMDVjNWM4OTc3
ZjcwMTQuLmJmYjIzMjIzMjVmM2MyNDE5NjkxMmNjZmY0YWFiODA0YzBkNmQxY2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5
TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKQEAgLTQwLDExICs0MCwxMSBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6
OlJlY29yZGVyKERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29y
ZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQor
UmVjb3JkZXI6OlJlY29yZGVyKERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0ds
eXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhz
KQogICAgIDogbV9kaXNwbGF5TGlzdChkaXNwbGF5TGlzdCkKICAgICAsIG1fZGVsZWdhdGUoZGVs
ZWdhdGUpCiAgICAgLCBtX2lzTmVzdGVkKGZhbHNlKQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3Jk
ZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKKyAgICAsIG1fZHJhd0dseXBoc1Jl
Y29yZGVyKCp0aGlzLCBkZWNvbnN0cnVjdERyYXdHbHlwaHMpCiB7CiAgICAgTE9HX1dJVEhfU1RS
RUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJcblJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBp
bml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RN
LCBpbml0aWFsQ2xpcCB9KTsKQEAgLTU0LDcgKzU0LDcgQEAgUmVjb3JkZXI6OlJlY29yZGVyKFJl
Y29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
RmwKICAgICA6IG1fZGlzcGxheUxpc3QocGFyZW50Lm1fZGlzcGxheUxpc3QpCiAgICAgLCBtX2Rl
bGVnYXRlKHBhcmVudC5tX2RlbGVnYXRlKQogICAgICwgbV9pc05lc3RlZCh0cnVlKQotICAgICwg
bV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5k
cmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oKSkKKyAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0
aGlzLCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZGVjb25zdHJ1Y3REcmF3R2x5cGhzKCkp
CiB7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFs
Q2xpcCB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IDQ3
MDQyYTJjY2NlYzk0ODUxNjFhY2I4NmM0NTVhZTE1ZmQ4NGUzNjguLmE1YWQzNjZkNGRjZDk5ZDg0
M2UwYmJhMDY5NWVkN2QyNDUzNzJiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGlj
c0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoK
ICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihEaXNwbGF5
TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0
aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJh
d0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworICAgIFdFQkNP
UkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
LCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJh
d0dseXBocyA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVyKCk7CiAKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRw
dXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFy
ZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJh
d0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCmluZGV4IDM5YjQ4NWUyYzA2NWQ3MjIxYjI4OWM3
ZGRmMDMyOTY0OGYxZDM2OGYuLmQwOWMxMzczZWE5YWFhZjRhMTg1MTM2ZWU4ODUzZDc4OGZjNDE3
OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKQEAg
LTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhz
RGVjb25zdHJ1Y3Rpb24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihH
cmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRG
cm9tQ29udGV4dCkKICAgICA6IG1fb3duZXIob3duZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3Jk
ZXJXaW4uY3BwCmluZGV4IDQzOWQ0MWM3ZTQxZWI2NDM4MjAwMzgyMzRlNTIzOGE4NjY4NTA4Zjcu
LjVkNjZlYjcyYWQxM2MyNGRhYzA5NWE5NDVmNjE0YTZmNTUyMjI0OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhz
UmVjb3JkZXJXaW4uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0
JiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorRHJhd0dseXBoc1JlY29yZGVyOjpE
cmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3
R2x5cGhzLCBEZXJpdmVGb250RnJvbUNvbnRleHQpCiAgICAgOiBtX293bmVyKG93bmVyKQogewog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDQ4Mjc1
MTdkNGVmZDQxMWI4NDgzYWQ5N2QwZmZmNmIxYjJmYzZlZmYuLmM5MmU2NWEyMzI4NjM1ZDk2MDg2
ZThhY2VjZDE3ZjliZTU1ZTM4MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGhlbWVJT1MubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkNvbG9ySU9TLmgiCiAjaW1w
b3J0ICJEYXRlQ29tcG9uZW50cy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRy
YXdHbHlwaHNSZWNvcmRlci5oIgogI2ltcG9ydCAiRmlsZS5oIgogI2ltcG9ydCAiRmxvYXRSb3Vu
ZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udENhY2hlLmgiCkBAIC0xNTM2LDYgKzE1MzcsNyBAQCBz
dHJ1Y3QgUmVuZGVyQXR0YWNobWVudEluZm8gewogICAgIHN0cnVjdCBMYWJlbExpbmUgewogICAg
ICAgICBGbG9hdFJlY3QgcmVjdDsKICAgICAgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGluZTsK
KyAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udDsKICAgICB9OwogICAgIFZlY3RvcjxM
YWJlbExpbmU+IGxpbmVzOwogCkBAIC0xNTQ1LDEwICsxNTQ3LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBTdHJpbmcmLCBDVEZvbnRSZWYsIFVJQ29sb3Ig
KiwgdW5zaWduZWQgbWF4aW11bUxpbmVDb3VudCk7CiAgICAgdm9pZCBidWlsZFNpbmdsZUxpbmUo
Y29uc3QgU3RyaW5nJiwgQ1RGb250UmVmLCBVSUNvbG9yICopOwogCi0gICAgdm9pZCBhZGRMaW5l
KENUTGluZVJlZik7CisgICAgdm9pZCBhZGRMaW5lKENURm9udFJlZiwgQ1RMaW5lUmVmKTsKIH07
CiAKLXZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVmIGxpbmUpCit2
b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjphZGRMaW5lKENURm9udFJlZiBmb250LCBDVExpbmVS
ZWYgbGluZSkKIHsKICAgICBDR1JlY3QgbGluZUJvdW5kcyA9IENUTGluZUdldEJvdW5kc1dpdGhP
cHRpb25zKGxpbmUsIGtDVExpbmVCb3VuZHNFeGNsdWRlVHlwb2dyYXBoaWNMZWFkaW5nKTsKICAg
ICBDR0Zsb2F0IHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gQ1RMaW5lR2V0VHJhaWxpbmdXaGl0
ZXNwYWNlV2lkdGgobGluZSk7CkBAIC0xNTU3LDYgKzE1NTksNyBAQCB2b2lkIFJlbmRlckF0dGFj
aG1lbnRJbmZvOjphZGRMaW5lKENUTGluZVJlZiBsaW5lKQogCiAgICAgQ0dGbG9hdCB4T2Zmc2V0
ID0gKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAyKSAtIChsaW5lV2lkdGhJZ25vcmluZ1RyYWls
aW5nV2hpdGVzcGFjZSAvIDIpOwogICAgIExhYmVsTGluZSBsYWJlbExpbmU7CisgICAgbGFiZWxM
aW5lLmZvbnQgPSBmb250OwogICAgIGxhYmVsTGluZS5saW5lID0gbGluZTsKICAgICBsYWJlbExp
bmUucmVjdCA9IEZsb2F0UmVjdCh4T2Zmc2V0LCAwLCBsaW5lV2lkdGhJZ25vcmluZ1RyYWlsaW5n
V2hpdGVzcGFjZSwgbGluZUhlaWdodCk7CiAKQEAgLTE1OTEsNyArMTU5NCw3IEBAIHZvaWQgUmVu
ZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwg
Q1RGb250UmVmIGZvbnQsCiAgICAgQ0ZJbmRleCBsaW5lSW5kZXggPSAwOwogICAgIENGSW5kZXgg
bm9uVHJ1bmNhdGVkTGluZUNvdW50ID0gc3RkOjptaW48Q0ZJbmRleD4obWF4aW11bUxpbmVDb3Vu
dCAtIDEsIGxpbmVDb3VudCk7CiAgICAgZm9yICg7IGxpbmVJbmRleCA8IG5vblRydW5jYXRlZExp
bmVDb3VudDsgKytsaW5lSW5kZXgpCi0gICAgICAgIGFkZExpbmUoKENUTGluZVJlZilDRkFycmF5
R2V0VmFsdWVBdEluZGV4KGN0TGluZXMsIGxpbmVJbmRleCkpOworICAgICAgICBhZGRMaW5lKGZv
bnQsIChDVExpbmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5lSW5kZXgp
KTsKIAogICAgIGlmIChsaW5lSW5kZXggPT0gbGluZUNvdW50KQogICAgICAgICByZXR1cm47CkBA
IC0xNjExLDcgKzE2MTQsNyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBw
ZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LAogICAgIGlmICghdHJ1
bmNhdGVkTGluZSkKICAgICAgICAgdHJ1bmNhdGVkTGluZSA9IHJlbWFpbmluZ0xpbmU7CiAKLSAg
ICBhZGRMaW5lKHRydW5jYXRlZExpbmUuZ2V0KCkpOworICAgIGFkZExpbmUoZm9udCwgdHJ1bmNh
dGVkTGluZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkU2lu
Z2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbG9yICpjb2xv
cikKQEAgLTE2MjUsNyArMTYyOCw3IEBAIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxk
U2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVCiAgICAgfTsK
ICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkVGV4dCA9IGFkb3B0
TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQgYXR0cmli
dXRlczp0ZXh0QXR0cmlidXRlc10pOwogCi0gICAgYWRkTGluZShhZG9wdENGKENUTGluZUNyZWF0
ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRlZFRl
eHQuZ2V0KCkpKS5nZXQoKSk7CisgICAgYWRkTGluZShmb250LCBhZG9wdENGKENUTGluZUNyZWF0
ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRlZFRl
eHQuZ2V0KCkpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBCT09MIGdldEF0dGFjaG1lbnRQcm9ncmVz
cyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBmbG9hdCYgcHJvZ3Jlc3MpCkBA
IC0xNzY2LDE1ICsxNzY5LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24oR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYKIAogc3RhdGljIHZv
aWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0
dGFjaG1lbnRJbmZvJiBpbmZvKQogewotICAgIGZvciAoY29uc3QgYXV0byYgbGluZSA6IGluZm8u
bGluZXMpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0
KTsKKyAgICBEcmF3R2x5cGhzUmVjb3JkZXIgcmVjb3JkZXIoY29udGV4dCwgRHJhd0dseXBoc1Jl
Y29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcywgRHJhd0dseXBoc1JlY29yZGVyOjpE
ZXJpdmVGb250RnJvbUNvbnRleHQ6Olllcyk7CiAKLSAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
dG9GbG9hdFNpemUobGluZS5yZWN0Lm1pblhNYXhZQ29ybmVyKCkpKTsKLSAgICAgICAgY29udGV4
dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLQotICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9z
aXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgMCwgMCk7Ci0gICAgICAgIENUTGluZURy
YXcobGluZS5saW5lLmdldCgpLCBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICB9Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5mby5saW5lcykKKyAgICAgICAgcmVjb3JkZXIu
ZHJhd05hdGl2ZVRleHQobGluZS5mb250LmdldCgpLCBDVEZvbnRHZXRTaXplKGxpbmUuZm9udC5n
ZXQoKSksIGxpbmUubGluZS5nZXQoKSwgbGluZS5yZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgcGFp
bnRBdHRhY2htZW50UHJvZ3Jlc3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRh
Y2htZW50SW5mbyYgaW5mbykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439771</attachid>
            <date>2021-09-30 12:37:42 -0700</date>
            <delta_ts>2021-09-30 13:11:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20210930143741.patch</filename>
            <type>text/plain</type>
            <size>20509</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNDI3Zjc1YWE3NTg1MWFjMzU3Mjc4OWZiZTI2ZDQyZGQ5YmJiY2UyLi5l
ODU0Y2ZhNzBjZjI4YTcyOTMzY2VkMDU0OGU4ZjYzYjBhMjA5MDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRlY29uc3RydWN0RHJhd0dseXBocyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uYC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Ry
YXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIEFkZCBhIG5ldyBwYXJhbWV0ZXIg
dG8gYERyYXdHbHlwaHNSZW5kZXJlcmAgdGhhdCBjb250cm9scyB3aGV0aGVyIGZvbnRzIG90aGVy
IHRoYW4gdGhlIG9uZQorICAgICAgICBpbml0aWFsbHkgcHJvdmlkZWQgdG8gYGRyYXdHbHlwaHNg
L2BkcmF3TmF0aXZlVGV4dGAgY2FuIGJlIHVzZWQgdG8gZHJhdyBnbHlwaHMuIFRoaXMgaXMgb25s
eQorICAgICAgICB1c2VkIGJ5IHRoZSBhYm92ZSBhcyB3ZSBrbm93IHRoYXQgdGhlIGluaXRpYWwg
Zm9udCBpcyBhIHN5c3RlbSBmb250LCBhbmQgdGhlcmVmb3JlIHRoYXQgdGhlCisgICAgICAgIGZh
bGxiYWNrIGxpc3Qgd2lsbCBhbHNvIG9ubHkgY29udGFpbiBzeXN0ZW0gZm9udHMsIG1lYW5pbmcg
dGhhdCBzZW5kaW5nIHRoZSBmb250IHRvIHRoZQorICAgICAgICBHUFVQcm9jZXNzIGlzIGNoZWFw
IChhIGZpbGUgcGF0aCBpbnN0ZWFkIG9mIGFjdHVhbCBkYXRhKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgRHJpdmUtYnk6
IFJlbmFtZSBgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uYCB0byBgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzYCBhcyBpdCByZWFkcyBiZXR0ZXIuCisKIDIwMjEtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXVkaW8gcGFubmVyIG5vZGUgcXVhbGl0eSBk
ZXRlcmlvcmF0ZXMgb3ZlciB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5ZWExODBhZjA5OGUy
NDIyYjliYjI3OTU5OTFmYmFiNTkyYTZkYmE0Li5hOTE3ZTk1MDk0ZGNlMjUwNzNhYWYzZDViZTM4
ODdmMWY2YzBlOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
OS0zMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11b
R1BVIFByb2Nlc3NdIHN1cHBvcnQgYDxhdHRhY2htZW50PmAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc4MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzA4ODQwOTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAg
ICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgorCiAyMDIxLTA5LTI5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU3Vw
cG9ydCBpbi1iYW5kIGNoYXB0ZXIgdHJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDBkNTk3ZGM0YjMzM2Q3YTUwNTcwZGVlYjk1
YzdjMTk4OGY5NTc5YjIuLjZjNTYyMTA4YzA3OGUwYTIxOTFmM2U0MDU4MTU0MTM3ZDhmMmQ5MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
CkBAIC0yNzAsNiArMjcwLDcgQEAgdm9pZCogQ0dDb250ZXh0RGVsZWdhdGVHZXRJbmZvKENHQ29u
dGV4dERlbGVnYXRlUmVmKTsKIHZvaWQgQ0dDb250ZXh0RGVsZWdhdGVSZWxlYXNlKENHQ29udGV4
dERlbGVnYXRlUmVmKTsKIENHRmxvYXQgQ0dHU3RhdGVHZXRBbHBoYShDR0dTdGF0ZVJlZik7CiBD
R0ZvbnRSZWYgQ0dHU3RhdGVHZXRGb250KENHR1N0YXRlUmVmKTsKK0NHRmxvYXQgQ0dHU3RhdGVH
ZXRGb250U2l6ZShDR0dTdGF0ZVJlZik7CiBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqQ0dHU3Rh
dGVHZXRDVE0oQ0dHU3RhdGVSZWYpOwogQ0dDb2xvclJlZiBDR0dTdGF0ZUdldEZpbGxDb2xvcihD
R0dTdGF0ZVJlZik7CiBDR0NvbG9yUmVmIENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoQ0dHU3RhdGVS
ZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0ds
eXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5
cGhzUmVjb3JkZXIuaAppbmRleCAyZmZmYjQ3MWQ4MzZhN2FjN2IwZWUyMTRiNTUwNDViMjE2MTVk
YTIxLi5lNmE5Y2I0ZWYzN2FhNzc0NGIxNGMxYjJjYzBkZWMyZmZlZjE2ZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIu
aApAQCAtMzUsNiArMzUsMTIgQEAKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+
CisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUElXaW4u
aD4KKyNlbHNlCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgorI2VuZGlmCiAj
aW5jbHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNlbmRpZgogCkBAIC00Nywy
MiArNTMsMjIgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBEcmF3R2x5cGhzUmVj
b3JkZXIgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgRHJhd0dseXBoc0RlY29uc3RydWN0aW9u
IHsKLSAgICAgICAgRGVjb25zdHJ1Y3QsCi0gICAgICAgIERvbnREZWNvbnN0cnVjdAotICAgIH07
Ci0gICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERyYXdH
bHlwaHNEZWNvbnN0cnVjdGlvbik7CisgICAgZW51bSBjbGFzcyBEZWNvbnN0cnVjdERyYXdHbHlw
aHMgOiBib29sIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgRGVyaXZlRm9udEZyb21Db250
ZXh0IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIo
R3JhcGhpY3NDb250ZXh0JiwgRGVjb25zdHJ1Y3REcmF3R2x5cGhzID0gRGVjb25zdHJ1Y3REcmF3
R2x5cGhzOjpObywgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21Db250ZXh0
OjpObyk7CiAKICAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVm
ZmVyR2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CiAKICNp
ZiBVU0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQorICAgIHZvaWQgZHJhd05hdGl2ZVRl
eHQoQ1RGb250UmVmLCBDR0Zsb2F0IGZvbnRTaXplLCBDVExpbmVSZWYsIENHUmVjdCBsaW5lUmVj
dCk7CisKICAgICB2b2lkIHJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dH
U3RhdGVSZWYsIENHUmVjdCk7CiAgICAgdm9pZCByZWNvcmRFbmRMYXllcihDR1JlbmRlcmluZ1N0
YXRlUmVmLCBDR0dTdGF0ZVJlZik7CiAgICAgdm9pZCByZWNvcmREcmF3R2x5cGhzKENHUmVuZGVy
aW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSosIGNvbnN0
IENHR2x5cGhbXSwgY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2l6ZV90IGNvdW50KTsKICAg
ICB2b2lkIHJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwg
Q0dSZWN0LCBDR0ltYWdlUmVmKTsKICNlbmRpZgogCi0gICAgRHJhd0dseXBoc0RlY29uc3RydWN0
aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOyB9CisgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGRlY29uc3RydWN0
RHJhd0dseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzOyB9CiAK
IHByaXZhdGU6CiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKQEAgLTg5LDcg
Kzk1LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX293bmVy
OwotICAgIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bjsKKyAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgbV9kZWNvbnN0cnVjdERyYXdHbHlwaHM7Cisg
ICAgRGVyaXZlRm9udEZyb21Db250ZXh0IG1fZGVyaXZlRm9udEZyb21Db250ZXh0OwogCiAjaWYg
VVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBVbmlxdWVSZWY8R3JhcGhpY3ND
b250ZXh0PiBtX2ludGVybmFsQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA1MzU2MTk3YTM0NGE2OTllYzg5MDhiMTgw
NmMxNzU2OTkzODBiYTZkLi43ZDc3NmFmMTk3OTdlNzgwMjNhMzU3NDQxZGM4ZmY1OTEyZDdmYjJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2Fk
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUu
Y3BwCkBAIC0yMTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1l
bW9yeURpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJ
bk1lbW9yeURpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6
OkluTWVtb3J5RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxheUxpc3Q6OlJlY29yZGVyIHJlY29y
ZGluZ0NvbnRleHQoKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBB
ZmZpbmVUcmFuc2Zvcm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhz
RGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCk7CisgICAgRGlzcGxheUxpc3Q6OlJlY29y
ZGVyIHJlY29yZGluZ0NvbnRleHQoKmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0
UmVjdCgpLCBBZmZpbmVUcmFuc2Zvcm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpE
ZWNvbnN0cnVjdERyYXdHbHlwaHM6Ok5vKTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9p
bnQgPSB0b0Zsb2F0UG9pbnQoV2ViQ29yZTo6c2l6ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5j
ZSgpKSk7CiAgICAgZHJhd0dseXBoQnVmZmVyKHJlY29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVy
LCBzdGFydFBvaW50LCBjdXN0b21Gb250Tm90UmVhZHlBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVy
Q29yZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
RHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCmluZGV4IGUyMzJmMTcxOTQ4ZTFjZjQyNjI1
YTFmMjNjODY3YmI5MzI2ZjU2OWYuLjZmYjlmM2MzZWI2ZDFlNzE5MDNhZmM0NTE0ZjQxOTJlZWUy
MmRiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRm9u
dC5oIgogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0
YS5oIgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
Q0cuaCIKIApAQCAtODQsOSArODUsMTAgQEAgVW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dD4gRHJh
d0dseXBoc1JlY29yZGVyOjpjcmVhdGVJbnRlcm5hbENvbnRleHQoKQogICAgIHJldHVybiBtYWtl
VW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dENHPihjb250ZXh0LmdldCgpKTsKIH0KIAotRHJhd0ds
eXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwg
RHJhd0dseXBoc0RlY29uc3RydWN0aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0RyYXdH
bHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIs
IERlY29uc3RydWN0RHJhd0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRG
cm9tQ29udGV4dCBkZXJpdmVGb250RnJvbUNvbnRleHQpCiAgICAgOiBtX293bmVyKG93bmVyKQot
ICAgICwgbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oZHJhd0dseXBoc0RlY29uc3RydWN0aW9u
KQorICAgICwgbV9kZWNvbnN0cnVjdERyYXdHbHlwaHMoZGVjb25zdHJ1Y3REcmF3R2x5cGhzKQor
ICAgICwgbV9kZXJpdmVGb250RnJvbUNvbnRleHQoZGVyaXZlRm9udEZyb21Db250ZXh0KQogICAg
ICwgbV9pbnRlcm5hbENvbnRleHQoY3JlYXRlSW50ZXJuYWxDb250ZXh0KCkpCiB7CiB9CkBAIC0y
ODksMTEgKzI5MSwxMyBAQCBzdGF0aWMgVmVjdG9yPENHU2l6ZT4gY29tcHV0ZUFkdmFuY2VzRnJv
bVBvc2l0aW9ucyhjb25zdCBDR1BvaW50IHBvc2l0aW9uc1tdLCBzaQogCiB2b2lkIERyYXdHbHlw
aHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0
ZVJlZiBnc3RhdGUsIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtKiwgY29uc3QgQ0dHbHlwaCBnbHlw
aHNbXSwgY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2l6ZV90IGNvdW50KQogeworICAgIEFT
U0VSVF9JTVBMSUVTKG1fZGVyaXZlRm9udEZyb21Db250ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29u
dGV4dDo6Tm8sIG1fb3JpZ2luYWxGb250KTsKKwogICAgIGlmICghY291bnQpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIENHRm9udFJlZiB1c2VkRm9udCA9IENHR1N0YXRlR2V0Rm9udChnc3RhdGUp
OwotICAgIGlmICh1c2VkRm9udCAhPSBhZG9wdENGKENURm9udENvcHlHcmFwaGljc0ZvbnQobV9v
cmlnaW5hbEZvbnQtPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBudWxscHRyKSkuZ2V0KCkpCisg
ICAgaWYgKG1fZGVyaXZlRm9udEZyb21Db250ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6
Tm8gJiYgdXNlZEZvbnQgIT0gYWRvcHRDRihDVEZvbnRDb3B5R3JhcGhpY3NGb250KG1fb3JpZ2lu
YWxGb250LT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgbnVsbHB0cikpLmdldCgpKQogICAgICAg
ICByZXR1cm47CiAKICNpZiBBU1NFUlRfRU5BQkxFRApAQCAtMzMzLDcgKzMzNyw5IEBAIHZvaWQg
RHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYs
IENHR1N0YXRlUmVmIGdzdGF0CiAgICAgdXBkYXRlU3Ryb2tlQ29sb3IoQ29sb3I6OmNyZWF0ZUFu
ZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOwogICAgIHVwZGF0ZVNoYWRvdyhDR0dT
dGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCi0gICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVG
b250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25z
KHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBjdXJy
ZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0pLCBtX3Ntb290aGluZ01vZGUpOwor
ICAgIGF1dG8gZm9udFNpemUgPSBDR0dTdGF0ZUdldEZvbnRTaXplKGdzdGF0ZSk7CisgICAgUmVm
IGZvbnQgPSBtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dCA9PSBEZXJpdmVGb250RnJvbUNvbnRleHQ6
Ok5vID8gKm1fb3JpZ2luYWxGb250IDogRm9udDo6Y3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEoYWRv
cHRDRihDVEZvbnRDcmVhdGVXaXRoR3JhcGhpY3NGb250KHVzZWRGb250LCBmb250U2l6ZSwgbnVs
bHB0ciwgbnVsbHB0cikpLCBmb250U2l6ZSkpOworICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENh
Y2hlRm9udChmb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMocG9zaXRp
b25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJlbnRUZXh0
TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7CiAKICAgICBt
X293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAtNDEwLDEyICs0MTYsMTIg
QEAgc3RhdGljIEdseXBoc0FuZEFkdmFuY2VzIGZpbHRlck91dE9UU1ZHR2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmUKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRy
YXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2x5cGhz
LCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNpZ25lZCBudW1HbHlwaHMs
IGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhpbmdNb2RlIHNtb290aGlu
Z01vZGUpCiB7Ci0gICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7CisgICAgaWYgKG1fZGVjb25zdHJ1
Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6Tm8pIHsKICAgICAgICAgbV9v
d25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUds
eXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgQVNTRVJUKG1fZGVjb25zdHJ1Y3REcmF3
R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKIAogICAgIC8vIEZJWE1FOiA8
cmRhcjovL3Byb2JsZW0vNzAxNjY1NTI+IFJlY29yZCBPVFNWRyBnbHlwaHMuCiAgICAgR2x5cGhz
QW5kQWR2YW5jZXMgZ2x5cGhzQW5kQWR2YW5jZXNXaXRob3V0T1RTVkdHbHlwaHMgPSBmaWx0ZXJP
dXRPVFNWR0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMpOwpAQCAtNDI3
LDQgKzQzMywxOSBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd0dseXBocyhjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbAogICAgIGNvbmNsdWRlSW50ZXJu
YWxDb250ZXh0KCk7CiB9CiAKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3TmF0aXZlVGV4
dChDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmIGxpbmUsIENHUmVj
dCBsaW5lUmVjdCkKK3sKKyAgICBBU1NFUlQobV9kZWNvbnN0cnVjdERyYXdHbHlwaHMgPT0gRGVj
b25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworCisgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZl
ciBzYXZlcihtX293bmVyKTsKKworICAgIG1fb3duZXIudHJhbnNsYXRlKGxpbmVSZWN0Lm9yaWdp
bi54LCBsaW5lUmVjdC5vcmlnaW4ueSArIGxpbmVSZWN0LnNpemUuaGVpZ2h0KTsKKyAgICBtX293
bmVyLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworCisgICAgcHJlcGFyZUludGVybmFsQ29udGV4
dChGb250OjpjcmVhdGUoRm9udFBsYXRmb3JtRGF0YShmb250LCBmb250U2l6ZSkpLCBGb250U21v
b3RoaW5nTW9kZTo6U3VicGl4ZWxBbnRpYWxpYXNlZCk7CisgICAgQ0dDb250ZXh0U2V0VGV4dFBv
c2l0aW9uKG1faW50ZXJuYWxDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSwgMCwgMCk7CisgICAg
Q1RMaW5lRHJhdyhsaW5lLCBtX2ludGVybmFsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwor
ICAgIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXls
aXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCAzY2I3YmQ0
ZGZiMjU3NGVmOTI2NzQzNjJlMTA1YzVjODk3N2Y3MDE0Li5iZmIyMzIyMzI1ZjNjMjQxOTY5MTJj
Y2ZmNGFhYjgwNGMwZDZkMWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3Jk
ZXIuY3BwCkBAIC00MCwxMSArNDAsMTEgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIG5hbWVzcGFj
ZSBEaXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihEaXNwbGF5TGlzdCYgZGlzcGxh
eUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNLCBEZWxlZ2F0
ZSogZGVsZWdhdGUsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9u
IGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK1JlY29yZGVyOjpSZWNvcmRlcihEaXNwbGF5TGlz
dCYgZGlzcGxheUxpc3QsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3Qg
RmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RN
LCBEZWxlZ2F0ZSogZGVsZWdhdGUsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3
R2x5cGhzIGRlY29uc3RydWN0RHJhd0dseXBocykKICAgICA6IG1fZGlzcGxheUxpc3QoZGlzcGxh
eUxpc3QpCiAgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQogICAgICwgbV9pc05lc3RlZChmYWxz
ZSkKLSAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24pCisgICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywgZGVjb25zdHJ1Y3REcmF3
R2x5cGhzKQogewogICAgIExPR19XSVRIX1NUUkVBTShEaXNwbGF5TGlzdHMsIHN0cmVhbSA8PCAi
XG5SZWNvcmRpbmcgd2l0aCBjbGlwICIgPDwgaW5pdGlhbENsaXApOwogICAgIG1fc3RhdGVTdGFj
ay5hcHBlbmQoeyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CkBAIC01NCw3ICs1
NCw3IEBAIFJlY29yZGVyOjpSZWNvcmRlcihSZWNvcmRlciYgcGFyZW50LCBjb25zdCBHcmFwaGlj
c0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsCiAgICAgOiBtX2Rpc3BsYXlMaXN0KHBhcmVu
dC5tX2Rpc3BsYXlMaXN0KQogICAgICwgbV9kZWxlZ2F0ZShwYXJlbnQubV9kZWxlZ2F0ZSkKICAg
ICAsIG1faXNOZXN0ZWQodHJ1ZSkKLSAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBw
YXJlbnQubV9kcmF3R2x5cGhzUmVjb3JkZXIuZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKCkpCisg
ICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29y
ZGVyLmRlY29uc3RydWN0RHJhd0dseXBocygpKQogewogICAgIG1fc3RhdGVTdGFjay5hcHBlbmQo
eyBzdGF0ZSwgaW5pdGlhbENUTSwgaW5pdGlhbENsaXAgfSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAppbmRleCA0NzA0MmEyY2NjZWM5NDg1MTYxYWNiODZjNDU1YWUx
NWZkODRlMzY4Li5hNWFkMzY2ZDRkY2Q5OWQ4NDNlMGJiYTA2OTVlZDdkMjQ1MzcyYmJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKQEAgLTU1LDcgKzU1LDcgQEAgY2xh
c3MgUmVjb3JkZXIgOiBwdWJsaWMgR3JhcGhpY3NDb250ZXh0IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShSZWNvcmRlcik7CiBwdWJsaWM6CiAgICAgY2xhc3MgRGVsZWdhdGU7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgUmVjb3JkZXIoRGlzcGxheUxpc3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uID0gRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b246OkRlY29uc3RydWN0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihEaXNwbGF5TGlz
dCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJhd0ds
eXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgPSBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IH5SZWNvcmRlcigpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnZXRQaXhlbEJ1ZmZlcihj
b25zdCBQaXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hh
cmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApp
bmRleCAzOWI0ODVlMmMwNjVkNzIyMWIyODljN2RkZjAzMjk2NDhmMWQzNjhmLi5kMDljMTM3M2Vh
OWFhYWY0YTE4NTEzNmVlODg1M2Q3ODhmYzQxNzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0ds
eXBoc1JlY29yZGVySGFyZkJ1enouY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhp
Y3NDb250ZXh0JiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorRHJhd0dseXBoc1Jl
Y29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25z
dHJ1Y3REcmF3R2x5cGhzLCBEZXJpdmVGb250RnJvbUNvbnRleHQpCiAgICAgOiBtX293bmVyKG93
bmVyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAppbmRleCA0MzlkNDFjN2U0MWVi
NjQzODIwMDM4MjM0ZTUyMzhhODY2ODUwOGY3Li41ZDY2ZWI3MmFkMTNjMjRkYWMwOTVhOTQ1ZjYx
NGE2ZjU1MjIyNDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcApAQCAtMzIsNyArMzIs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbikKK0RyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29u
dGV4dCYgb3duZXIsIERlY29uc3RydWN0RHJhd0dseXBocywgRGVyaXZlRm9udEZyb21Db250ZXh0
KQogICAgIDogbV9vd25lcihvd25lcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUaGVtZUlPUy5tbQppbmRleCA2ZGQ3ZTg5NGUyOTQ4ZDhiMWQzZDVjMjc1YTQyZGYyYzA1
N2QwOTZmLi4zNGRjNDBhYjkwZjY5MDIyZGY0MmU0ZGU0YWZkOTM2MjdjMzE0MDZlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCkBAIC0zNyw2ICszNyw3IEBA
CiAjaW1wb3J0ICJDb2xvcklPUy5oIgogI2ltcG9ydCAiRGF0ZUNvbXBvbmVudHMuaCIKICNpbXBv
cnQgIkRvY3VtZW50LmgiCisjaW1wb3J0ICJEcmF3R2x5cGhzUmVjb3JkZXIuaCIKICNpbXBvcnQg
IkZpbGUuaCIKICNpbXBvcnQgIkZsb2F0Um91bmRlZFJlY3QuaCIKICNpbXBvcnQgIkZvbnRDYWNo
ZS5oIgpAQCAtMTUzNiw2ICsxNTM3LDcgQEAgc3RydWN0IFJlbmRlckF0dGFjaG1lbnRJbmZvIHsK
ICAgICBzdHJ1Y3QgTGFiZWxMaW5lIHsKICAgICAgICAgRmxvYXRSZWN0IHJlY3Q7CiAgICAgICAg
IFJldGFpblB0cjxDVExpbmVSZWY+IGxpbmU7CisgICAgICAgIFJldGFpblB0cjxDVEZvbnRSZWY+
IGZvbnQ7CiAgICAgfTsKICAgICBWZWN0b3I8TGFiZWxMaW5lPiBsaW5lczsKIApAQCAtMTU0NSwx
MCArMTU0NywxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgYnVpbGRXcmFwcGVkTGluZXMoY29uc3Qg
U3RyaW5nJiwgQ1RGb250UmVmLCBVSUNvbG9yICosIHVuc2lnbmVkIG1heGltdW1MaW5lQ291bnQp
OwogICAgIHZvaWQgYnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYsIENURm9udFJlZiwgVUlD
b2xvciAqKTsKIAotICAgIHZvaWQgYWRkTGluZShDVExpbmVSZWYpOworICAgIHZvaWQgYWRkTGlu
ZShDVEZvbnRSZWYsIENUTGluZVJlZik7CiB9OwogCi12b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZv
OjphZGRMaW5lKENUTGluZVJlZiBsaW5lKQordm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YWRk
TGluZShDVEZvbnRSZWYgZm9udCwgQ1RMaW5lUmVmIGxpbmUpCiB7CiAgICAgQ0dSZWN0IGxpbmVC
b3VuZHMgPSBDVExpbmVHZXRCb3VuZHNXaXRoT3B0aW9ucyhsaW5lLCBrQ1RMaW5lQm91bmRzRXhj
bHVkZVR5cG9ncmFwaGljTGVhZGluZyk7CiAgICAgQ0dGbG9hdCB0cmFpbGluZ1doaXRlc3BhY2VX
aWR0aCA9IENUTGluZUdldFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoKGxpbmUpOwpAQCAtMTU1Nyw2
ICsxNTU5LDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YWRkTGluZShDVExpbmVSZWYg
bGluZSkKIAogICAgIENHRmxvYXQgeE9mZnNldCA9IChhdHRhY2htZW50UmVjdC53aWR0aCgpIC8g
MikgLSAobGluZVdpZHRoSWdub3JpbmdUcmFpbGluZ1doaXRlc3BhY2UgLyAyKTsKICAgICBMYWJl
bExpbmUgbGFiZWxMaW5lOworICAgIGxhYmVsTGluZS5mb250ID0gZm9udDsKICAgICBsYWJlbExp
bmUubGluZSA9IGxpbmU7CiAgICAgbGFiZWxMaW5lLnJlY3QgPSBGbG9hdFJlY3QoeE9mZnNldCwg
MCwgbGluZVdpZHRoSWdub3JpbmdUcmFpbGluZ1doaXRlc3BhY2UsIGxpbmVIZWlnaHQpOwogCkBA
IC0xNTkxLDcgKzE1OTQsNyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBw
ZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LAogICAgIENGSW5kZXgg
bGluZUluZGV4ID0gMDsKICAgICBDRkluZGV4IG5vblRydW5jYXRlZExpbmVDb3VudCA9IHN0ZDo6
bWluPENGSW5kZXg+KG1heGltdW1MaW5lQ291bnQgLSAxLCBsaW5lQ291bnQpOwogICAgIGZvciAo
OyBsaW5lSW5kZXggPCBub25UcnVuY2F0ZWRMaW5lQ291bnQ7ICsrbGluZUluZGV4KQotICAgICAg
ICBhZGRMaW5lKChDVExpbmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5l
SW5kZXgpKTsKKyAgICAgICAgYWRkTGluZShmb250LCAoQ1RMaW5lUmVmKUNGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgoY3RMaW5lcywgbGluZUluZGV4KSk7CiAKICAgICBpZiAobGluZUluZGV4ID09IGxp
bmVDb3VudCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTYxMSw3ICsxNjE0LDcgQEAgdm9pZCBSZW5k
ZXJBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVkTGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBD
VEZvbnRSZWYgZm9udCwKICAgICBpZiAoIXRydW5jYXRlZExpbmUpCiAgICAgICAgIHRydW5jYXRl
ZExpbmUgPSByZW1haW5pbmdMaW5lOwogCi0gICAgYWRkTGluZSh0cnVuY2F0ZWRMaW5lLmdldCgp
KTsKKyAgICBhZGRMaW5lKGZvbnQsIHRydW5jYXRlZExpbmUuZ2V0KCkpOwogfQogCiB2b2lkIFJl
bmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUoY29uc3QgU3RyaW5nJiB0ZXh0LCBD
VEZvbnRSZWYgZm9udCwgVUlDb2xvciAqY29sb3IpCkBAIC0xNjI1LDcgKzE2MjgsNyBAQCB2b2lk
IFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUoY29uc3QgU3RyaW5nJiB0ZXh0
LCBDVEZvbnRSZWYgZm9udCwgVQogICAgIH07CiAgICAgUmV0YWluUHRyPE5TQXR0cmlidXRlZFN0
cmluZz4gYXR0cmlidXRlZFRleHQgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9j
XSBpbml0V2l0aFN0cmluZzp0ZXh0IGF0dHJpYnV0ZXM6dGV4dEF0dHJpYnV0ZXNdKTsKIAotICAg
IGFkZExpbmUoYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRy
aWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRUZXh0LmdldCgpKSkuZ2V0KCkpOworICAgIGFkZExp
bmUoZm9udCwgYWRvcHRDRihDVExpbmVDcmVhdGVXaXRoQXR0cmlidXRlZFN0cmluZygoQ0ZBdHRy
aWJ1dGVkU3RyaW5nUmVmKWF0dHJpYnV0ZWRUZXh0LmdldCgpKSkuZ2V0KCkpOwogfQogCiBzdGF0
aWMgQk9PTCBnZXRBdHRhY2htZW50UHJvZ3Jlc3MoY29uc3QgUmVuZGVyQXR0YWNobWVudCYgYXR0
YWNobWVudCwgZmxvYXQmIHByb2dyZXNzKQpAQCAtMTc2NiwxNSArMTc2OSwxMCBAQCBzdGF0aWMg
dm9pZCBwYWludEF0dGFjaG1lbnRJY29uKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVy
QXR0YWNobWVudEluZm8mCiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFRleHQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykKIHsKLSAgICBm
b3IgKGNvbnN0IGF1dG8mIGxpbmUgOiBpbmZvLmxpbmVzKSB7Ci0gICAgICAgIEdyYXBoaWNzQ29u
dGV4dFN0YXRlU2F2ZXIgc2F2ZXIoY29udGV4dCk7CisgICAgRHJhd0dseXBoc1JlY29yZGVyIHJl
Y29yZGVyKGNvbnRleHQsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhz
OjpZZXMsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVyaXZlRm9udEZyb21Db250ZXh0OjpZZXMpOwog
Ci0gICAgICAgIGNvbnRleHQudHJhbnNsYXRlKHRvRmxvYXRTaXplKGxpbmUucmVjdC5taW5YTWF4
WUNvcm5lcigpKSk7Ci0gICAgICAgIGNvbnRleHQuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7Ci0K
LSAgICAgICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQucGxhdGZvcm1Db250ZXh0
KCksIDAsIDApOwotICAgICAgICBDVExpbmVEcmF3KGxpbmUubGluZS5nZXQoKSwgY29udGV4dC5w
bGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgfQorICAgIGZvciAoY29uc3QgYXV0byYgbGluZSA6IGlu
Zm8ubGluZXMpCisgICAgICAgIHJlY29yZGVyLmRyYXdOYXRpdmVUZXh0KGxpbmUuZm9udC5nZXQo
KSwgQ1RGb250R2V0U2l6ZShsaW5lLmZvbnQuZ2V0KCkpLCBsaW5lLmxpbmUuZ2V0KCksIGxpbmUu
cmVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudFByb2dyZXNzKEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCg==
</data>
<flag name="commit-queue"
          id="463510"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>439774</attachid>
            <date>2021-09-30 12:58:51 -0700</date>
            <delta_ts>2021-10-08 12:02:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>230781.diff</filename>
            <type>text/plain</type>
            <size>20510</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkNDI3Zjc1YWE3NTg1MWFjMzU3Mjc4OWZiZTI2ZDQyZGQ5YmJiY2UyLi5l
ODU0Y2ZhNzBjZjI4YTcyOTMzY2VkMDU0OGU4ZjYzYjBhMjA5MDVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRlY29uc3RydWN0RHJhd0dseXBocyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uYC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Ry
YXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIEFkZCBhIG5ldyBwYXJhbWV0ZXIg
dG8gYERyYXdHbHlwaHNSZW5kZXJlcmAgdGhhdCBjb250cm9scyB3aGV0aGVyIGZvbnRzIG90aGVy
IHRoYW4gdGhlIG9uZQorICAgICAgICBpbml0aWFsbHkgcHJvdmlkZWQgdG8gYGRyYXdHbHlwaHNg
L2BkcmF3TmF0aXZlVGV4dGAgY2FuIGJlIHVzZWQgdG8gZHJhdyBnbHlwaHMuIFRoaXMgaXMgb25s
eQorICAgICAgICB1c2VkIGJ5IHRoZSBhYm92ZSBhcyB3ZSBrbm93IHRoYXQgdGhlIGluaXRpYWwg
Zm9udCBpcyBhIHN5c3RlbSBmb250LCBhbmQgdGhlcmVmb3JlIHRoYXQgdGhlCisgICAgICAgIGZh
bGxiYWNrIGxpc3Qgd2lsbCBhbHNvIG9ubHkgY29udGFpbiBzeXN0ZW0gZm9udHMsIG1lYW5pbmcg
dGhhdCBzZW5kaW5nIHRoZSBmb250IHRvIHRoZQorICAgICAgICBHUFVQcm9jZXNzIGlzIGNoZWFw
IChhIGZpbGUgcGF0aCBpbnN0ZWFkIG9mIGFjdHVhbCBkYXRhKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgRHJpdmUtYnk6
IFJlbmFtZSBgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uYCB0byBgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzYCBhcyBpdCByZWFkcyBiZXR0ZXIuCisKIDIwMjEtMDktMzAgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgQXVkaW8gcGFubmVyIG5vZGUgcXVhbGl0eSBk
ZXRlcmlvcmF0ZXMgb3ZlciB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA5ZWExODBhZjA5OGUy
NDIyYjliYjI3OTU5OTFmYmFiNTkyYTZkYmE0Li5hOTE3ZTk1MDk0ZGNlMjUwNzNhYWYzZDViZTM4
ODdmMWY2YzBlOTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
OS0zMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11b
R1BVIFByb2Nlc3NdIHN1cHBvcnQgYDxhdHRhY2htZW50PmAKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDc4MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzA4ODQwOTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAg
ICAgICAgKiBwYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oOgorCiAyMDIxLTA5LTI5ICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gU3Vw
cG9ydCBpbi1iYW5kIGNoYXB0ZXIgdHJhY2tzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwv
c3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCmluZGV4IDBkNTk3ZGM0YjMzM2Q3YTUwNTcwZGVlYjk1
YzdjMTk4OGY5NTc5YjIuLjZjNTYyMTA4YzA3OGUwYTIxOTFmM2U0MDU4MTU0MTM3ZDhmMmQ5MmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQ
SS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5o
CkBAIC0yNzAsNiArMjcwLDcgQEAgdm9pZCogQ0dDb250ZXh0RGVsZWdhdGVHZXRJbmZvKENHQ29u
dGV4dERlbGVnYXRlUmVmKTsKIHZvaWQgQ0dDb250ZXh0RGVsZWdhdGVSZWxlYXNlKENHQ29udGV4
dERlbGVnYXRlUmVmKTsKIENHRmxvYXQgQ0dHU3RhdGVHZXRBbHBoYShDR0dTdGF0ZVJlZik7CiBD
R0ZvbnRSZWYgQ0dHU3RhdGVHZXRGb250KENHR1N0YXRlUmVmKTsKK0NHRmxvYXQgQ0dHU3RhdGVH
ZXRGb250U2l6ZShDR0dTdGF0ZVJlZik7CiBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqQ0dHU3Rh
dGVHZXRDVE0oQ0dHU3RhdGVSZWYpOwogQ0dDb2xvclJlZiBDR0dTdGF0ZUdldEZpbGxDb2xvcihD
R0dTdGF0ZVJlZik7CiBDR0NvbG9yUmVmIENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoQ0dHU3RhdGVS
ZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0ds
eXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5
cGhzUmVjb3JkZXIuaAppbmRleCAyZmZmYjQ3MWQ4MzZhN2FjN2IwZWUyMTRiNTUwNDViMjE2MTVk
YTIxLi5lNmE5Y2I0ZWYzN2FhNzc0NGIxNGMxYjJjYzBkZWMyZmZlZjE2ZWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIu
aApAQCAtMzUsNiArMzUsMTIgQEAKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8Q29y
ZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+
CisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUgPHBhbC9zcGkvd2luL0NvcmVUZXh0U1BJV2lu
Lmg+CisjZWxzZQorI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KKyNlbmRpZgog
I2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjZW5kaWYKIApAQCAtNDcs
MjIgKzUzLDIyIEBAIGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogY2xhc3MgRHJhd0dseXBoc1Jl
Y29yZGVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biB7Ci0gICAgICAgIERlY29uc3RydWN0LAotICAgICAgICBEb250RGVjb25zdHJ1Y3QKLSAgICB9
OwotICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24pOworICAgIGVudW0gY2xhc3MgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29u
dGV4dCA6IGJvb2wgeyBObywgWWVzIH07CisgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVy
KEdyYXBoaWNzQ29udGV4dCYsIERlY29uc3RydWN0RHJhd0dseXBocyA9IERlY29uc3RydWN0RHJh
d0dseXBoczo6Tm8sIERlcml2ZUZvbnRGcm9tQ29udGV4dCA9IERlcml2ZUZvbnRGcm9tQ29udGV4
dDo6Tm8pOwogCiAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1
ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOwogCiAj
aWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKKyAgICB2b2lkIGRyYXdOYXRpdmVU
ZXh0KENURm9udFJlZiwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmLCBDR1JlY3QgbGluZVJl
Y3QpOworCiAgICAgdm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENH
R1N0YXRlUmVmLCBDR1JlY3QpOwogICAgIHZvaWQgcmVjb3JkRW5kTGF5ZXIoQ0dSZW5kZXJpbmdT
dGF0ZVJlZiwgQ0dHU3RhdGVSZWYpOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhDR1JlbmRl
cmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qLCBjb25z
dCBDR0dseXBoW10sIGNvbnN0IENHUG9pbnQgcG9zaXRpb25zW10sIHNpemVfdCBjb3VudCk7CiAg
ICAgdm9pZCByZWNvcmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYs
IENHUmVjdCwgQ0dJbWFnZVJlZik7CiAjZW5kaWYKIAotICAgIERyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbjsgfQorICAgIERlY29uc3RydWN0RHJhd0dseXBocyBkZWNvbnN0cnVj
dERyYXdHbHlwaHMoKSBjb25zdCB7IHJldHVybiBtX2RlY29uc3RydWN0RHJhd0dseXBoczsgfQog
CiBwcml2YXRlOgogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCkBAIC04OSw3
ICs5NSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9vd25l
cjsKLSAgICBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b247CisgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzOwor
ICAgIERlcml2ZUZvbnRGcm9tQ29udGV4dCBtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dDsKIAogI2lm
IFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCiAgICAgVW5pcXVlUmVmPEdyYXBoaWNz
Q29udGV4dD4gbV9pbnRlcm5hbENvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5kZXggNTM1NjE5N2EzNDRhNjk5ZWM4OTA4YjE4
MDZjMTc1Njk5MzgwYmE2ZC4uN2Q3NzZhZjE5Nzk3ZTc4MDIzYTM1NzQ0MWRjOGZmNTkxMmQ3ZmIy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2Nh
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRl
LmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5N
ZW1vcnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6
SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0
OjpJbk1lbW9yeURpc3BsYXlMaXN0PigpOwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciByZWNv
cmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwg
QWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOworICAgIERpc3BsYXlMaXN0OjpSZWNv
cmRlciByZWNvcmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9h
dFJlY3QoKSwgQWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6
RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpObyk7CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBv
aW50ID0gdG9GbG9hdFBvaW50KFdlYkNvcmU6OnNpemUoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFu
Y2UoKSkpOwogICAgIGRyYXdHbHlwaEJ1ZmZlcihyZWNvcmRpbmdDb250ZXh0LCBnbHlwaEJ1ZmZl
ciwgc3RhcnRQb2ludCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRl
ckNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0
L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBlMjMyZjE3MTk0OGUxY2Y0MjYy
NWExZjIzYzg2N2JiOTMyNmY1NjlmLi42ZmI5ZjNjM2ViNmQxZTcxOTAzYWZjNDUxNGY0MTkyZWVl
MjJkYjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3Bw
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZv
bnQuaCIKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURh
dGEuaCIKICNpbmNsdWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4
dENHLmgiCiAKQEAgLTg0LDkgKzg1LDEwIEBAIFVuaXF1ZVJlZjxHcmFwaGljc0NvbnRleHQ+IERy
YXdHbHlwaHNSZWNvcmRlcjo6Y3JlYXRlSW50ZXJuYWxDb250ZXh0KCkKICAgICByZXR1cm4gbWFr
ZVVuaXF1ZVJlZjxHcmFwaGljc0NvbnRleHRDRz4oY29udGV4dC5nZXQoKSk7CiB9CiAKLURyYXdH
bHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIs
IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitEcmF3
R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVy
LCBEZWNvbnN0cnVjdERyYXdHbHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhzLCBEZXJpdmVGb250
RnJvbUNvbnRleHQgZGVyaXZlRm9udEZyb21Db250ZXh0KQogICAgIDogbV9vd25lcihvd25lcikK
LSAgICAsIG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bikKKyAgICAsIG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzKGRlY29uc3RydWN0RHJhd0dseXBocykK
KyAgICAsIG1fZGVyaXZlRm9udEZyb21Db250ZXh0KGRlcml2ZUZvbnRGcm9tQ29udGV4dCkKICAg
ICAsIG1faW50ZXJuYWxDb250ZXh0KGNyZWF0ZUludGVybmFsQ29udGV4dCgpKQogewogfQpAQCAt
Mjg5LDExICsyOTEsMTMgQEAgc3RhdGljIFZlY3RvcjxDR1NpemU+IGNvbXB1dGVBZHZhbmNlc0Zy
b21Qb3NpdGlvbnMoY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2kKIAogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3Rh
dGVSZWYgZ3N0YXRlLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSosIGNvbnN0IENHR2x5cGggZ2x5
cGhzW10sIGNvbnN0IENHUG9pbnQgcG9zaXRpb25zW10sIHNpemVfdCBjb3VudCkKIHsKKyAgICBB
U1NFUlRfSU1QTElFUyhtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dCA9PSBEZXJpdmVGb250RnJvbUNv
bnRleHQ6Ok5vLCBtX29yaWdpbmFsRm9udCk7CisKICAgICBpZiAoIWNvdW50KQogICAgICAgICBy
ZXR1cm47CiAKICAgICBDR0ZvbnRSZWYgdXNlZEZvbnQgPSBDR0dTdGF0ZUdldEZvbnQoZ3N0YXRl
KTsKLSAgICBpZiAodXNlZEZvbnQgIT0gYWRvcHRDRihDVEZvbnRDb3B5R3JhcGhpY3NGb250KG1f
b3JpZ2luYWxGb250LT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgbnVsbHB0cikpLmdldCgpKQor
ICAgIGlmIChtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dCA9PSBEZXJpdmVGb250RnJvbUNvbnRleHQ6
Ok5vICYmIHVzZWRGb250ICE9IGFkb3B0Q0YoQ1RGb250Q29weUdyYXBoaWNzRm9udChtX29yaWdp
bmFsRm9udC0+cGxhdGZvcm1EYXRhKCkuY3RGb250KCksIG51bGxwdHIpKS5nZXQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAjaWYgQVNTRVJUX0VOQUJMRUQKQEAgLTMzMyw3ICszMzcsOSBAQCB2b2lk
IERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVm
LCBDR0dTdGF0ZVJlZiBnc3RhdAogICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENvbG9yOjpjcmVhdGVB
bmRQcmVzZXJ2ZUNvbG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKICAgICB1cGRhdGVTaGFkb3coQ0dH
U3RhdGVHZXRTdHlsZShnc3RhdGUpKTsKIAotICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hl
Rm9udCgqbV9vcmlnaW5hbEZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9u
cyhwb3NpdGlvbnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgY3Vy
cmVudFRleHRNYXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwgbV9zbW9vdGhpbmdNb2RlKTsK
KyAgICBhdXRvIGZvbnRTaXplID0gQ0dHU3RhdGVHZXRGb250U2l6ZShnc3RhdGUpOworICAgIFJl
ZiBmb250ID0gbV9kZXJpdmVGb250RnJvbUNvbnRleHQgPT0gRGVyaXZlRm9udEZyb21Db250ZXh0
OjpObyA/ICptX29yaWdpbmFsRm9udCA6IEZvbnQ6OmNyZWF0ZShGb250UGxhdGZvcm1EYXRhKGFk
b3B0Q0YoQ1RGb250Q3JlYXRlV2l0aEdyYXBoaWNzRm9udCh1c2VkRm9udCwgZm9udFNpemUsIG51
bGxwdHIsIG51bGxwdHIpKSwgZm9udFNpemUpKTsKKyAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRD
YWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0
aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4
dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0pLCBtX3Ntb290aGluZ01vZGUpOwogCiAgICAg
bV9vd25lci5jb25jYXRDVE0oaW52ZXJzZUNUTUZpeHVwKTsKIH0KQEAgLTQxMCwxMiArNDE2LDEy
IEBAIHN0YXRpYyBHbHlwaHNBbmRBZHZhbmNlcyBmaWx0ZXJPdXRPVFNWR0dseXBocyhjb25zdCBG
b250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlCiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpk
cmF3R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBo
cywgY29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhz
LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhp
bmdNb2RlKQogewotICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBEcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgeworICAgIGlmIChtX2RlY29uc3Ry
dWN0RHJhd0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6Ok5vKSB7CiAgICAgICAgIG1f
b3duZXIuZHJhd0dseXBoc0FuZENhY2hlRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMsIHN0YXJ0UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQVNTRVJUKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworICAgIEFTU0VSVChtX2RlY29uc3RydWN0RHJh
d0dseXBocyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CiAKICAgICAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzcwMTY2NTUyPiBSZWNvcmQgT1RTVkcgZ2x5cGhzLgogICAgIEdseXBo
c0FuZEFkdmFuY2VzIGdseXBoc0FuZEFkdmFuY2VzV2l0aG91dE9UU1ZHR2x5cGhzID0gZmlsdGVy
T3V0T1RTVkdHbHlwaHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKQEAgLTQy
Nyw0ICs0MzMsMTkgQEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2wKICAgICBjb25jbHVkZUludGVy
bmFsQ29udGV4dCgpOwogfQogCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRl
eHQoQ1RGb250UmVmIGZvbnQsIENHRmxvYXQgZm9udFNpemUsIENUTGluZVJlZiBsaW5lLCBDR1Jl
Y3QgbGluZVJlY3QpCit7CisgICAgQVNTRVJUKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERl
Y29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2
ZXIgc2F2ZXIobV9vd25lcik7CisKKyAgICBtX293bmVyLnRyYW5zbGF0ZShsaW5lUmVjdC5vcmln
aW4ueCwgbGluZVJlY3Qub3JpZ2luLnkgKyBsaW5lUmVjdC5zaXplLmhlaWdodCk7CisgICAgbV9v
d25lci5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKworICAgIHByZXBhcmVJbnRlcm5hbENvbnRl
eHQoRm9udDo6Y3JlYXRlKEZvbnRQbGF0Zm9ybURhdGEoZm9udCwgZm9udFNpemUpKSwgRm9udFNt
b290aGluZ01vZGU6OlN1YnBpeGVsQW50aWFsaWFzZWQpOworICAgIENHQ29udGV4dFNldFRleHRQ
b3NpdGlvbihtX2ludGVybmFsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIDAsIDApOworICAg
IENUTGluZURyYXcobGluZSwgbV9pbnRlcm5hbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsK
KyAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5
bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggM2NiN2Jk
NGRmYjI1NzRlZjkyNjc0MzYyZTEwNWM1Yzg5NzdmNzAxNC4uYmZiMjMyMjMyNWYzYzI0MTk2OTEy
Y2NmZjRhYWI4MDRjMGQ2ZDFjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmNwcApAQCAtNDAsMTEgKzQwLDExIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3Bh
Y2UgRGlzcGxheUxpc3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoRGlzcGxheUxpc3QmIGRpc3Bs
YXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVj
dCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdh
dGUqIGRlbGVnYXRlLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
biBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitSZWNvcmRlcjo6UmVjb3JkZXIoRGlzcGxheUxp
c3QmIGRpc3BsYXlMaXN0LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0
IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENU
TSwgRGVsZWdhdGUqIGRlbGVnYXRlLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJh
d0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMpCiAgICAgOiBtX2Rpc3BsYXlMaXN0KGRpc3Bs
YXlMaXN0KQogICAgICwgbV9kZWxlZ2F0ZShkZWxlZ2F0ZSkKICAgICAsIG1faXNOZXN0ZWQoZmFs
c2UpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywgZHJhd0dseXBoc0RlY29uc3Ry
dWN0aW9uKQorICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRlY29uc3RydWN0RHJh
d0dseXBocykKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oRGlzcGxheUxpc3RzLCBzdHJlYW0gPDwg
IlxuUmVjb3JkaW5nIHdpdGggY2xpcCAiIDw8IGluaXRpYWxDbGlwKTsKICAgICBtX3N0YXRlU3Rh
Y2suYXBwZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwpAQCAtNTQsNyAr
NTQsNyBAQCBSZWNvcmRlcjo6UmVjb3JkZXIoUmVjb3JkZXImIHBhcmVudCwgY29uc3QgR3JhcGhp
Y3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbAogICAgIDogbV9kaXNwbGF5TGlzdChwYXJl
bnQubV9kaXNwbGF5TGlzdCkKICAgICAsIG1fZGVsZWdhdGUocGFyZW50Lm1fZGVsZWdhdGUpCiAg
ICAgLCBtX2lzTmVzdGVkKHRydWUpCi0gICAgLCBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywg
cGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVyLmRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigpKQor
ICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNv
cmRlci5kZWNvbnN0cnVjdERyYXdHbHlwaHMoKSkKIHsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5k
KHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9E
aXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXggNDcwNDJhMmNjY2VjOTQ4NTE2MWFjYjg2YzQ1NWFl
MTVmZDg0ZTM2OC4uYTVhZDM2NmQ0ZGNkOTlkODQzZTBiYmEwNjk1ZWQ3ZDI0NTM3MmJiZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC01NSw3ICs1NSw3IEBAIGNs
YXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBoaWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdF
QkNPUkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbiA9IERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0
aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgUmVjb3JkZXIoRGlzcGxheUxp
c3QmLCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlh
bENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERlbGVnYXRlKiA9IG51bGxwdHIsIERyYXdH
bHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzID0gRHJhd0dseXBoc1JlY29yZGVy
OjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ2V0UGl4ZWxCdWZmZXIo
Y29uc3QgUGl4ZWxCdWZmZXJGb3JtYXQmIG91dHB1dEZvcm1hdCwgY29uc3QgSW50UmVjdCYgc291
cmNlUmVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAK
aW5kZXggMzliNDg1ZTJjMDY1ZDcyMjFiMjg5YzdkZGYwMzI5NjQ4ZjFkMzY4Zi4uZDA5YzEzNzNl
YTlhYWFmNGExODUxMzZlZTg4NTNkNzg4ZmM0MTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enou
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdH
bHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLURyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBo
aWNzQ29udGV4dCYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0RyYXdHbHlwaHNS
ZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29u
c3RydWN0RHJhd0dseXBocywgRGVyaXZlRm9udEZyb21Db250ZXh0KQogICAgIDogbV9vd25lcihv
d25lcikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKaW5kZXggNDM5ZDQxYzdlNDFl
YjY0MzgyMDAzODIzNGU1MjM4YTg2Njg1MDhmNy4uNWQ2NmViNzJhZDEzYzI0ZGFjMDk1YTk0NWY2
MTRhNmY1NTIyMjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKQEAgLTMyLDcgKzMy
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdH
bHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0Nv
bnRleHQmIG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRGcm9tQ29udGV4
dCkKICAgICA6IG1fb3duZXIob3duZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0KaW5kZXggNmRkN2U4OTRlMjk0OGQ4YjFkM2Q1YzI3NWE0MmRmMmMw
NTdkMDk2Zi4uMzRkYzQwYWI5MGY2OTAyMmRmNDJlNGRlNGFmZDkzNjI3YzMxNDA2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzcsNiArMzcsNyBA
QAogI2ltcG9ydCAiQ29sb3JJT1MuaCIKICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1w
b3J0ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAjaW1wb3J0
ICJGaWxlLmgiCiAjaW1wb3J0ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW1wb3J0ICJGb250Q2Fj
aGUuaCIKQEAgLTE1MzYsNiArMTUzNyw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7
CiAgICAgc3RydWN0IExhYmVsTGluZSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0OwogICAgICAg
ICBSZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lOworICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVm
PiBmb250OwogICAgIH07CiAgICAgVmVjdG9yPExhYmVsTGluZT4gbGluZXM7CiAKQEAgLTE1NDUs
MTAgKzE1NDcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0
IFN0cmluZyYsIENURm9udFJlZiwgVUlDb2xvciAqLCB1bnNpZ25lZCBtYXhpbXVtTGluZUNvdW50
KTsKICAgICB2b2lkIGJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmLCBDVEZvbnRSZWYsIFVJ
Q29sb3IgKik7CiAKLSAgICB2b2lkIGFkZExpbmUoQ1RMaW5lUmVmKTsKKyAgICB2b2lkIGFkZExp
bmUoQ1RGb250UmVmLCBDVExpbmVSZWYpOwogfTsKIAotdm9pZCBSZW5kZXJBdHRhY2htZW50SW5m
bzo6YWRkTGluZShDVExpbmVSZWYgbGluZSkKK3ZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFk
ZExpbmUoQ1RGb250UmVmIGZvbnQsIENUTGluZVJlZiBsaW5lKQogewogICAgIENHUmVjdCBsaW5l
Qm91bmRzID0gQ1RMaW5lR2V0Qm91bmRzV2l0aE9wdGlvbnMobGluZSwga0NUTGluZUJvdW5kc0V4
Y2x1ZGVUeXBvZ3JhcGhpY0xlYWRpbmcpOwogICAgIENHRmxvYXQgdHJhaWxpbmdXaGl0ZXNwYWNl
V2lkdGggPSBDVExpbmVHZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChsaW5lKTsKQEAgLTE1NTcs
NiArMTU1OSw3IEBAIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVm
IGxpbmUpCiAKICAgICBDR0Zsb2F0IHhPZmZzZXQgPSAoYXR0YWNobWVudFJlY3Qud2lkdGgoKSAv
IDIpIC0gKGxpbmVXaWR0aElnbm9yaW5nVHJhaWxpbmdXaGl0ZXNwYWNlIC8gMik7CiAgICAgTGFi
ZWxMaW5lIGxhYmVsTGluZTsKKyAgICBsYWJlbExpbmUuZm9udCA9IGZvbnQ7CiAgICAgbGFiZWxM
aW5lLmxpbmUgPSBsaW5lOwogICAgIGxhYmVsTGluZS5yZWN0ID0gRmxvYXRSZWN0KHhPZmZzZXQs
IDAsIGxpbmVXaWR0aElnbm9yaW5nVHJhaWxpbmdXaGl0ZXNwYWNlLCBsaW5lSGVpZ2h0KTsKIApA
QCAtMTU5MSw3ICsxNTk0LDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFw
cGVkTGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9udCwKICAgICBDRkluZGV4
IGxpbmVJbmRleCA9IDA7CiAgICAgQ0ZJbmRleCBub25UcnVuY2F0ZWRMaW5lQ291bnQgPSBzdGQ6
Om1pbjxDRkluZGV4PihtYXhpbXVtTGluZUNvdW50IC0gMSwgbGluZUNvdW50KTsKICAgICBmb3Ig
KDsgbGluZUluZGV4IDwgbm9uVHJ1bmNhdGVkTGluZUNvdW50OyArK2xpbmVJbmRleCkKLSAgICAg
ICAgYWRkTGluZSgoQ1RMaW5lUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY3RMaW5lcywgbGlu
ZUluZGV4KSk7CisgICAgICAgIGFkZExpbmUoZm9udCwgKENUTGluZVJlZilDRkFycmF5R2V0VmFs
dWVBdEluZGV4KGN0TGluZXMsIGxpbmVJbmRleCkpOwogCiAgICAgaWYgKGxpbmVJbmRleCA9PSBs
aW5lQ291bnQpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MTEsNyArMTYxNCw3IEBAIHZvaWQgUmVu
ZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwg
Q1RGb250UmVmIGZvbnQsCiAgICAgaWYgKCF0cnVuY2F0ZWRMaW5lKQogICAgICAgICB0cnVuY2F0
ZWRMaW5lID0gcmVtYWluaW5nTGluZTsKIAotICAgIGFkZExpbmUodHJ1bmNhdGVkTGluZS5nZXQo
KSk7CisgICAgYWRkTGluZShmb250LCB0cnVuY2F0ZWRMaW5lLmdldCgpKTsKIH0KIAogdm9pZCBS
ZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgdGV4dCwg
Q1RGb250UmVmIGZvbnQsIFVJQ29sb3IgKmNvbG9yKQpAQCAtMTYyNSw3ICsxNjI4LDcgQEAgdm9p
ZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgdGV4
dCwgQ1RGb250UmVmIGZvbnQsIFUKICAgICB9OwogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRT
dHJpbmc+IGF0dHJpYnV0ZWRUZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6dGV4dCBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAKLSAg
ICBhZGRMaW5lKGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoKENGQXR0
cmlidXRlZFN0cmluZ1JlZilhdHRyaWJ1dGVkVGV4dC5nZXQoKSkpLmdldCgpKTsKKyAgICBhZGRM
aW5lKGZvbnQsIGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoKENGQXR0
cmlidXRlZFN0cmluZ1JlZilhdHRyaWJ1dGVkVGV4dC5nZXQoKSkpLmdldCgpKTsKIH0KIAogc3Rh
dGljIEJPT0wgZ2V0QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0
dGFjaG1lbnQsIGZsb2F0JiBwcm9ncmVzcykKQEAgLTE3NjYsMTUgKzE3NjksMTAgQEAgc3RhdGlj
IHZvaWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRl
ckF0dGFjaG1lbnRJbmZvJgogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCiB7Ci0gICAg
Zm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5mby5saW5lcykgewotICAgICAgICBHcmFwaGljc0Nv
bnRleHRTdGF0ZVNhdmVyIHNhdmVyKGNvbnRleHQpOworICAgIERyYXdHbHlwaHNSZWNvcmRlciBy
ZWNvcmRlcihjb250ZXh0LCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBo
czo6WWVzLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlcml2ZUZvbnRGcm9tQ29udGV4dDo6WWVzKTsK
IAotICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShsaW5lLnJlY3QubWluWE1h
eFlDb3JuZXIoKSkpOwotICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwot
Ci0gICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4
dCgpLCAwLCAwKTsKLSAgICAgICAgQ1RMaW5lRHJhdyhsaW5lLmxpbmUuZ2V0KCksIGNvbnRleHQu
cGxhdGZvcm1Db250ZXh0KCkpOwotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmUgOiBp
bmZvLmxpbmVzKQorICAgICAgICByZWNvcmRlci5kcmF3TmF0aXZlVGV4dChsaW5lLmZvbnQuZ2V0
KCksIENURm9udEdldFNpemUobGluZS5mb250LmdldCgpKSwgbGluZS5saW5lLmdldCgpLCBsaW5l
LnJlY3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440655</attachid>
            <date>2021-10-08 12:02:32 -0700</date>
            <delta_ts>2021-10-08 16:56:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20211008120232.patch</filename>
            <type>text/plain</type>
            <size>20850</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzNmNjZDJhYmU2NTRkOTAwN2RiZDFmMmRhNGMzZTUzMmMxZmZkNjM4Li5m
ODExNzcwNGUzYWI2NmNlZGQ5ZWI4MmQ2YjRjMmNkYjc1MWM1ZGU4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRlY29uc3RydWN0RHJhd0dseXBocyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uYC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Ry
YXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIEFkZCBhIG5ldyBwYXJhbWV0ZXIg
dG8gYERyYXdHbHlwaHNSZW5kZXJlcmAgdGhhdCBjb250cm9scyB3aGV0aGVyIGZvbnRzIG90aGVy
IHRoYW4gdGhlIG9uZQorICAgICAgICBpbml0aWFsbHkgcHJvdmlkZWQgdG8gYGRyYXdHbHlwaHNg
L2BkcmF3TmF0aXZlVGV4dGAgY2FuIGJlIHVzZWQgdG8gZHJhdyBnbHlwaHMuIFRoaXMgaXMgb25s
eQorICAgICAgICB1c2VkIGJ5IHRoZSBhYm92ZSBhcyB3ZSBrbm93IHRoYXQgdGhlIGluaXRpYWwg
Zm9udCBpcyBhIHN5c3RlbSBmb250LCBhbmQgdGhlcmVmb3JlIHRoYXQgdGhlCisgICAgICAgIGZh
bGxiYWNrIGxpc3Qgd2lsbCBhbHNvIG9ubHkgY29udGFpbiBzeXN0ZW0gZm9udHMsIG1lYW5pbmcg
dGhhdCBzZW5kaW5nIHRoZSBmb250IHRvIHRoZQorICAgICAgICBHUFVQcm9jZXNzIGlzIGNoZWFw
IChhIGZpbGUgcGF0aCBpbnN0ZWFkIG9mIGFjdHVhbCBkYXRhKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgRHJpdmUtYnk6
IFJlbmFtZSBgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uYCB0byBgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzYCBhcyBpdCByZWFkcyBiZXR0ZXIuCisKIDIwMjEtMTAtMDcgIEFkaXR5YSBLZWVydGhpICA8
YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIEludHJvZHVjZSBTaGFkb3dQc2V1ZG9JZHMg
dG8gc3RvcmUgYWxsIFVBIHNoYWRvdyByb290IHBzZXVkby1lbGVtZW50IGlkcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggNzY1NzRlNzE4MDlhNzdkMWE4MjE2MTEwYmJhMDc4YjE5M2NkODAyYS4uZGZj
NWZiY2M4NzZiYmJmMzQ0MGI2NWE0ZTYyZDViZGQzMTc1NzQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBw
bGUuY29tPgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVu
dD5gCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3
ODEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE15bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NT
UEkuaDoKKwogMjAyMS0xMC0wNSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gVHJhbnNjb2RlIHZpZGVvcyBzZWxlY3RlZCBmcm9tIFVJSW1hZ2VQ
aWNrZXJDb250cm9sbGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9j
Zy9Db3JlR3JhcGhpY3NTUEkuaCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oCmluZGV4IDBkNTk3ZGM0YjMzM2Q3YTUwNTcwZGVlYjk1YzdjMTk4OGY5NTc5
YjIuLjZjNTYyMTA4YzA3OGUwYTIxOTFmM2U0MDU4MTU0MTM3ZDhmMmQ5MmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0yNzAsNiAr
MjcwLDcgQEAgdm9pZCogQ0dDb250ZXh0RGVsZWdhdGVHZXRJbmZvKENHQ29udGV4dERlbGVnYXRl
UmVmKTsKIHZvaWQgQ0dDb250ZXh0RGVsZWdhdGVSZWxlYXNlKENHQ29udGV4dERlbGVnYXRlUmVm
KTsKIENHRmxvYXQgQ0dHU3RhdGVHZXRBbHBoYShDR0dTdGF0ZVJlZik7CiBDR0ZvbnRSZWYgQ0dH
U3RhdGVHZXRGb250KENHR1N0YXRlUmVmKTsKK0NHRmxvYXQgQ0dHU3RhdGVHZXRGb250U2l6ZShD
R0dTdGF0ZVJlZik7CiBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSAqQ0dHU3RhdGVHZXRDVE0oQ0dH
U3RhdGVSZWYpOwogQ0dDb2xvclJlZiBDR0dTdGF0ZUdldEZpbGxDb2xvcihDR0dTdGF0ZVJlZik7
CiBDR0NvbG9yUmVmIENHR1N0YXRlR2V0U3Ryb2tlQ29sb3IoQ0dHU3RhdGVSZWYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIu
aAppbmRleCAyZmZmYjQ3MWQ4MzZhN2FjN2IwZWUyMTRiNTUwNDViMjE2MTVkYTIxLi4xZDBlODc5
MGRhMzVjMDgxYTgwYmVmMWIxZTcxYTNiN2Q5ZjUxMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMzUsNiAr
MzUsMTIgQEAKIAogI2lmIFVTRShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0Nv
cmVHcmFwaGljcy5oPgorI2luY2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CisjaWYgUExBVEZP
Uk0oV0lOKQorI2luY2x1ZGUgPHBhbC9zcGkvd2luL0NvcmVUZXh0U1BJV2luLmg+CisjZWxzZQor
I2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHBh
bC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmg+CiAjZW5kaWYKIApAQCAtNDcsMjIgKzUzLDIyIEBA
IGNsYXNzIEdyYXBoaWNzQ29udGV4dDsKIAogY2xhc3MgRHJhd0dseXBoc1JlY29yZGVyIHsKIHB1
YmxpYzoKLSAgICBlbnVtIGNsYXNzIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiB7Ci0gICAgICAg
IERlY29uc3RydWN0LAotICAgICAgICBEb250RGVjb25zdHJ1Y3QKLSAgICB9OwotICAgIGV4cGxp
Y2l0IERyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmLCBEcmF3R2x5cGhzRGVjb25z
dHJ1Y3Rpb24pOworICAgIGVudW0gY2xhc3MgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIDogYm9vbCB7
IE5vLCBZZXMgfTsKKyAgICBlbnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wg
eyBObywgWWVzIH07CisgICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29u
dGV4dCYsIERlY29uc3RydWN0RHJhd0dseXBocyA9IERlY29uc3RydWN0RHJhd0dseXBoczo6Tm8s
IERlcml2ZUZvbnRGcm9tQ29udGV4dCA9IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6Tm8pOwogCiAg
ICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwg
Y29uc3QgR2x5cGhCdWZmZXJBZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3JQb2ludCwgRm9udFNtb290aGluZ01vZGUpOwogCiAjaWYgVVNFKENPUkVf
VEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKKyAgICB2b2lkIGRyYXdOYXRpdmVUZXh0KENURm9udFJl
ZiwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5lUmVmLCBDR1JlY3QgbGluZVJlY3QpOworCiAgICAg
dm9pZCByZWNvcmRCZWdpbkxheWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBD
R1JlY3QpOwogICAgIHZvaWQgcmVjb3JkRW5kTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dH
U3RhdGVSZWYpOwogICAgIHZvaWQgcmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVm
LCBDR0dTdGF0ZVJlZiwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qLCBjb25zdCBDR0dseXBoW10s
IGNvbnN0IENHUG9pbnQgcG9zaXRpb25zW10sIHNpemVfdCBjb3VudCk7CiAgICAgdm9pZCByZWNv
cmREcmF3SW1hZ2UoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYsIENHUmVjdCwgQ0dJ
bWFnZVJlZik7CiAjZW5kaWYKIAotICAgIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2RyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbjsgfQorICAgIERlY29uc3RydWN0RHJhd0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMo
KSBjb25zdCB7IHJldHVybiBtX2RlY29uc3RydWN0RHJhd0dseXBoczsgfQogCiBwcml2YXRlOgog
I2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShXSU4pCkBAIC04OSw3ICs5NSw4IEBAIHBy
aXZhdGU6CiAjZW5kaWYKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9vd25lcjsKLSAgICBEcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24gbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb247CisgICAgRGVj
b25zdHJ1Y3REcmF3R2x5cGhzIG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzOworICAgIERlcml2ZUZv
bnRGcm9tQ29udGV4dCBtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dDsKIAogI2lmIFVTRShDT1JFX1RF
WFQpICYmICFQTEFURk9STShXSU4pCiAgICAgVW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dD4gbV9p
bnRlcm5hbENvbnRleHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FzY2FkZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FzY2FkZS5jcHAKaW5kZXggNTM1NjE5N2EzNDRhNjk5ZWM4OTA4YjE4MDZjMTc1Njk5Mzgw
YmE2ZC4uN2Q3NzZhZjE5Nzk3ZTc4MDIzYTM1NzQ0MWRjOGZmNTkxMmQ3ZmIyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjEz
LDcgKzIxMyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5
TGlzdD4gRm9udENhc2NhZGU6OmRpc3BsYXlMaXN0Rm9yVGV4CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNw
bGF5TGlzdD4gZGlzcGxheUxpc3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURp
c3BsYXlMaXN0PigpOwotICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciByZWNvcmRpbmdDb250ZXh0
KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZmaW5lVHJhbnNm
b3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0
aW9uOjpEb250RGVjb25zdHJ1Y3QpOworICAgIERpc3BsYXlMaXN0OjpSZWNvcmRlciByZWNvcmRp
bmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwgQWZm
aW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3RE
cmF3R2x5cGhzOjpObyk7CiAgICAgCiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50ID0gdG9GbG9h
dFBvaW50KFdlYkNvcmU6OnNpemUoZ2x5cGhCdWZmZXIuaW5pdGlhbEFkdmFuY2UoKSkpOwogICAg
IGRyYXdHbHlwaEJ1ZmZlcihyZWNvcmRpbmdDb250ZXh0LCBnbHlwaEJ1ZmZlciwgc3RhcnRQb2lu
dCwgY3VzdG9tRm9udE5vdFJlYWR5QWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNS
ZWNvcmRlckNvcmVUZXh0LmNwcAppbmRleCBlMjMyZjE3MTk0OGUxY2Y0MjYyNWExZjIzYzg2N2Ji
OTMyNmY1NjlmLi44NTc2MWEyN2QwOWZjMDQxYmFiMDg2ZTVlYjcwMWJhYmU3ZDQxMThjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5
cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogI2luY2x1ZGUgIkZvbnQuaCIKICNpbmNs
dWRlICJGb250Q2FzY2FkZS5oIgorI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKICNpbmNs
dWRlICJHbHlwaEJ1ZmZlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dENHLmgiCiAKQEAg
LTg0LDkgKzg1LDEwIEBAIFVuaXF1ZVJlZjxHcmFwaGljc0NvbnRleHQ+IERyYXdHbHlwaHNSZWNv
cmRlcjo6Y3JlYXRlSW50ZXJuYWxDb250ZXh0KCkKICAgICByZXR1cm4gbWFrZVVuaXF1ZVJlZjxH
cmFwaGljc0NvbnRleHRDRz4oY29udGV4dC5nZXQoKSk7CiB9CiAKLURyYXdHbHlwaHNSZWNvcmRl
cjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERyYXdHbHlwaHNE
ZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0cnVj
dERyYXdHbHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhzLCBEZXJpdmVGb250RnJvbUNvbnRleHQg
ZGVyaXZlRm9udEZyb21Db250ZXh0KQogICAgIDogbV9vd25lcihvd25lcikKLSAgICAsIG1fZHJh
d0dseXBoc0RlY29uc3RydWN0aW9uKGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKKyAgICAsIG1f
ZGVjb25zdHJ1Y3REcmF3R2x5cGhzKGRlY29uc3RydWN0RHJhd0dseXBocykKKyAgICAsIG1fZGVy
aXZlRm9udEZyb21Db250ZXh0KGRlcml2ZUZvbnRGcm9tQ29udGV4dCkKICAgICAsIG1faW50ZXJu
YWxDb250ZXh0KGNyZWF0ZUludGVybmFsQ29udGV4dCgpKQogewogfQpAQCAtMjg5LDE5ICsyOTEs
MTUgQEAgc3RhdGljIFZlY3RvcjxDR1NpemU+IGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMo
Y29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2kKIAogdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6
OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYgZ3N0YXRl
LCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSosIGNvbnN0IENHR2x5cGggZ2x5cGhzW10sIGNvbnN0
IENHUG9pbnQgcG9zaXRpb25zW10sIHNpemVfdCBjb3VudCkKIHsKKyAgICBBU1NFUlRfSU1QTElF
UyhtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dCA9PSBEZXJpdmVGb250RnJvbUNvbnRleHQ6Ok5vLCBt
X29yaWdpbmFsRm9udCk7CisKICAgICBpZiAoIWNvdW50KQogICAgICAgICByZXR1cm47CiAKICAg
ICBDR0ZvbnRSZWYgdXNlZEZvbnQgPSBDR0dTdGF0ZUdldEZvbnQoZ3N0YXRlKTsKLSAgICBpZiAo
dXNlZEZvbnQgIT0gYWRvcHRDRihDVEZvbnRDb3B5R3JhcGhpY3NGb250KG1fb3JpZ2luYWxGb250
LT5wbGF0Zm9ybURhdGEoKS5jdEZvbnQoKSwgbnVsbHB0cikpLmdldCgpKQorICAgIGlmIChtX2Rl
cml2ZUZvbnRGcm9tQ29udGV4dCA9PSBEZXJpdmVGb250RnJvbUNvbnRleHQ6Ok5vICYmIHVzZWRG
b250ICE9IGFkb3B0Q0YoQ1RGb250Q29weUdyYXBoaWNzRm9udChtX29yaWdpbmFsRm9udC0+cGxh
dGZvcm1EYXRhKCkuY3RGb250KCksIG51bGxwdHIpKS5nZXQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0jaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBhdXRvIHRleHRQb3NpdGlvbiA9IENHQ29udGV4dEdl
dFRleHRQb3NpdGlvbihtX2ludGVybmFsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpOwotICAg
IEFTU0VSVCghdGV4dFBvc2l0aW9uLngpOwotICAgIEFTU0VSVCghdGV4dFBvc2l0aW9uLnkpOwot
I2VuZGlmCi0KICAgICB1cGRhdGVDVE0oKkNHR1N0YXRlR2V0Q1RNKGdzdGF0ZSkpOwogCiAgICAg
Ly8gV2Ugd2FudCB0aGUgcmVwbGF5ZXIncyBDVE0gYW5kIHRleHQgbWF0cml4IHRvIG1hdGNoIHRo
ZSBjdXJyZW50IENUTSBhbmQgdGV4dCBtYXRyaXguCkBAIC0zMzMsNyArMzMxLDkgQEAgdm9pZCBE
cmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwg
Q0dHU3RhdGVSZWYgZ3N0YXQKICAgICB1cGRhdGVTdHJva2VDb2xvcihDb2xvcjo6Y3JlYXRlQW5k
UHJlc2VydmVDb2xvclNwYWNlKHN0cm9rZUNvbG9yKSk7CiAgICAgdXBkYXRlU2hhZG93KENHR1N0
YXRlR2V0U3R5bGUoZ3N0YXRlKSk7CiAKLSAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZv
bnQoKm1fb3JpZ2luYWxGb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Qb3NpdGlvbnMo
cG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291bnQsIGN1cnJl
bnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5nTW9kZSk7Cisg
ICAgYXV0byBmb250U2l6ZSA9IENHR1N0YXRlR2V0Rm9udFNpemUoZ3N0YXRlKTsKKyAgICBSZWYg
Zm9udCA9IG1fZGVyaXZlRm9udEZyb21Db250ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6
Tm8gPyAqbV9vcmlnaW5hbEZvbnQgOiBGb250OjpjcmVhdGUoRm9udFBsYXRmb3JtRGF0YShhZG9w
dENGKENURm9udENyZWF0ZVdpdGhHcmFwaGljc0ZvbnQodXNlZEZvbnQsIGZvbnRTaXplLCBudWxs
cHRyLCBudWxscHRyKSksIGZvbnRTaXplKSk7CisgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2Fj
aGVGb250KGZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlv
bnMsIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgY3VycmVudFRleHRN
YXRyaXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwgbV9zbW9vdGhpbmdNb2RlKTsKIAogICAgIG1f
b3duZXIuY29uY2F0Q1RNKGludmVyc2VDVE1GaXh1cCk7CiB9CkBAIC00MTAsMTIgKzQxMCwxMiBA
QCBzdGF0aWMgR2x5cGhzQW5kQWR2YW5jZXMgZmlsdGVyT3V0T1RTVkdHbHlwaHMoY29uc3QgRm9u
dCYgZm9udCwgY29uc3QgR2x5cGhCdWZmZQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbHlwaHMs
IGNvbnN0IEdseXBoQnVmZmVyQWR2YW5jZSogYWR2YW5jZXMsIHVuc2lnbmVkIG51bUdseXBocywg
Y29uc3QgRmxvYXRQb2ludCYgc3RhcnRQb2ludCwgRm9udFNtb290aGluZ01vZGUgc21vb3RoaW5n
TW9kZSkKIHsKLSAgICBpZiAobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gPT0gRHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpIHsKKyAgICBpZiAobV9kZWNvbnN0cnVj
dERyYXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpObykgewogICAgICAgICBtX293
bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5
cGhzLCBzdGFydFBvaW50LCBzbW9vdGhpbmdNb2RlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIEFTU0VSVChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBEcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAgICBBU1NFUlQobV9kZWNvbnN0cnVjdERyYXdH
bHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOwogCiAgICAgLy8gRklYTUU6IDxy
ZGFyOi8vcHJvYmxlbS83MDE2NjU1Mj4gUmVjb3JkIE9UU1ZHIGdseXBocy4KICAgICBHbHlwaHNB
bmRBZHZhbmNlcyBnbHlwaHNBbmRBZHZhbmNlc1dpdGhvdXRPVFNWR0dseXBocyA9IGZpbHRlck91
dE9UU1ZHR2x5cGhzKGZvbnQsIGdseXBocywgYWR2YW5jZXMsIG51bUdseXBocyk7CkBAIC00Mjcs
NCArNDI3LDE5IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdsCiAgICAgY29uY2x1ZGVJbnRlcm5h
bENvbnRleHQoKTsKIH0KIAordm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdOYXRpdmVUZXh0
KENURm9udFJlZiBmb250LCBDR0Zsb2F0IGZvbnRTaXplLCBDVExpbmVSZWYgbGluZSwgQ0dSZWN0
IGxpbmVSZWN0KQoreworICAgIEFTU0VSVChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBEZWNv
bnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CisKKyAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVy
IHNhdmVyKG1fb3duZXIpOworCisgICAgbV9vd25lci50cmFuc2xhdGUobGluZVJlY3Qub3JpZ2lu
LngsIGxpbmVSZWN0Lm9yaWdpbi55ICsgbGluZVJlY3Quc2l6ZS5oZWlnaHQpOworICAgIG1fb3du
ZXIuc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisKKyAgICBwcmVwYXJlSW50ZXJuYWxDb250ZXh0
KEZvbnQ6OmNyZWF0ZShGb250UGxhdGZvcm1EYXRhKGZvbnQsIGZvbnRTaXplKSksIEZvbnRTbW9v
dGhpbmdNb2RlOjpTdWJwaXhlbEFudGlhbGlhc2VkKTsKKyAgICBDR0NvbnRleHRTZXRUZXh0UG9z
aXRpb24obV9pbnRlcm5hbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLCAwLCAwKTsKKyAgICBD
VExpbmVEcmF3KGxpbmUsIG1faW50ZXJuYWxDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7Cisg
ICAgY29uY2x1ZGVJbnRlcm5hbENvbnRleHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxp
c3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCmluZGV4IDkzYmE2NTAy
YWI2YmE0ZjMzMWNmZWU5NjNjMTllMzMwMmU5NWZiNmEuLjU0NTYxNGQwYTEzOWY2NzI2OTJiNTU4
YWI4ZDExNjc1ZThiMDU4ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRl
ci5jcHAKQEAgLTQwLDExICs0MCwxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNl
IERpc3BsYXlMaXN0IHsKIAotUmVjb3JkZXI6OlJlY29yZGVyKERpc3BsYXlMaXN0JiBkaXNwbGF5
TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3Qm
IGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRl
KiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24g
ZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorUmVjb3JkZXI6OlJlY29yZGVyKERpc3BsYXlMaXN0
JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBG
bG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0s
IERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdH
bHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhzKQogICAgIDogbV9kaXNwbGF5TGlzdChkaXNwbGF5
TGlzdCkKICAgICAsIG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgLCBtX2lzTmVzdGVkKGZhbHNl
KQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVj
dGlvbikKKyAgICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBkZWNvbnN0cnVjdERyYXdH
bHlwaHMpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKERpc3BsYXlMaXN0cywgc3RyZWFtIDw8ICJc
blJlY29yZGluZyB3aXRoIGNsaXAgIiA8PCBpbml0aWFsQ2xpcCk7CiAgICAgbV9zdGF0ZVN0YWNr
LmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKQEAgLTU0LDcgKzU0
LDcgQEAgUmVjb3JkZXI6OlJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNz
Q29udGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmwKICAgICA6IG1fZGlzcGxheUxpc3QocGFyZW50
Lm1fZGlzcGxheUxpc3QpCiAgICAgLCBtX2RlbGVnYXRlKHBhcmVudC5tX2RlbGVnYXRlKQogICAg
ICwgbV9pc05lc3RlZCh0cnVlKQotICAgICwgbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIHBh
cmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24oKSkKKyAg
ICAsIG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBwYXJlbnQubV9kcmF3R2x5cGhzUmVjb3Jk
ZXIuZGVjb25zdHJ1Y3REcmF3R2x5cGhzKCkpCiB7CiAgICAgbV9zdGF0ZVN0YWNrLmFwcGVuZCh7
IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29y
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGFlOTZmNmU3N2Q2NmVkNzBkMTUyNGYzZTFjMDVhMzEx
ZjJjZjE5OTAuLjA3YWJkOWE3MGFlZmYyMGIzMTg0NzExZWVjNWM4NzhlOGIyZTczNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNTUsNyArNTUsNyBAQCBjbGFz
cyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlY29yZGVyKTsKIHB1YmxpYzoKICAgICBjbGFzcyBEZWxlZ2F0ZTsKLSAgICBXRUJD
T1JFX0VYUE9SVCBSZWNvcmRlcihEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0
YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bjo6RGVjb25zdHJ1Y3QpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKERpc3BsYXlMaXN0
JiwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxD
bGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBEZWxlZ2F0ZSogPSBudWxscHRyLCBEcmF3R2x5
cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBocyA9IERyYXdHbHlwaHNSZWNvcmRlcjo6
RGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flJlY29yZGVyKCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdldFBpeGVsQnVmZmVyKGNv
bnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQsIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCmlu
ZGV4IDM5YjQ4NWUyYzA2NWQ3MjIxYjI4OWM3ZGRmMDMyOTY0OGYxZDM2OGYuLmQwOWMxMzczZWE5
YWFhZjRhMTg1MTM2ZWU4ODUzZDc4OGZjNDE3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5
cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGlj
c0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0
cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRGcm9tQ29udGV4dCkKICAgICA6IG1fb3duZXIob3du
ZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vRHJhd0dseXBoc1JlY29yZGVyV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCmluZGV4IDQzOWQ0MWM3ZTQxZWI2
NDM4MjAwMzgyMzRlNTIzOGE4NjY4NTA4ZjcuLjVkNjZlYjcyYWQxM2MyNGRhYzA5NWE5NDVmNjE0
YTZmNTUyMjI0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0zMiw3ICszMiw3
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5
cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0
aW9uKQorRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250
ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3REcmF3R2x5cGhzLCBEZXJpdmVGb250RnJvbUNvbnRleHQp
CiAgICAgOiBtX293bmVyKG93bmVyKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRoZW1lSU9TLm1tCmluZGV4IDI5ZGE2NTBmODQzMGUxYmRmMDI2M2Y1ZDZkNGQ1NDA0M2Nm
MTVjNjEuLmViODgzYjcyMTdjOWRiODE3OGU3ZWMxYWE4NDgyODY5OWIzNDkzMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0KQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbXBvcnQgIkNvbG9ySU9TLmgiCiAjaW1wb3J0ICJEYXRlQ29tcG9uZW50cy5oIgogI2ltcG9y
dCAiRG9jdW1lbnQuaCIKKyNpbXBvcnQgIkRyYXdHbHlwaHNSZWNvcmRlci5oIgogI2ltcG9ydCAi
RmlsZS5oIgogI2ltcG9ydCAiRmxvYXRSb3VuZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udENhY2hl
LmgiCkBAIC0xNTM2LDYgKzE1MzcsNyBAQCBzdHJ1Y3QgUmVuZGVyQXR0YWNobWVudEluZm8gewog
ICAgIHN0cnVjdCBMYWJlbExpbmUgewogICAgICAgICBGbG9hdFJlY3QgcmVjdDsKICAgICAgICAg
UmV0YWluUHRyPENUTGluZVJlZj4gbGluZTsKKyAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4g
Zm9udDsKICAgICB9OwogICAgIFZlY3RvcjxMYWJlbExpbmU+IGxpbmVzOwogCkBAIC0xNTQ1LDEw
ICsxNTQ3LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCBidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBT
dHJpbmcmLCBDVEZvbnRSZWYsIFVJQ29sb3IgKiwgdW5zaWduZWQgbWF4aW11bUxpbmVDb3VudCk7
CiAgICAgdm9pZCBidWlsZFNpbmdsZUxpbmUoY29uc3QgU3RyaW5nJiwgQ1RGb250UmVmLCBVSUNv
bG9yICopOwogCi0gICAgdm9pZCBhZGRMaW5lKENUTGluZVJlZik7CisgICAgdm9pZCBhZGRMaW5l
KENURm9udFJlZiwgQ1RMaW5lUmVmKTsKIH07CiAKLXZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86
OmFkZExpbmUoQ1RMaW5lUmVmIGxpbmUpCit2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjphZGRM
aW5lKENURm9udFJlZiBmb250LCBDVExpbmVSZWYgbGluZSkKIHsKICAgICBDR1JlY3QgbGluZUJv
dW5kcyA9IENUTGluZUdldEJvdW5kc1dpdGhPcHRpb25zKGxpbmUsIGtDVExpbmVCb3VuZHNFeGNs
dWRlVHlwb2dyYXBoaWNMZWFkaW5nKTsKICAgICBDR0Zsb2F0IHRyYWlsaW5nV2hpdGVzcGFjZVdp
ZHRoID0gQ1RMaW5lR2V0VHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGgobGluZSk7CkBAIC0xNTU3LDYg
KzE1NTksNyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjphZGRMaW5lKENUTGluZVJlZiBs
aW5lKQogCiAgICAgQ0dGbG9hdCB4T2Zmc2V0ID0gKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAy
KSAtIChsaW5lV2lkdGhJZ25vcmluZ1RyYWlsaW5nV2hpdGVzcGFjZSAvIDIpOwogICAgIExhYmVs
TGluZSBsYWJlbExpbmU7CisgICAgbGFiZWxMaW5lLmZvbnQgPSBmb250OwogICAgIGxhYmVsTGlu
ZS5saW5lID0gbGluZTsKICAgICBsYWJlbExpbmUucmVjdCA9IEZsb2F0UmVjdCh4T2Zmc2V0LCAw
LCBsaW5lV2lkdGhJZ25vcmluZ1RyYWlsaW5nV2hpdGVzcGFjZSwgbGluZUhlaWdodCk7CiAKQEAg
LTE1OTEsNyArMTU5NCw3IEBAIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBl
ZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RGb250UmVmIGZvbnQsCiAgICAgQ0ZJbmRleCBs
aW5lSW5kZXggPSAwOwogICAgIENGSW5kZXggbm9uVHJ1bmNhdGVkTGluZUNvdW50ID0gc3RkOjpt
aW48Q0ZJbmRleD4obWF4aW11bUxpbmVDb3VudCAtIDEsIGxpbmVDb3VudCk7CiAgICAgZm9yICg7
IGxpbmVJbmRleCA8IG5vblRydW5jYXRlZExpbmVDb3VudDsgKytsaW5lSW5kZXgpCi0gICAgICAg
IGFkZExpbmUoKENUTGluZVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGN0TGluZXMsIGxpbmVJ
bmRleCkpOworICAgICAgICBhZGRMaW5lKGZvbnQsIChDVExpbmVSZWYpQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChjdExpbmVzLCBsaW5lSW5kZXgpKTsKIAogICAgIGlmIChsaW5lSW5kZXggPT0gbGlu
ZUNvdW50KQogICAgICAgICByZXR1cm47CkBAIC0xNjExLDcgKzE2MTQsNyBAQCB2b2lkIFJlbmRl
ckF0dGFjaG1lbnRJbmZvOjpidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENU
Rm9udFJlZiBmb250LAogICAgIGlmICghdHJ1bmNhdGVkTGluZSkKICAgICAgICAgdHJ1bmNhdGVk
TGluZSA9IHJlbWFpbmluZ0xpbmU7CiAKLSAgICBhZGRMaW5lKHRydW5jYXRlZExpbmUuZ2V0KCkp
OworICAgIGFkZExpbmUoZm9udCwgdHJ1bmNhdGVkTGluZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVu
ZGVyQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENU
Rm9udFJlZiBmb250LCBVSUNvbG9yICpjb2xvcikKQEAgLTE2MjUsNyArMTYyOCw3IEBAIHZvaWQg
UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQs
IENURm9udFJlZiBmb250LCBVCiAgICAgfTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3Ry
aW5nPiBhdHRyaWJ1dGVkVGV4dCA9IGFkb3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOnRleHQgYXR0cmlidXRlczp0ZXh0QXR0cmlidXRlc10pOwogCi0gICAg
YWRkTGluZShhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJp
YnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRlZFRleHQuZ2V0KCkpKS5nZXQoKSk7CisgICAgYWRkTGlu
ZShmb250LCBhZG9wdENGKENUTGluZUNyZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJp
YnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRlZFRleHQuZ2V0KCkpKS5nZXQoKSk7CiB9CiAKIHN0YXRp
YyBCT09MIGdldEF0dGFjaG1lbnRQcm9ncmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRh
Y2htZW50LCBmbG9hdCYgcHJvZ3Jlc3MpCkBAIC0xNzY2LDE1ICsxNzY5LDEwIEBAIHN0YXRpYyB2
b2lkIHBhaW50QXR0YWNobWVudEljb24oR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJB
dHRhY2htZW50SW5mbyYKIAogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewotICAgIGZv
ciAoY29uc3QgYXV0byYgbGluZSA6IGluZm8ubGluZXMpIHsKLSAgICAgICAgR3JhcGhpY3NDb250
ZXh0U3RhdGVTYXZlciBzYXZlcihjb250ZXh0KTsKKyAgICBEcmF3R2x5cGhzUmVjb3JkZXIgcmVj
b3JkZXIoY29udGV4dCwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6
OlllcywgRHJhd0dseXBoc1JlY29yZGVyOjpEZXJpdmVGb250RnJvbUNvbnRleHQ6Olllcyk7CiAK
LSAgICAgICAgY29udGV4dC50cmFuc2xhdGUodG9GbG9hdFNpemUobGluZS5yZWN0Lm1pblhNYXhZ
Q29ybmVyKCkpKTsKLSAgICAgICAgY29udGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLQot
ICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQo
KSwgMCwgMCk7Ci0gICAgICAgIENUTGluZURyYXcobGluZS5saW5lLmdldCgpLCBjb250ZXh0LnBs
YXRmb3JtQ29udGV4dCgpKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5m
by5saW5lcykKKyAgICAgICAgcmVjb3JkZXIuZHJhd05hdGl2ZVRleHQobGluZS5mb250LmdldCgp
LCBDVEZvbnRHZXRTaXplKGxpbmUuZm9udC5nZXQoKSksIGxpbmUubGluZS5nZXQoKSwgbGluZS5y
ZWN0KTsKIH0KIAogc3RhdGljIHZvaWQgcGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYgaW5mbykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440688</attachid>
            <date>2021-10-08 16:56:06 -0700</date>
            <delta_ts>2021-10-08 17:17:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20211008165605.patch</filename>
            <type>text/plain</type>
            <size>20450</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZDgxOTNjNmZmZmY2NjE4MTY1ODZiOGYwNDM3YTVhMTAyYTVlMjQxLi4x
ZTNiMjI4NDhiNzhiZDYxOTllODYxYWNmYWI1MDc4NTlmZjdhOGRiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDUgQEAKKzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRlY29uc3RydWN0RHJhd0dseXBocyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uYC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVj
b3JkZXJIYXJmQnV6ei5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6
OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Ry
YXdHbHlwaHNSZWNvcmRlcldpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6CisgICAgICAgIEFkZCBhIG5ldyBwYXJhbWV0ZXIg
dG8gYERyYXdHbHlwaHNSZW5kZXJlcmAgdGhhdCBjb250cm9scyB3aGV0aGVyIGZvbnRzIG90aGVy
IHRoYW4gdGhlIG9uZQorICAgICAgICBpbml0aWFsbHkgcHJvdmlkZWQgdG8gYGRyYXdHbHlwaHNg
L2BkcmF3TmF0aXZlVGV4dGAgY2FuIGJlIHVzZWQgdG8gZHJhdyBnbHlwaHMuIFRoaXMgaXMgb25s
eQorICAgICAgICB1c2VkIGJ5IHRoZSBhYm92ZSBhcyB3ZSBrbm93IHRoYXQgdGhlIGluaXRpYWwg
Zm9udCBpcyBhIHN5c3RlbSBmb250LCBhbmQgdGhlcmVmb3JlIHRoYXQgdGhlCisgICAgICAgIGZh
bGxiYWNrIGxpc3Qgd2lsbCBhbHNvIG9ubHkgY29udGFpbiBzeXN0ZW0gZm9udHMsIG1lYW5pbmcg
dGhhdCBzZW5kaW5nIHRoZSBmb250IHRvIHRoZQorICAgICAgICBHUFVQcm9jZXNzIGlzIGNoZWFw
IChhIGZpbGUgcGF0aCBpbnN0ZWFkIG9mIGFjdHVhbCBkYXRhKS4KKworICAgICAgICAoV2ViQ29y
ZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpSZWNvcmRlcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgRHJpdmUtYnk6
IFJlbmFtZSBgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uYCB0byBgRGVjb25zdHJ1Y3REcmF3R2x5
cGhzYCBhcyBpdCByZWFkcyBiZXR0ZXIuCisKIDIwMjEtMTAtMDggIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgW0J1aWxkLXRpbWUgcGVyZl0gRm9yd2FyZC1kZWNs
YXJlIG1vcmUgdGhpbmdzIGluIEVsZW1lbnQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggNzY1NzRl
NzE4MDlhNzdkMWE4MjE2MTEwYmJhMDc4YjE5M2NkODAyYS4uZGZjNWZiY2M4NzZiYmJmMzQ0MGI2
NWE0ZTYyZDViZGQzMTc1NzQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAg
IFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15bGVzIE1heGZpZWxk
LgorCisgICAgICAgICogcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaDoKKwogMjAyMS0xMC0w
NSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10g
VHJhbnNjb2RlIHZpZGVvcyBzZWxlY3RlZCBmcm9tIFVJSW1hZ2VQaWNrZXJDb250cm9sbGVyCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEku
aCBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCmluZGV4
IDBkNTk3ZGM0YjMzM2Q3YTUwNTcwZGVlYjk1YzdjMTk4OGY5NTc5YjIuLjZjNTYyMTA4YzA3OGUw
YTIxOTFmM2U0MDU4MTU0MTM3ZDhmMmQ5MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oCkBAIC0yNzAsNiArMjcwLDcgQEAgdm9pZCogQ0dD
b250ZXh0RGVsZWdhdGVHZXRJbmZvKENHQ29udGV4dERlbGVnYXRlUmVmKTsKIHZvaWQgQ0dDb250
ZXh0RGVsZWdhdGVSZWxlYXNlKENHQ29udGV4dERlbGVnYXRlUmVmKTsKIENHRmxvYXQgQ0dHU3Rh
dGVHZXRBbHBoYShDR0dTdGF0ZVJlZik7CiBDR0ZvbnRSZWYgQ0dHU3RhdGVHZXRGb250KENHR1N0
YXRlUmVmKTsKK0NHRmxvYXQgQ0dHU3RhdGVHZXRGb250U2l6ZShDR0dTdGF0ZVJlZik7CiBjb25z
dCBDR0FmZmluZVRyYW5zZm9ybSAqQ0dHU3RhdGVHZXRDVE0oQ0dHU3RhdGVSZWYpOwogQ0dDb2xv
clJlZiBDR0dTdGF0ZUdldEZpbGxDb2xvcihDR0dTdGF0ZVJlZik7CiBDR0NvbG9yUmVmIENHR1N0
YXRlR2V0U3Ryb2tlQ29sb3IoQ0dHU3RhdGVSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAppbmRleCAyZmZmYjQ3MWQ4
MzZhN2FjN2IwZWUyMTRiNTUwNDViMjE2MTVkYTIxLi4xZDBlODc5MGRhMzVjMDgxYTgwYmVmMWIx
ZTcxYTNiN2Q5ZjUxMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9EcmF3R2x5cGhzUmVjb3JkZXIuaApAQCAtMzUsNiArMzUsMTIgQEAKIAogI2lmIFVT
RShDT1JFX1RFWFQpCiAjaW5jbHVkZSA8Q29yZUdyYXBoaWNzL0NvcmVHcmFwaGljcy5oPgorI2lu
Y2x1ZGUgPENvcmVUZXh0L0NvcmVUZXh0Lmg+CisjaWYgUExBVEZPUk0oV0lOKQorI2luY2x1ZGUg
PHBhbC9zcGkvd2luL0NvcmVUZXh0U1BJV2luLmg+CisjZWxzZQorI2luY2x1ZGUgPHBhbC9zcGkv
Y2YvQ29yZVRleHRTUEkuaD4KKyNlbmRpZgogI2luY2x1ZGUgPHBhbC9zcGkvY2cvQ29yZUdyYXBo
aWNzU1BJLmg+CiAjZW5kaWYKIApAQCAtNDcsMjIgKzUzLDIyIEBAIGNsYXNzIEdyYXBoaWNzQ29u
dGV4dDsKIAogY2xhc3MgRHJhd0dseXBoc1JlY29yZGVyIHsKIHB1YmxpYzoKLSAgICBlbnVtIGNs
YXNzIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiB7Ci0gICAgICAgIERlY29uc3RydWN0LAotICAg
ICAgICBEb250RGVjb25zdHJ1Y3QKLSAgICB9OwotICAgIGV4cGxpY2l0IERyYXdHbHlwaHNSZWNv
cmRlcihHcmFwaGljc0NvbnRleHQmLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pOworICAgIGVu
dW0gY2xhc3MgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBl
bnVtIGNsYXNzIERlcml2ZUZvbnRGcm9tQ29udGV4dCA6IGJvb2wgeyBObywgWWVzIH07CisgICAg
ZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERlY29uc3RydWN0
RHJhd0dseXBocyA9IERlY29uc3RydWN0RHJhd0dseXBoczo6Tm8sIERlcml2ZUZvbnRGcm9tQ29u
dGV4dCA9IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6Tm8pOwogCiAgICAgdm9pZCBkcmF3R2x5cGhz
KGNvbnN0IEZvbnQmLCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiwgY29uc3QgR2x5cGhCdWZmZXJB
ZHZhbmNlKiwgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3JQb2lu
dCwgRm9udFNtb290aGluZ01vZGUpOwogCiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JN
KFdJTikKKyAgICB2b2lkIGRyYXdOYXRpdmVUZXh0KENURm9udFJlZiwgQ0dGbG9hdCBmb250U2l6
ZSwgQ1RMaW5lUmVmLCBDR1JlY3QgbGluZVJlY3QpOworCiAgICAgdm9pZCByZWNvcmRCZWdpbkxh
eWVyKENHUmVuZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmLCBDR1JlY3QpOwogICAgIHZvaWQg
cmVjb3JkRW5kTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYpOwogICAgIHZv
aWQgcmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgY29u
c3QgQ0dBZmZpbmVUcmFuc2Zvcm0qLCBjb25zdCBDR0dseXBoW10sIGNvbnN0IENHUG9pbnQgcG9z
aXRpb25zW10sIHNpemVfdCBjb3VudCk7CiAgICAgdm9pZCByZWNvcmREcmF3SW1hZ2UoQ0dSZW5k
ZXJpbmdTdGF0ZVJlZiwgQ0dHU3RhdGVSZWYsIENHUmVjdCwgQ0dJbWFnZVJlZik7CiAjZW5kaWYK
IAotICAgIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24o
KSBjb25zdCB7IHJldHVybiBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjsgfQorICAgIERlY29u
c3RydWN0RHJhd0dseXBocyBkZWNvbnN0cnVjdERyYXdHbHlwaHMoKSBjb25zdCB7IHJldHVybiBt
X2RlY29uc3RydWN0RHJhd0dseXBoczsgfQogCiBwcml2YXRlOgogI2lmIFVTRShDT1JFX1RFWFQp
ICYmICFQTEFURk9STShXSU4pCkBAIC04OSw3ICs5NSw4IEBAIHByaXZhdGU6CiAjZW5kaWYKIAog
ICAgIEdyYXBoaWNzQ29udGV4dCYgbV9vd25lcjsKLSAgICBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b24gbV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb247CisgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhz
IG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzOworICAgIERlcml2ZUZvbnRGcm9tQ29udGV4dCBtX2Rl
cml2ZUZvbnRGcm9tQ29udGV4dDsKIAogI2lmIFVTRShDT1JFX1RFWFQpICYmICFQTEFURk9STShX
SU4pCiAgICAgVW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dD4gbV9pbnRlcm5hbENvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5jcHAKaW5k
ZXggNmM2OGU0NDU5OGJmOTg2NmU4MTY0ZDIzNTFiMmNiZDYzZTc1YTBkMS4uNWExYmNlNzM0ZTAx
N2YwMzBhYTFhYjQ4ZGNhNTY4YjAzNjkyNmIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcApAQCAtMjEzLDcgKzIxMyw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gRm9udENhc2NhZGU6
OmRpc3BsYXlMaXN0Rm9yVGV4CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxEaXNwbGF5TGlzdDo6SW5NZW1vcnlEaXNwbGF5TGlzdD4gZGlzcGxheUxp
c3QgPSBtYWtlVW5pcXVlPERpc3BsYXlMaXN0OjpJbk1lbW9yeURpc3BsYXlMaXN0PigpOwotICAg
IERpc3BsYXlMaXN0OjpSZWNvcmRlckltcGwgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3Qs
IGNvbnRleHQuc3RhdGUoKSwgRmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRy
LCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29u
c3RydWN0KTsKKyAgICBEaXNwbGF5TGlzdDo6UmVjb3JkZXJJbXBsIHJlY29yZGluZ0NvbnRleHQo
KmRpc3BsYXlMaXN0LCBjb250ZXh0LnN0YXRlKCksIEZsb2F0UmVjdCgpLCBBZmZpbmVUcmFuc2Zv
cm0oKSwgbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6
Ok5vKTsKICAgICAKICAgICBGbG9hdFBvaW50IHN0YXJ0UG9pbnQgPSB0b0Zsb2F0UG9pbnQoV2Vi
Q29yZTo6c2l6ZShnbHlwaEJ1ZmZlci5pbml0aWFsQWR2YW5jZSgpKSk7CiAgICAgZHJhd0dseXBo
QnVmZmVyKHJlY29yZGluZ0NvbnRleHQsIGdseXBoQnVmZmVyLCBzdGFydFBvaW50LCBjdXN0b21G
b250Tm90UmVhZHlBY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29y
ZVRleHQuY3BwCmluZGV4IGUyMzJmMTcxOTQ4ZTFjZjQyNjI1YTFmMjNjODY3YmI5MzI2ZjU2OWYu
Ljg1NzYxYTI3ZDA5ZmMwNDFiYWIwODZlNWViNzAxYmFiZTdkNDExOGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRl
ckNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJGbG9hdFBvaW50LmgiCiAjaW5jbHVkZSAiRm9udC5oIgogI2luY2x1ZGUgIkZvbnRD
YXNjYWRlLmgiCisjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgogI2luY2x1ZGUgIkdseXBo
QnVmZmVyLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0Q0cuaCIKIApAQCAtODQsOSArODUs
MTAgQEAgVW5pcXVlUmVmPEdyYXBoaWNzQ29udGV4dD4gRHJhd0dseXBoc1JlY29yZGVyOjpjcmVh
dGVJbnRlcm5hbENvbnRleHQoKQogICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPEdyYXBoaWNzQ29u
dGV4dENHPihjb250ZXh0LmdldCgpKTsKIH0KIAotRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5
cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0
aW9uIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0RyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0ds
eXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29uc3RydWN0RHJhd0dseXBo
cyBkZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRGcm9tQ29udGV4dCBkZXJpdmVGb250
RnJvbUNvbnRleHQpCiAgICAgOiBtX293bmVyKG93bmVyKQotICAgICwgbV9kcmF3R2x5cGhzRGVj
b25zdHJ1Y3Rpb24oZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorICAgICwgbV9kZWNvbnN0cnVj
dERyYXdHbHlwaHMoZGVjb25zdHJ1Y3REcmF3R2x5cGhzKQorICAgICwgbV9kZXJpdmVGb250RnJv
bUNvbnRleHQoZGVyaXZlRm9udEZyb21Db250ZXh0KQogICAgICwgbV9pbnRlcm5hbENvbnRleHQo
Y3JlYXRlSW50ZXJuYWxDb250ZXh0KCkpCiB7CiB9CkBAIC0yODksMTkgKzI5MSwxNSBAQCBzdGF0
aWMgVmVjdG9yPENHU2l6ZT4gY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhjb25zdCBDR1Bv
aW50IHBvc2l0aW9uc1tdLCBzaQogCiB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6cmVjb3JkRHJh
d0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiBnc3RhdGUsIGNvbnN0IENH
QWZmaW5lVHJhbnNmb3JtKiwgY29uc3QgQ0dHbHlwaCBnbHlwaHNbXSwgY29uc3QgQ0dQb2ludCBw
b3NpdGlvbnNbXSwgc2l6ZV90IGNvdW50KQogeworICAgIEFTU0VSVF9JTVBMSUVTKG1fZGVyaXZl
Rm9udEZyb21Db250ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6Tm8sIG1fb3JpZ2luYWxG
b250KTsKKwogICAgIGlmICghY291bnQpCiAgICAgICAgIHJldHVybjsKIAogICAgIENHRm9udFJl
ZiB1c2VkRm9udCA9IENHR1N0YXRlR2V0Rm9udChnc3RhdGUpOwotICAgIGlmICh1c2VkRm9udCAh
PSBhZG9wdENGKENURm9udENvcHlHcmFwaGljc0ZvbnQobV9vcmlnaW5hbEZvbnQtPnBsYXRmb3Jt
RGF0YSgpLmN0Rm9udCgpLCBudWxscHRyKSkuZ2V0KCkpCisgICAgaWYgKG1fZGVyaXZlRm9udEZy
b21Db250ZXh0ID09IERlcml2ZUZvbnRGcm9tQ29udGV4dDo6Tm8gJiYgdXNlZEZvbnQgIT0gYWRv
cHRDRihDVEZvbnRDb3B5R3JhcGhpY3NGb250KG1fb3JpZ2luYWxGb250LT5wbGF0Zm9ybURhdGEo
KS5jdEZvbnQoKSwgbnVsbHB0cikpLmdldCgpKQogICAgICAgICByZXR1cm47CiAKLSNpZiBBU1NF
UlRfRU5BQkxFRAotICAgIGF1dG8gdGV4dFBvc2l0aW9uID0gQ0dDb250ZXh0R2V0VGV4dFBvc2l0
aW9uKG1faW50ZXJuYWxDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSk7Ci0gICAgQVNTRVJUKCF0
ZXh0UG9zaXRpb24ueCk7Ci0gICAgQVNTRVJUKCF0ZXh0UG9zaXRpb24ueSk7Ci0jZW5kaWYKLQog
ICAgIHVwZGF0ZUNUTSgqQ0dHU3RhdGVHZXRDVE0oZ3N0YXRlKSk7CiAKICAgICAvLyBXZSB3YW50
IHRoZSByZXBsYXllcidzIENUTSBhbmQgdGV4dCBtYXRyaXggdG8gbWF0Y2ggdGhlIGN1cnJlbnQg
Q1RNIGFuZCB0ZXh0IG1hdHJpeC4KQEAgLTMzMyw3ICszMzEsOSBAQCB2b2lkIERyYXdHbHlwaHNS
ZWNvcmRlcjo6cmVjb3JkRHJhd0dseXBocyhDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJl
ZiBnc3RhdAogICAgIHVwZGF0ZVN0cm9rZUNvbG9yKENvbG9yOjpjcmVhdGVBbmRQcmVzZXJ2ZUNv
bG9yU3BhY2Uoc3Ryb2tlQ29sb3IpKTsKICAgICB1cGRhdGVTaGFkb3coQ0dHU3RhdGVHZXRTdHls
ZShnc3RhdGUpKTsKIAotICAgIG1fb3duZXIuZHJhd0dseXBoc0FuZENhY2hlRm9udCgqbV9vcmln
aW5hbEZvbnQsIGdseXBocywgY29tcHV0ZUFkdmFuY2VzRnJvbVBvc2l0aW9ucyhwb3NpdGlvbnMs
IGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeCkuZGF0YSgpLCBjb3VudCwgY3VycmVudFRleHRNYXRy
aXgubWFwUG9pbnQocG9zaXRpb25zWzBdKSwgbV9zbW9vdGhpbmdNb2RlKTsKKyAgICBhdXRvIGZv
bnRTaXplID0gQ0dHU3RhdGVHZXRGb250U2l6ZShnc3RhdGUpOworICAgIFJlZiBmb250ID0gbV9k
ZXJpdmVGb250RnJvbUNvbnRleHQgPT0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpObyA/ICptX29y
aWdpbmFsRm9udCA6IEZvbnQ6OmNyZWF0ZShGb250UGxhdGZvcm1EYXRhKGFkb3B0Q0YoQ1RGb250
Q3JlYXRlV2l0aEdyYXBoaWNzRm9udCh1c2VkRm9udCwgZm9udFNpemUsIG51bGxwdHIsIG51bGxw
dHIpKSwgZm9udFNpemUpKTsKKyAgICBtX293bmVyLmRyYXdHbHlwaHNBbmRDYWNoZUZvbnQoZm9u
dCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5jZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQs
IGN1cnJlbnRUZXh0TWF0cml4KS5kYXRhKCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQ
b2ludChwb3NpdGlvbnNbMF0pLCBtX3Ntb290aGluZ01vZGUpOwogCiAgICAgbV9vd25lci5jb25j
YXRDVE0oaW52ZXJzZUNUTUZpeHVwKTsKIH0KQEAgLTQxMCwxMiArNDEwLDEyIEBAIHN0YXRpYyBH
bHlwaHNBbmRBZHZhbmNlcyBmaWx0ZXJPdXRPVFNWR0dseXBocyhjb25zdCBGb250JiBmb250LCBj
b25zdCBHbHlwaEJ1ZmZlCiAKIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKGNv
bnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmVyR2x5cGgqIGdseXBocywgY29uc3QgR2x5
cGhCdWZmZXJBZHZhbmNlKiBhZHZhbmNlcywgdW5zaWduZWQgbnVtR2x5cGhzLCBjb25zdCBGbG9h
dFBvaW50JiBzdGFydFBvaW50LCBGb250U21vb3RoaW5nTW9kZSBzbW9vdGhpbmdNb2RlKQogewot
ICAgIGlmIChtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiA9PSBEcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb246OkRvbnREZWNvbnN0cnVjdCkgeworICAgIGlmIChtX2RlY29uc3RydWN0RHJhd0dseXBo
cyA9PSBEZWNvbnN0cnVjdERyYXdHbHlwaHM6Ok5vKSB7CiAgICAgICAgIG1fb3duZXIuZHJhd0ds
eXBoc0FuZENhY2hlRm9udChmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1HbHlwaHMsIHN0YXJ0
UG9pbnQsIHNtb290aGluZ01vZGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgQVNT
RVJUKG1fZHJhd0dseXBoc0RlY29uc3RydWN0aW9uID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlv
bjo6RGVjb25zdHJ1Y3QpOworICAgIEFTU0VSVChtX2RlY29uc3RydWN0RHJhd0dseXBocyA9PSBE
ZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CiAKICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9i
bGVtLzcwMTY2NTUyPiBSZWNvcmQgT1RTVkcgZ2x5cGhzLgogICAgIEdseXBoc0FuZEFkdmFuY2Vz
IGdseXBoc0FuZEFkdmFuY2VzV2l0aG91dE9UU1ZHR2x5cGhzID0gZmlsdGVyT3V0T1RTVkdHbHlw
aHMoZm9udCwgZ2x5cGhzLCBhZHZhbmNlcywgbnVtR2x5cGhzKTsKQEAgLTQyNyw0ICs0MjcsMTkg
QEAgdm9pZCBEcmF3R2x5cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwg
Y29uc3QgR2x5cGhCdWZmZXJHbHlwaCogZ2wKICAgICBjb25jbHVkZUludGVybmFsQ29udGV4dCgp
OwogfQogCit2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQoQ1RGb250UmVm
IGZvbnQsIENHRmxvYXQgZm9udFNpemUsIENUTGluZVJlZiBsaW5lLCBDR1JlY3QgbGluZVJlY3Qp
Cit7CisgICAgQVNTRVJUKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJh
d0dseXBoczo6WWVzKTsKKworICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlU2F2ZXIgc2F2ZXIobV9v
d25lcik7CisKKyAgICBtX293bmVyLnRyYW5zbGF0ZShsaW5lUmVjdC5vcmlnaW4ueCwgbGluZVJl
Y3Qub3JpZ2luLnkgKyBsaW5lUmVjdC5zaXplLmhlaWdodCk7CisgICAgbV9vd25lci5zY2FsZShG
bG9hdFNpemUoMSwgLTEpKTsKKworICAgIHByZXBhcmVJbnRlcm5hbENvbnRleHQoRm9udDo6Y3Jl
YXRlKEZvbnRQbGF0Zm9ybURhdGEoZm9udCwgZm9udFNpemUpKSwgRm9udFNtb290aGluZ01vZGU6
OlN1YnBpeGVsQW50aWFsaWFzZWQpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihtX2lu
dGVybmFsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCksIDAsIDApOworICAgIENUTGluZURyYXco
bGluZSwgbV9pbnRlcm5hbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpKTsKKyAgICBjb25jbHVk
ZUludGVybmFsQ29udGV4dCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxh
eUxpc3RSZWNvcmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKaW5kZXggMmNlYTIxZmFkNTkzZmQyMGY1
ZGI3MWFmM2YyYTdhM2MxMWRmMThhZS4uNWYzNmE5YzNiNzJkYTYxOWMyMThiYTgyZjZmMTgwYmRi
YTE1MjA5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcApAQCAt
NDAsMTQgKzQwLDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgRGlzcGxheUxp
c3QgewogCi1SZWNvcmRlcjo6UmVjb3JkZXIoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0
YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IGluaXRpYWxDVE0sIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9u
IGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKLSAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0
aGlzLCBkcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCitSZWNvcmRlcjo6UmVjb3JkZXIoY29uc3Qg
R3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlw
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0sIERyYXdHbHlwaHNSZWNvcmRlcjo6
RGVjb25zdHJ1Y3REcmF3R2x5cGhzIGRlY29uc3RydWN0RHJhd0dseXBocykKKyAgICA6IG1fZHJh
d0dseXBoc1JlY29yZGVyKCp0aGlzLCBkZWNvbnN0cnVjdERyYXdHbHlwaHMpCiB7CiAgICAgbV9z
dGF0ZVN0YWNrLmFwcGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKIH0K
IAogUmVjb3JkZXI6OlJlY29yZGVyKFJlY29yZGVyJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29u
dGV4dFN0YXRlJiBzdGF0ZSwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKQotICAgIDogbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRo
aXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24o
KSkKKyAgICA6IG1fZHJhd0dseXBoc1JlY29yZGVyKCp0aGlzLCBwYXJlbnQubV9kcmF3R2x5cGhz
UmVjb3JkZXIuZGVjb25zdHJ1Y3REcmF3R2x5cGhzKCkpCiB7CiAgICAgbV9zdGF0ZVN0YWNrLmFw
cGVuZCh7IHN0YXRlLCBpbml0aWFsQ1RNLCBpbml0aWFsQ2xpcCB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlz
dFJlY29yZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCmluZGV4IGFiZjliNmJiM2UyNzk4ZWJiNDhmMTY2N2M3
MWQ0MjIyNjk2ZjY0YzYuLjQ4NjZjODJjYWM5NDMwZDdjMzc0YWMzZmE1YmU4YzA3N2NkOTNhNDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaApAQCAtNTUsNyArNTUsNyBA
QCBjbGFzcyBSZWNvcmRlciA6IHB1YmxpYyBHcmFwaGljc0NvbnRleHQgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlY29yZGVyKTsKIHB1
YmxpYzoKLSAgICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSYsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc0RlY29uc3RydWN0aW9uID0gRHJhd0ds
eXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb246OkRlY29uc3RydWN0KTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYsIGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIERyYXdH
bHlwaHNSZWNvcmRlcjo6RGVjb25zdHJ1Y3REcmF3R2x5cGhzID0gRHJhd0dseXBoc1JlY29yZGVy
OjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6Olllcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVh
bCB+UmVjb3JkZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRQaXhlbEJ1ZmZlcihjb25zdCBQ
aXhlbEJ1ZmZlckZvcm1hdCYgb3V0cHV0Rm9ybWF0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAKaW5k
ZXggMzliNDg1ZTJjMDY1ZDcyMjFiMjg5YzdkZGYwMzI5NjQ4ZjFkMzY4Zi4uZDA5YzEzNzNlYTlh
YWFmNGExODUxMzZlZTg4NTNkNzg4ZmM0MTc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlw
aHNSZWNvcmRlckhhcmZCdXp6LmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLURyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNz
Q29udGV4dCYgb3duZXIsIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK0RyYXdHbHlwaHNSZWNv
cmRlcjo6RHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYgb3duZXIsIERlY29uc3Ry
dWN0RHJhd0dseXBocywgRGVyaXZlRm9udEZyb21Db250ZXh0KQogICAgIDogbV9vd25lcihvd25l
cikKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9EcmF3R2x5cGhzUmVjb3JkZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKaW5kZXggNDM5ZDQxYzdlNDFlYjY0
MzgyMDAzODIzNGU1MjM4YTg2Njg1MDhmNy4uNWQ2NmViNzJhZDEzYzI0ZGFjMDk1YTk0NWY2MTRh
NmY1NTIyMjQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0RyYXdHbHlwaHNSZWNvcmRlcldpbi5jcHAKQEAgLTMyLDcgKzMyLDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlw
aHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRl
eHQmIG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZvbnRGcm9tQ29udGV4dCkK
ICAgICA6IG1fb3duZXIob3duZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KaW5kZXggMjlkYTY1MGY4NDMwZTFiZGYwMjYzZjVkNmQ0ZDU0MDQzY2Yx
NWM2MS4uZWI4ODNiNzIxN2M5ZGI4MTc4ZTdlYzFhYTg0ODI4Njk5YjM0OTMxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbQpAQCAtMzcsNiArMzcsNyBAQAog
I2ltcG9ydCAiQ29sb3JJT1MuaCIKICNpbXBvcnQgIkRhdGVDb21wb25lbnRzLmgiCiAjaW1wb3J0
ICJEb2N1bWVudC5oIgorI2ltcG9ydCAiRHJhd0dseXBoc1JlY29yZGVyLmgiCiAjaW1wb3J0ICJG
aWxlLmgiCiAjaW1wb3J0ICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAjaW1wb3J0ICJGb250Q2FjaGUu
aCIKQEAgLTE1MzYsNiArMTUzNyw3IEBAIHN0cnVjdCBSZW5kZXJBdHRhY2htZW50SW5mbyB7CiAg
ICAgc3RydWN0IExhYmVsTGluZSB7CiAgICAgICAgIEZsb2F0UmVjdCByZWN0OwogICAgICAgICBS
ZXRhaW5QdHI8Q1RMaW5lUmVmPiBsaW5lOworICAgICAgICBSZXRhaW5QdHI8Q1RGb250UmVmPiBm
b250OwogICAgIH07CiAgICAgVmVjdG9yPExhYmVsTGluZT4gbGluZXM7CiAKQEAgLTE1NDUsMTAg
KzE1NDcsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0
cmluZyYsIENURm9udFJlZiwgVUlDb2xvciAqLCB1bnNpZ25lZCBtYXhpbXVtTGluZUNvdW50KTsK
ICAgICB2b2lkIGJ1aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmLCBDVEZvbnRSZWYsIFVJQ29s
b3IgKik7CiAKLSAgICB2b2lkIGFkZExpbmUoQ1RMaW5lUmVmKTsKKyAgICB2b2lkIGFkZExpbmUo
Q1RGb250UmVmLCBDVExpbmVSZWYpOwogfTsKIAotdm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6
YWRkTGluZShDVExpbmVSZWYgbGluZSkKK3ZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFkZExp
bmUoQ1RGb250UmVmIGZvbnQsIENUTGluZVJlZiBsaW5lKQogewogICAgIENHUmVjdCBsaW5lQm91
bmRzID0gQ1RMaW5lR2V0Qm91bmRzV2l0aE9wdGlvbnMobGluZSwga0NUTGluZUJvdW5kc0V4Y2x1
ZGVUeXBvZ3JhcGhpY0xlYWRpbmcpOwogICAgIENHRmxvYXQgdHJhaWxpbmdXaGl0ZXNwYWNlV2lk
dGggPSBDVExpbmVHZXRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aChsaW5lKTsKQEAgLTE1NTcsNiAr
MTU1OSw3IEBAIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVmIGxp
bmUpCiAKICAgICBDR0Zsb2F0IHhPZmZzZXQgPSAoYXR0YWNobWVudFJlY3Qud2lkdGgoKSAvIDIp
IC0gKGxpbmVXaWR0aElnbm9yaW5nVHJhaWxpbmdXaGl0ZXNwYWNlIC8gMik7CiAgICAgTGFiZWxM
aW5lIGxhYmVsTGluZTsKKyAgICBsYWJlbExpbmUuZm9udCA9IGZvbnQ7CiAgICAgbGFiZWxMaW5l
LmxpbmUgPSBsaW5lOwogICAgIGxhYmVsTGluZS5yZWN0ID0gRmxvYXRSZWN0KHhPZmZzZXQsIDAs
IGxpbmVXaWR0aElnbm9yaW5nVHJhaWxpbmdXaGl0ZXNwYWNlLCBsaW5lSGVpZ2h0KTsKIApAQCAt
MTU5MSw3ICsxNTk0LDcgQEAgdm9pZCBSZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRXcmFwcGVk
TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBDVEZvbnRSZWYgZm9udCwKICAgICBDRkluZGV4IGxp
bmVJbmRleCA9IDA7CiAgICAgQ0ZJbmRleCBub25UcnVuY2F0ZWRMaW5lQ291bnQgPSBzdGQ6Om1p
bjxDRkluZGV4PihtYXhpbXVtTGluZUNvdW50IC0gMSwgbGluZUNvdW50KTsKICAgICBmb3IgKDsg
bGluZUluZGV4IDwgbm9uVHJ1bmNhdGVkTGluZUNvdW50OyArK2xpbmVJbmRleCkKLSAgICAgICAg
YWRkTGluZSgoQ1RMaW5lUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY3RMaW5lcywgbGluZUlu
ZGV4KSk7CisgICAgICAgIGFkZExpbmUoZm9udCwgKENUTGluZVJlZilDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGN0TGluZXMsIGxpbmVJbmRleCkpOwogCiAgICAgaWYgKGxpbmVJbmRleCA9PSBsaW5l
Q291bnQpCiAgICAgICAgIHJldHVybjsKQEAgLTE2MTEsNyArMTYxNCw3IEBAIHZvaWQgUmVuZGVy
QXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RG
b250UmVmIGZvbnQsCiAgICAgaWYgKCF0cnVuY2F0ZWRMaW5lKQogICAgICAgICB0cnVuY2F0ZWRM
aW5lID0gcmVtYWluaW5nTGluZTsKIAotICAgIGFkZExpbmUodHJ1bmNhdGVkTGluZS5nZXQoKSk7
CisgICAgYWRkTGluZShmb250LCB0cnVuY2F0ZWRMaW5lLmdldCgpKTsKIH0KIAogdm9pZCBSZW5k
ZXJBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgdGV4dCwgQ1RG
b250UmVmIGZvbnQsIFVJQ29sb3IgKmNvbG9yKQpAQCAtMTYyNSw3ICsxNjI4LDcgQEAgdm9pZCBS
ZW5kZXJBdHRhY2htZW50SW5mbzo6YnVpbGRTaW5nbGVMaW5lKGNvbnN0IFN0cmluZyYgdGV4dCwg
Q1RGb250UmVmIGZvbnQsIFUKICAgICB9OwogICAgIFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJp
bmc+IGF0dHJpYnV0ZWRUZXh0ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdFdpdGhTdHJpbmc6dGV4dCBhdHRyaWJ1dGVzOnRleHRBdHRyaWJ1dGVzXSk7CiAKLSAgICBh
ZGRMaW5lKGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoKENGQXR0cmli
dXRlZFN0cmluZ1JlZilhdHRyaWJ1dGVkVGV4dC5nZXQoKSkpLmdldCgpKTsKKyAgICBhZGRMaW5l
KGZvbnQsIGFkb3B0Q0YoQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcoKENGQXR0cmli
dXRlZFN0cmluZ1JlZilhdHRyaWJ1dGVkVGV4dC5nZXQoKSkpLmdldCgpKTsKIH0KIAogc3RhdGlj
IEJPT0wgZ2V0QXR0YWNobWVudFByb2dyZXNzKGNvbnN0IFJlbmRlckF0dGFjaG1lbnQmIGF0dGFj
aG1lbnQsIGZsb2F0JiBwcm9ncmVzcykKQEAgLTE3NjYsMTUgKzE3NjksMTAgQEAgc3RhdGljIHZv
aWQgcGFpbnRBdHRhY2htZW50SWNvbihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRlckF0
dGFjaG1lbnRJbmZvJgogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRUZXh0KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgUmVuZGVyQXR0YWNobWVudEluZm8mIGluZm8pCiB7Ci0gICAgZm9y
IChjb25zdCBhdXRvJiBsaW5lIDogaW5mby5saW5lcykgewotICAgICAgICBHcmFwaGljc0NvbnRl
eHRTdGF0ZVNhdmVyIHNhdmVyKGNvbnRleHQpOworICAgIERyYXdHbHlwaHNSZWNvcmRlciByZWNv
cmRlcihjb250ZXh0LCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6
WWVzLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlcml2ZUZvbnRGcm9tQ29udGV4dDo6WWVzKTsKIAot
ICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSh0b0Zsb2F0U2l6ZShsaW5lLnJlY3QubWluWE1heFlD
b3JuZXIoKSkpOwotICAgICAgICBjb250ZXh0LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotCi0g
ICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgp
LCAwLCAwKTsKLSAgICAgICAgQ1RMaW5lRHJhdyhsaW5lLmxpbmUuZ2V0KCksIGNvbnRleHQucGxh
dGZvcm1Db250ZXh0KCkpOwotICAgIH0KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGxpbmUgOiBpbmZv
LmxpbmVzKQorICAgICAgICByZWNvcmRlci5kcmF3TmF0aXZlVGV4dChsaW5lLmZvbnQuZ2V0KCks
IENURm9udEdldFNpemUobGluZS5mb250LmdldCgpKSwgbGluZS5saW5lLmdldCgpLCBsaW5lLnJl
Y3QpOwogfQogCiBzdGF0aWMgdm9pZCBwYWludEF0dGFjaG1lbnRQcm9ncmVzcyhHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIFJlbmRlckF0dGFjaG1lbnRJbmZvJiBpbmZvKQo=
</data>
<flag name="commit-queue"
          id="464718"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>440689</attachid>
            <date>2021-10-08 17:06:02 -0700</date>
            <delta_ts>2021-10-08 23:18:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230781-20211008170601.patch</filename>
            <type>text/plain</type>
            <size>23049</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlZDgxOTNjNmZmZmY2NjE4MTY1ODZiOGYwNDM3YTVhMTAyYTVlMjQxLi44
MTM1NzNiMjE0ZjU3NTY3ZmYyNTk0ZjU1NTZiMWY2YTg1NDE4ZGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDggQEAKKzIwMjEtMDktMzAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFtpT1NdW0dQVSBQcm9jZXNzXSBzdXBwb3J0IGA8YXR0YWNobWVudD5gCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA3ODEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwODg0MDk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE15
bGVzIE1heGZpZWxkLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFNpbmdsZUxpbmUpOgor
ICAgICAgICAoV2ViQ29yZTo6cGFpbnRBdHRhY2htZW50VGV4dCk6CisgICAgICAgIEluc3RlYWQg
b2YgZHJhd2luZyBkaXJlY3RseSBpbnRvIHRoZSBgR3JhcGhpY3NDb250ZXh0OjpwbGF0Zm9ybUNv
bnRleHRgICh3aGljaCB3aWxsIG5vdCBiZQorICAgICAgICB2YWxpZCBpbiB0aGUgV2ViUHJvY2Vz
cyB3aGVuIERPTSByZW5kZXJpbmcgaGFwcGVucyBpbiB0aGUgR1BVUHJvY2VzcyksIHVzZSBgRHJh
d0dseXBoc1JlY29yZGVyYAorICAgICAgICB0byAidHJhbnNsYXRlIiBuYXRpdmUgYENUTGluZURy
YXdgIGludG8gYSBzZXF1ZW5jZSBvZiBhY3Rpb25zIGZyb20gd2hpY2ggYSBgR3JhcGhpY3NDb250
ZXh0YAorICAgICAgICBtZXRob2QgY2FuIGJlIGRlcml2ZWQsIHRoZXJlYnkgaG9va2luZyBpbnRv
IGFuZCBiZW5lZml0aW5nIGZyb20gZXhpc3RpbmcgR1BVUHJvY2VzcyBzdXBwb3J0LgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRHJhd0dseXBoc1JlY29yZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OmRlY29uc3RydWN0RHJhd0dseXBocyBjb25zdCk6
IFJlbmFtZWQgZnJvbSBgZHJhd0dseXBoc0RlY29uc3RydWN0aW9uYC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmF3R2x5cGhzUmVjb3JkZXI6OnJlY29yZERyYXdHbHlwaHMp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhd0dseXBoc1JlY29yZGVyOjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6ZHJhd05hdGl2ZVRleHQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZC
dXp6LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c1JlY29yZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1Jl
Y29yZGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRyYXdHbHlwaHNSZWNvcmRlcjo6RHJh
d0dseXBoc1JlY29yZGVyKToKKyAgICAgICAgQWRkIGEgbmV3IHBhcmFtZXRlciB0byBgRHJhd0ds
eXBoc1JlbmRlcmVyYCB0aGF0IGNvbnRyb2xzIHdoZXRoZXIgZm9udHMgb3RoZXIgdGhhbiB0aGUg
b25lCisgICAgICAgIGluaXRpYWxseSBwcm92aWRlZCB0byBgZHJhd0dseXBoc2AvYGRyYXdOYXRp
dmVUZXh0YCBjYW4gYmUgdXNlZCB0byBkcmF3IGdseXBocy4gVGhpcyBpcyBvbmx5CisgICAgICAg
IHVzZWQgYnkgdGhlIGFib3ZlIGFzIHdlIGtub3cgdGhhdCB0aGUgaW5pdGlhbCBmb250IGlzIGEg
c3lzdGVtIGZvbnQsIGFuZCB0aGVyZWZvcmUgdGhhdCB0aGUKKyAgICAgICAgZmFsbGJhY2sgbGlz
dCB3aWxsIGFsc28gb25seSBjb250YWluIHN5c3RlbSBmb250cywgbWVhbmluZyB0aGF0IHNlbmRp
bmcgdGhlIGZvbnQgdG8gdGhlCisgICAgICAgIEdQVVByb2Nlc3MgaXMgY2hlYXAgKGEgZmlsZSBw
YXRoIGluc3RlYWQgb2YgYWN0dWFsIGRhdGEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5TGlzdDo6UmVjb3JkZXI6OlJlY29yZGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlckltcGwuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNv
cmRlckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlzcGxheUxpc3Q6OlJlY29yZGVyOjpS
ZWNvcmRlckltcGwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYXNjYWRlOjpkaXNwbGF5TGlzdEZvclRleHRSdW4g
Y29uc3QpOgorICAgICAgICBEcml2ZS1ieTogUmVuYW1lIGBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rp
b25gIHRvIGBEZWNvbnN0cnVjdERyYXdHbHlwaHNgIGFzIGl0IHJlYWRzIGJldHRlci4KKwogMjAy
MS0xMC0wOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQnVp
bGQtdGltZSBwZXJmXSBGb3J3YXJkLWRlY2xhcmUgbW9yZSB0aGluZ3MgaW4gRWxlbWVudC5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwppbmRleCA3NjU3NGU3MTgwOWE3N2QxYTgyMTYxMTBiYmEwNzhiMTkzY2Q4
MDJhLi5kZmM1ZmJjYzg3NmJiYmYzNDQwYjY1YTRlNjJkNWJkZDMxNzU3NDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOS0zMCAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU11bR1BVIFByb2Nlc3NdIHN1cHBvcnQgYDxh
dHRhY2htZW50PmAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzMDc4MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA4ODQwOTY+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTXlsZXMgTWF4ZmllbGQuCisKKyAgICAgICAgKiBwYWwvc3BpL2NnL0NvcmVH
cmFwaGljc1NQSS5oOgorCiAyMDIxLTEwLTA1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBUcmFuc2NvZGUgdmlkZW9zIHNlbGVjdGVkIGZyb20g
VUlJbWFnZVBpY2tlckNvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NnL0NvcmVHcmFwaGljc1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkv
Y2cvQ29yZUdyYXBoaWNzU1BJLmgKaW5kZXggMGQ1OTdkYzRiMzMzZDdhNTA1NzBkZWViOTVjN2Mx
OTg4Zjk1NzliMi4uNmM1NjIxMDhjMDc4ZTBhMjE5MWYzZTQwNTgxNTQxMzdkOGYyZDkyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2cvQ29yZUdyYXBoaWNzU1BJLmgKQEAg
LTI3MCw2ICsyNzAsNyBAQCB2b2lkKiBDR0NvbnRleHREZWxlZ2F0ZUdldEluZm8oQ0dDb250ZXh0
RGVsZWdhdGVSZWYpOwogdm9pZCBDR0NvbnRleHREZWxlZ2F0ZVJlbGVhc2UoQ0dDb250ZXh0RGVs
ZWdhdGVSZWYpOwogQ0dGbG9hdCBDR0dTdGF0ZUdldEFscGhhKENHR1N0YXRlUmVmKTsKIENHRm9u
dFJlZiBDR0dTdGF0ZUdldEZvbnQoQ0dHU3RhdGVSZWYpOworQ0dGbG9hdCBDR0dTdGF0ZUdldEZv
bnRTaXplKENHR1N0YXRlUmVmKTsKIGNvbnN0IENHQWZmaW5lVHJhbnNmb3JtICpDR0dTdGF0ZUdl
dENUTShDR0dTdGF0ZVJlZik7CiBDR0NvbG9yUmVmIENHR1N0YXRlR2V0RmlsbENvbG9yKENHR1N0
YXRlUmVmKTsKIENHQ29sb3JSZWYgQ0dHU3RhdGVHZXRTdHJva2VDb2xvcihDR0dTdGF0ZVJlZik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EcmF3R2x5cGhz
UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNS
ZWNvcmRlci5oCmluZGV4IDJmZmZiNDcxZDgzNmE3YWM3YjBlZTIxNGI1NTA0NWIyMTYxNWRhMjEu
LjFkMGU4NzkwZGEzNWMwODFhODBiZWYxYjFlNzFhM2I3ZDlmNTEzN2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNvcmRlci5oCkBA
IC0zNSw2ICszNSwxMiBAQAogCiAjaWYgVVNFKENPUkVfVEVYVCkKICNpbmNsdWRlIDxDb3JlR3Jh
cGhpY3MvQ29yZUdyYXBoaWNzLmg+CisjaW5jbHVkZSA8Q29yZVRleHQvQ29yZVRleHQuaD4KKyNp
ZiBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8cGFsL3NwaS93aW4vQ29yZVRleHRTUElXaW4uaD4K
KyNlbHNlCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgorI2VuZGlmCiAjaW5j
bHVkZSA8cGFsL3NwaS9jZy9Db3JlR3JhcGhpY3NTUEkuaD4KICNlbmRpZgogCkBAIC00NywyMiAr
NTMsMjIgQEAgY2xhc3MgR3JhcGhpY3NDb250ZXh0OwogCiBjbGFzcyBEcmF3R2x5cGhzUmVjb3Jk
ZXIgewogcHVibGljOgotICAgIGVudW0gY2xhc3MgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uIHsK
LSAgICAgICAgRGVjb25zdHJ1Y3QsCi0gICAgICAgIERvbnREZWNvbnN0cnVjdAotICAgIH07Ci0g
ICAgZXhwbGljaXQgRHJhd0dseXBoc1JlY29yZGVyKEdyYXBoaWNzQ29udGV4dCYsIERyYXdHbHlw
aHNEZWNvbnN0cnVjdGlvbik7CisgICAgZW51bSBjbGFzcyBEZWNvbnN0cnVjdERyYXdHbHlwaHMg
OiBib29sIHsgTm8sIFllcyB9OworICAgIGVudW0gY2xhc3MgRGVyaXZlRm9udEZyb21Db250ZXh0
IDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBleHBsaWNpdCBEcmF3R2x5cGhzUmVjb3JkZXIoR3Jh
cGhpY3NDb250ZXh0JiwgRGVjb25zdHJ1Y3REcmF3R2x5cGhzID0gRGVjb25zdHJ1Y3REcmF3R2x5
cGhzOjpObywgRGVyaXZlRm9udEZyb21Db250ZXh0ID0gRGVyaXZlRm9udEZyb21Db250ZXh0OjpO
byk7CiAKICAgICB2b2lkIGRyYXdHbHlwaHMoY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVy
R2x5cGgqLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqLCB1bnNpZ25lZCBudW1HbHlwaHMsIGNv
bnN0IEZsb2F0UG9pbnQmIGFuY2hvclBvaW50LCBGb250U21vb3RoaW5nTW9kZSk7CiAKICNpZiBV
U0UoQ09SRV9URVhUKSAmJiAhUExBVEZPUk0oV0lOKQorICAgIHZvaWQgZHJhd05hdGl2ZVRleHQo
Q1RGb250UmVmLCBDR0Zsb2F0IGZvbnRTaXplLCBDVExpbmVSZWYsIENHUmVjdCBsaW5lUmVjdCk7
CisKICAgICB2b2lkIHJlY29yZEJlZ2luTGF5ZXIoQ0dSZW5kZXJpbmdTdGF0ZVJlZiwgQ0dHU3Rh
dGVSZWYsIENHUmVjdCk7CiAgICAgdm9pZCByZWNvcmRFbmRMYXllcihDR1JlbmRlcmluZ1N0YXRl
UmVmLCBDR0dTdGF0ZVJlZik7CiAgICAgdm9pZCByZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5n
U3RhdGVSZWYsIENHR1N0YXRlUmVmLCBjb25zdCBDR0FmZmluZVRyYW5zZm9ybSosIGNvbnN0IENH
R2x5cGhbXSwgY29uc3QgQ0dQb2ludCBwb3NpdGlvbnNbXSwgc2l6ZV90IGNvdW50KTsKICAgICB2
b2lkIHJlY29yZERyYXdJbWFnZShDR1JlbmRlcmluZ1N0YXRlUmVmLCBDR0dTdGF0ZVJlZiwgQ0dS
ZWN0LCBDR0ltYWdlUmVmKTsKICNlbmRpZgogCi0gICAgRHJhd0dseXBoc0RlY29uc3RydWN0aW9u
IGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd0dseXBoc0Rl
Y29uc3RydWN0aW9uOyB9CisgICAgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGRlY29uc3RydWN0RHJh
d0dseXBocygpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzOyB9CiAKIHBy
aXZhdGU6CiAjaWYgVVNFKENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKQEAgLTg5LDcgKzk1
LDggQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX293bmVyOwot
ICAgIERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjsK
KyAgICBEZWNvbnN0cnVjdERyYXdHbHlwaHMgbV9kZWNvbnN0cnVjdERyYXdHbHlwaHM7CisgICAg
RGVyaXZlRm9udEZyb21Db250ZXh0IG1fZGVyaXZlRm9udEZyb21Db250ZXh0OwogCiAjaWYgVVNF
KENPUkVfVEVYVCkgJiYgIVBMQVRGT1JNKFdJTikKICAgICBVbmlxdWVSZWY8R3JhcGhpY3NDb250
ZXh0PiBtX2ludGVybmFsQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYXNjYWRlLmNwcAppbmRleCA2YzY4ZTQ0NTk4YmY5ODY2ZTgxNjRkMjM1MWIy
Y2JkNjNlNzVhMGQxLi41YTFiY2U3MzRlMDE3ZjAzMGFhMWFiNDhkY2E1NjhiMDM2OTI2YjA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3Bw
CkBAIC0yMTMsNyArMjEzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1lbW9y
eURpc3BsYXlMaXN0PiBGb250Q2FzY2FkZTo6ZGlzcGxheUxpc3RGb3JUZXgKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgCiAgICAgc3RkOjp1bmlxdWVfcHRyPERpc3BsYXlMaXN0OjpJbk1l
bW9yeURpc3BsYXlMaXN0PiBkaXNwbGF5TGlzdCA9IG1ha2VVbmlxdWU8RGlzcGxheUxpc3Q6Oklu
TWVtb3J5RGlzcGxheUxpc3Q+KCk7Ci0gICAgRGlzcGxheUxpc3Q6OlJlY29yZGVySW1wbCByZWNv
cmRpbmdDb250ZXh0KCpkaXNwbGF5TGlzdCwgY29udGV4dC5zdGF0ZSgpLCBGbG9hdFJlY3QoKSwg
QWZmaW5lVHJhbnNmb3JtKCksIG51bGxwdHIsIERyYXdHbHlwaHNSZWNvcmRlcjo6RHJhd0dseXBo
c0RlY29uc3RydWN0aW9uOjpEb250RGVjb25zdHJ1Y3QpOworICAgIERpc3BsYXlMaXN0OjpSZWNv
cmRlckltcGwgcmVjb3JkaW5nQ29udGV4dCgqZGlzcGxheUxpc3QsIGNvbnRleHQuc3RhdGUoKSwg
RmxvYXRSZWN0KCksIEFmZmluZVRyYW5zZm9ybSgpLCBudWxscHRyLCBEcmF3R2x5cGhzUmVjb3Jk
ZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6Tm8pOwogICAgIAogICAgIEZsb2F0UG9pbnQgc3Rh
cnRQb2ludCA9IHRvRmxvYXRQb2ludChXZWJDb3JlOjpzaXplKGdseXBoQnVmZmVyLmluaXRpYWxB
ZHZhbmNlKCkpKTsKICAgICBkcmF3R2x5cGhCdWZmZXIocmVjb3JkaW5nQ29udGV4dCwgZ2x5cGhC
dWZmZXIsIHN0YXJ0UG9pbnQsIGN1c3RvbUZvbnROb3RSZWFkeUFjdGlvbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9EcmF3R2x5cGhzUmVj
b3JkZXJDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9EcmF3R2x5cGhzUmVjb3JkZXJDb3JlVGV4dC5jcHAKaW5kZXggZTIzMmYxNzE5NDhlMWNm
NDI2MjVhMWYyM2M4NjdiYjkzMjZmNTY5Zi4uODU3NjFhMjdkMDlmYzA0MWJhYjA4NmU1ZWI3MDFi
YWJlN2Q0MTE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29yZXRleHQvRHJhd0dseXBoc1JlY29yZGVyQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0RyYXdHbHlwaHNSZWNvcmRlckNvcmVUZXh0
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRl
ICJGb250LmgiCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJGb250UGxhdGZv
cm1EYXRhLmgiCiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKICNpbmNsdWRlICJHcmFwaGljc0Nv
bnRleHRDRy5oIgogCkBAIC04NCw5ICs4NSwxMCBAQCBVbmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0
PiBEcmF3R2x5cGhzUmVjb3JkZXI6OmNyZWF0ZUludGVybmFsQ29udGV4dCgpCiAgICAgcmV0dXJu
IG1ha2VVbmlxdWVSZWY8R3JhcGhpY3NDb250ZXh0Q0c+KGNvbnRleHQuZ2V0KCkpOwogfQogCi1E
cmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93
bmVyLCBEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQor
RHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBv
d25lciwgRGVjb25zdHJ1Y3REcmF3R2x5cGhzIGRlY29uc3RydWN0RHJhd0dseXBocywgRGVyaXZl
Rm9udEZyb21Db250ZXh0IGRlcml2ZUZvbnRGcm9tQ29udGV4dCkKICAgICA6IG1fb3duZXIob3du
ZXIpCi0gICAgLCBtX2RyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbihkcmF3R2x5cGhzRGVjb25zdHJ1
Y3Rpb24pCisgICAgLCBtX2RlY29uc3RydWN0RHJhd0dseXBocyhkZWNvbnN0cnVjdERyYXdHbHlw
aHMpCisgICAgLCBtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dChkZXJpdmVGb250RnJvbUNvbnRleHQp
CiAgICAgLCBtX2ludGVybmFsQ29udGV4dChjcmVhdGVJbnRlcm5hbENvbnRleHQoKSkKIHsKIH0K
QEAgLTI4OSwxOSArMjkxLDE1IEBAIHN0YXRpYyBWZWN0b3I8Q0dTaXplPiBjb21wdXRlQWR2YW5j
ZXNGcm9tUG9zaXRpb25zKGNvbnN0IENHUG9pbnQgcG9zaXRpb25zW10sIHNpCiAKIHZvaWQgRHJh
d0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVuZGVyaW5nU3RhdGVSZWYsIENH
R1N0YXRlUmVmIGdzdGF0ZSwgY29uc3QgQ0dBZmZpbmVUcmFuc2Zvcm0qLCBjb25zdCBDR0dseXBo
IGdseXBoc1tdLCBjb25zdCBDR1BvaW50IHBvc2l0aW9uc1tdLCBzaXplX3QgY291bnQpCiB7Cisg
ICAgQVNTRVJUX0lNUExJRVMobV9kZXJpdmVGb250RnJvbUNvbnRleHQgPT0gRGVyaXZlRm9udEZy
b21Db250ZXh0OjpObywgbV9vcmlnaW5hbEZvbnQpOworCiAgICAgaWYgKCFjb3VudCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQ0dGb250UmVmIHVzZWRGb250ID0gQ0dHU3RhdGVHZXRGb250KGdz
dGF0ZSk7Ci0gICAgaWYgKHVzZWRGb250ICE9IGFkb3B0Q0YoQ1RGb250Q29weUdyYXBoaWNzRm9u
dChtX29yaWdpbmFsRm9udC0+cGxhdGZvcm1EYXRhKCkuY3RGb250KCksIG51bGxwdHIpKS5nZXQo
KSkKKyAgICBpZiAobV9kZXJpdmVGb250RnJvbUNvbnRleHQgPT0gRGVyaXZlRm9udEZyb21Db250
ZXh0OjpObyAmJiB1c2VkRm9udCAhPSBhZG9wdENGKENURm9udENvcHlHcmFwaGljc0ZvbnQobV9v
cmlnaW5hbEZvbnQtPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBudWxscHRyKSkuZ2V0KCkpCiAg
ICAgICAgIHJldHVybjsKIAotI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYXV0byB0ZXh0UG9zaXRp
b24gPSBDR0NvbnRleHRHZXRUZXh0UG9zaXRpb24obV9pbnRlcm5hbENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpKTsKLSAgICBBU1NFUlQoIXRleHRQb3NpdGlvbi54KTsKLSAgICBBU1NFUlQoIXRl
eHRQb3NpdGlvbi55KTsKLSNlbmRpZgotCiAgICAgdXBkYXRlQ1RNKCpDR0dTdGF0ZUdldENUTShn
c3RhdGUpKTsKIAogICAgIC8vIFdlIHdhbnQgdGhlIHJlcGxheWVyJ3MgQ1RNIGFuZCB0ZXh0IG1h
dHJpeCB0byBtYXRjaCB0aGUgY3VycmVudCBDVE0gYW5kIHRleHQgbWF0cml4LgpAQCAtMzMzLDcg
KzMzMSw5IEBAIHZvaWQgRHJhd0dseXBoc1JlY29yZGVyOjpyZWNvcmREcmF3R2x5cGhzKENHUmVu
ZGVyaW5nU3RhdGVSZWYsIENHR1N0YXRlUmVmIGdzdGF0CiAgICAgdXBkYXRlU3Ryb2tlQ29sb3Io
Q29sb3I6OmNyZWF0ZUFuZFByZXNlcnZlQ29sb3JTcGFjZShzdHJva2VDb2xvcikpOwogICAgIHVw
ZGF0ZVNoYWRvdyhDR0dTdGF0ZUdldFN0eWxlKGdzdGF0ZSkpOwogCi0gICAgbV9vd25lci5kcmF3
R2x5cGhzQW5kQ2FjaGVGb250KCptX29yaWdpbmFsRm9udCwgZ2x5cGhzLCBjb21wdXRlQWR2YW5j
ZXNGcm9tUG9zaXRpb25zKHBvc2l0aW9ucywgY291bnQsIGN1cnJlbnRUZXh0TWF0cml4KS5kYXRh
KCksIGNvdW50LCBjdXJyZW50VGV4dE1hdHJpeC5tYXBQb2ludChwb3NpdGlvbnNbMF0pLCBtX3Nt
b290aGluZ01vZGUpOworICAgIGF1dG8gZm9udFNpemUgPSBDR0dTdGF0ZUdldEZvbnRTaXplKGdz
dGF0ZSk7CisgICAgUmVmIGZvbnQgPSBtX2Rlcml2ZUZvbnRGcm9tQ29udGV4dCA9PSBEZXJpdmVG
b250RnJvbUNvbnRleHQ6Ok5vID8gKm1fb3JpZ2luYWxGb250IDogRm9udDo6Y3JlYXRlKEZvbnRQ
bGF0Zm9ybURhdGEoYWRvcHRDRihDVEZvbnRDcmVhdGVXaXRoR3JhcGhpY3NGb250KHVzZWRGb250
LCBmb250U2l6ZSwgbnVsbHB0ciwgbnVsbHB0cikpLCBmb250U2l6ZSkpOworICAgIG1fb3duZXIu
ZHJhd0dseXBoc0FuZENhY2hlRm9udChmb250LCBnbHlwaHMsIGNvbXB1dGVBZHZhbmNlc0Zyb21Q
b3NpdGlvbnMocG9zaXRpb25zLCBjb3VudCwgY3VycmVudFRleHRNYXRyaXgpLmRhdGEoKSwgY291
bnQsIGN1cnJlbnRUZXh0TWF0cml4Lm1hcFBvaW50KHBvc2l0aW9uc1swXSksIG1fc21vb3RoaW5n
TW9kZSk7CiAKICAgICBtX293bmVyLmNvbmNhdENUTShpbnZlcnNlQ1RNRml4dXApOwogfQpAQCAt
NDEwLDEyICs0MTAsMTIgQEAgc3RhdGljIEdseXBoc0FuZEFkdmFuY2VzIGZpbHRlck91dE9UU1ZH
R2x5cGhzKGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEdseXBoQnVmZmUKIAogdm9pZCBEcmF3R2x5
cGhzUmVjb3JkZXI6OmRyYXdHbHlwaHMoY29uc3QgRm9udCYgZm9udCwgY29uc3QgR2x5cGhCdWZm
ZXJHbHlwaCogZ2x5cGhzLCBjb25zdCBHbHlwaEJ1ZmZlckFkdmFuY2UqIGFkdmFuY2VzLCB1bnNp
Z25lZCBudW1HbHlwaHMsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0UG9pbnQsIEZvbnRTbW9vdGhp
bmdNb2RlIHNtb290aGluZ01vZGUpCiB7Ci0gICAgaWYgKG1fZHJhd0dseXBoc0RlY29uc3RydWN0
aW9uID09IERyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6RG9udERlY29uc3RydWN0KSB7CisgICAg
aWYgKG1fZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6Tm8p
IHsKICAgICAgICAgbV9vd25lci5kcmF3R2x5cGhzQW5kQ2FjaGVGb250KGZvbnQsIGdseXBocywg
YWR2YW5jZXMsIG51bUdseXBocywgc3RhcnRQb2ludCwgc21vb3RoaW5nTW9kZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBBU1NFUlQobV9kcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24g
PT0gRHJhd0dseXBoc0RlY29uc3RydWN0aW9uOjpEZWNvbnN0cnVjdCk7CisgICAgQVNTRVJUKG1f
ZGVjb25zdHJ1Y3REcmF3R2x5cGhzID09IERlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKIAog
ICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNzAxNjY1NTI+IFJlY29yZCBPVFNWRyBnbHlw
aHMuCiAgICAgR2x5cGhzQW5kQWR2YW5jZXMgZ2x5cGhzQW5kQWR2YW5jZXNXaXRob3V0T1RTVkdH
bHlwaHMgPSBmaWx0ZXJPdXRPVFNWR0dseXBocyhmb250LCBnbHlwaHMsIGFkdmFuY2VzLCBudW1H
bHlwaHMpOwpAQCAtNDI3LDQgKzQyNywxOSBAQCB2b2lkIERyYXdHbHlwaHNSZWNvcmRlcjo6ZHJh
d0dseXBocyhjb25zdCBGb250JiBmb250LCBjb25zdCBHbHlwaEJ1ZmZlckdseXBoKiBnbAogICAg
IGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7CiB9CiAKK3ZvaWQgRHJhd0dseXBoc1JlY29yZGVy
OjpkcmF3TmF0aXZlVGV4dChDVEZvbnRSZWYgZm9udCwgQ0dGbG9hdCBmb250U2l6ZSwgQ1RMaW5l
UmVmIGxpbmUsIENHUmVjdCBsaW5lUmVjdCkKK3sKKyAgICBBU1NFUlQobV9kZWNvbnN0cnVjdERy
YXdHbHlwaHMgPT0gRGVjb25zdHJ1Y3REcmF3R2x5cGhzOjpZZXMpOworCisgICAgR3JhcGhpY3ND
b250ZXh0U3RhdGVTYXZlciBzYXZlcihtX293bmVyKTsKKworICAgIG1fb3duZXIudHJhbnNsYXRl
KGxpbmVSZWN0Lm9yaWdpbi54LCBsaW5lUmVjdC5vcmlnaW4ueSArIGxpbmVSZWN0LnNpemUuaGVp
Z2h0KTsKKyAgICBtX293bmVyLnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOworCisgICAgcHJlcGFy
ZUludGVybmFsQ29udGV4dChGb250OjpjcmVhdGUoRm9udFBsYXRmb3JtRGF0YShmb250LCBmb250
U2l6ZSkpLCBGb250U21vb3RoaW5nTW9kZTo6U3VicGl4ZWxBbnRpYWxpYXNlZCk7CisgICAgQ0dD
b250ZXh0U2V0VGV4dFBvc2l0aW9uKG1faW50ZXJuYWxDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KSwgMCwgMCk7CisgICAgQ1RMaW5lRHJhdyhsaW5lLCBtX2ludGVybmFsQ29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCkpOworICAgIGNvbmNsdWRlSW50ZXJuYWxDb250ZXh0KCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNw
cAppbmRleCAyY2VhMjFmYWQ1OTNmZDIwZjVkYjcxYWYzZjJhN2EzYzExZGYxOGFlLi41ZjM2YTlj
M2I3MmRhNjE5YzIxOGJhODJmNmYxODBiZGJhMTUyMDliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rp
c3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC00MCwxNCArNDAsMTQgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIG5hbWVzcGFjZSBEaXNwbGF5TGlzdCB7CiAKLVJlY29yZGVyOjpSZWNvcmRlcihjb25z
dCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5pdGlhbENs
aXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRHJhd0dseXBoc1JlY29yZGVy
OjpEcmF3R2x5cGhzRGVjb25zdHJ1Y3Rpb24gZHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQotICAg
IDogbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikK
K1JlY29yZGVyOjpSZWNvcmRlcihjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNv
bnN0IEZsb2F0UmVjdCYgaW5pdGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlh
bENUTSwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgZGVjb25zdHJ1
Y3REcmF3R2x5cGhzKQorICAgIDogbV9kcmF3R2x5cGhzUmVjb3JkZXIoKnRoaXMsIGRlY29uc3Ry
dWN0RHJhd0dseXBocykKIHsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUsIGluaXRp
YWxDVE0sIGluaXRpYWxDbGlwIH0pOwogfQogCiBSZWNvcmRlcjo6UmVjb3JkZXIoUmVjb3JkZXIm
IHBhcmVudCwgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJl
Y3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGluaXRpYWxDVE0pCi0gICAg
OiBtX2RyYXdHbHlwaHNSZWNvcmRlcigqdGhpcywgcGFyZW50Lm1fZHJhd0dseXBoc1JlY29yZGVy
LmRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbigpKQorICAgIDogbV9kcmF3R2x5cGhzUmVjb3JkZXIo
KnRoaXMsIHBhcmVudC5tX2RyYXdHbHlwaHNSZWNvcmRlci5kZWNvbnN0cnVjdERyYXdHbHlwaHMo
KSkKIHsKICAgICBtX3N0YXRlU3RhY2suYXBwZW5kKHsgc3RhdGUsIGluaXRpYWxDVE0sIGluaXRp
YWxDbGlwIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKaW5kZXgg
YWJmOWI2YmIzZTI3OThlYmI0OGYxNjY3YzcxZDQyMjI2OTZmNjRjNi4uNDg2NmM4MmNhYzk0MzBk
N2MzNzRhYzNmYTViZThjMDc3Y2Q5M2E0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RS
ZWNvcmRlci5oCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFJlY29yZGVyIDogcHVibGljIEdyYXBo
aWNzQ29udGV4dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVjb3JkZXIpOwogcHVibGljOgotICAgIFdFQkNPUkVfRVhQT1JUIFJlY29y
ZGVyKGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0
cnVjdGlvbjo6RGVjb25zdHJ1Y3QpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVyKGNvbnN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgRHJhd0dseXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdH
bHlwaHMgPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIH5SZWNvcmRlcigpOwogCiAgICAgdmlydHVhbCB2
b2lkIGdldFBpeGVsQnVmZmVyKGNvbnN0IFBpeGVsQnVmZmVyRm9ybWF0JiBvdXRwdXRGb3JtYXQs
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlz
cGxheUxpc3RSZWNvcmRlckltcGwuY3BwCmluZGV4IGMyYWFkYTNkOTMwMjIzYTBmYTBkOTBlZmMx
MGMxOTUxNDQ2ZGZlMzguLjkxYzUwOTZiNDM1MjJmYTIxNjZhNWU4OTQ2YmRhNjljYTUxOGViNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmNwcApAQCAt
NDAsOCArNDAsOCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNwYWNlIERpc3BsYXlMaXN0
IHsKIAotUmVjb3JkZXJJbXBsOjpSZWNvcmRlckltcGwoRGlzcGxheUxpc3QmIGRpc3BsYXlMaXN0
LCBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIGNvbnN0IEZsb2F0UmVjdCYgaW5p
dGlhbENsaXAsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgaW5pdGlhbENUTSwgRGVsZWdhdGUqIGRl
bGVnYXRlLCBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbiBkcmF3
R2x5cGhzRGVjb25zdHJ1Y3Rpb24pCi0gICAgOiBSZWNvcmRlcihzdGF0ZSwgaW5pdGlhbENsaXAs
IGluaXRpYWxDVE0sIGRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbikKK1JlY29yZGVySW1wbDo6UmVj
b3JkZXJJbXBsKERpc3BsYXlMaXN0JiBkaXNwbGF5TGlzdCwgY29uc3QgR3JhcGhpY3NDb250ZXh0
U3RhdGUmIHN0YXRlLCBjb25zdCBGbG9hdFJlY3QmIGluaXRpYWxDbGlwLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGluaXRpYWxDVE0sIERlbGVnYXRlKiBkZWxlZ2F0ZSwgRHJhd0dseXBoc1JlY29y
ZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgZGVjb25zdHJ1Y3REcmF3R2x5cGhzKQorICAgIDog
UmVjb3JkZXIoc3RhdGUsIGluaXRpYWxDbGlwLCBpbml0aWFsQ1RNLCBkZWNvbnN0cnVjdERyYXdH
bHlwaHMpCiAgICAgLCBtX2Rpc3BsYXlMaXN0KGRpc3BsYXlMaXN0KQogICAgICwgbV9kZWxlZ2F0
ZShkZWxlZ2F0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVySW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBs
LmgKaW5kZXggZTZmYzU4OGNmNWI2MWFmM2E5MGJmYmU0ZDAyN2I2OWY3YTFiMjU2Yi4uYzU4NTM1
NGU3NDVjYzgzNDI1ZmI4NTNiZGE3ODg0NDZmZGMxNTQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXJJ
bXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3Rz
L0Rpc3BsYXlMaXN0UmVjb3JkZXJJbXBsLmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgUmVjb3Jk
ZXJJbXBsIDogcHVibGljIFJlY29yZGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWNv
cmRlckltcGwpOwogcHVibGljOgogICAgIGNsYXNzIERlbGVnYXRlOwotICAgIFdFQkNPUkVfRVhQ
T1JUIFJlY29yZGVySW1wbChEaXNwbGF5TGlzdCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwg
RGVsZWdhdGUqID0gbnVsbHB0ciwgRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzRGVjb25z
dHJ1Y3Rpb24gPSBEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNEZWNvbnN0cnVjdGlvbjo6
RGVjb25zdHJ1Y3QpOworICAgIFdFQkNPUkVfRVhQT1JUIFJlY29yZGVySW1wbChEaXNwbGF5TGlz
dCYsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0JiBpbml0aWFs
Q2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgRGVsZWdhdGUqID0gbnVsbHB0ciwgRHJhd0ds
eXBoc1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHMgPSBEcmF3R2x5cGhzUmVjb3JkZXI6
OkRlY29uc3RydWN0RHJhd0dseXBoczo6WWVzKTsKICAgICBSZWNvcmRlckltcGwoUmVjb3JkZXJJ
bXBsJiBwYXJlbnQsIGNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRlJiwgY29uc3QgRmxvYXRSZWN0
JiBpbml0aWFsQ2xpcCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBpbml0aWFsQ1RNKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflJlY29yZGVySW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovRHJhd0dseXBoc1JlY29yZGVy
SGFyZkJ1enouY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
RHJhd0dseXBoc1JlY29yZGVySGFyZkJ1enouY3BwCmluZGV4IDM5YjQ4NWUyYzA2NWQ3MjIxYjI4
OWM3ZGRmMDMyOTY0OGYxZDM2OGYuLmQwOWMxMzczZWE5YWFhZjRhMTg1MTM2ZWU4ODUzZDc4OGZj
NDE3OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0RyYXdHbHlwaHNSZWNvcmRlckhhcmZCdXp6LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9EcmF3R2x5cGhzUmVjb3JkZXJIYXJmQnV6ei5jcHAK
QEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1EcmF3R2x5cGhzUmVj
b3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRlcihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEcmF3R2x5
cGhzRGVjb25zdHJ1Y3Rpb24pCitEcmF3R2x5cGhzUmVjb3JkZXI6OkRyYXdHbHlwaHNSZWNvcmRl
cihHcmFwaGljc0NvbnRleHQmIG93bmVyLCBEZWNvbnN0cnVjdERyYXdHbHlwaHMsIERlcml2ZUZv
bnRGcm9tQ29udGV4dCkKICAgICA6IG1fb3duZXIob3duZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRHJhd0dseXBoc1JlY29yZGVyV2lu
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVj
b3JkZXJXaW4uY3BwCmluZGV4IDQzOWQ0MWM3ZTQxZWI2NDM4MjAwMzgyMzRlNTIzOGE4NjY4NTA4
ZjcuLjVkNjZlYjcyYWQxM2MyNGRhYzA5NWE5NDVmNjE0YTZmNTUyMjI0OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5cGhzUmVjb3JkZXJX
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9EcmF3R2x5
cGhzUmVjb3JkZXJXaW4uY3BwCkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRHJhd0dseXBoc1JlY29yZGVyOjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250
ZXh0JiBvd25lciwgRHJhd0dseXBoc0RlY29uc3RydWN0aW9uKQorRHJhd0dseXBoc1JlY29yZGVy
OjpEcmF3R2x5cGhzUmVjb3JkZXIoR3JhcGhpY3NDb250ZXh0JiBvd25lciwgRGVjb25zdHJ1Y3RE
cmF3R2x5cGhzLCBEZXJpdmVGb250RnJvbUNvbnRleHQpCiAgICAgOiBtX293bmVyKG93bmVyKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tCmluZGV4IDI5
ZGE2NTBmODQzMGUxYmRmMDI2M2Y1ZDZkNGQ1NDA0M2NmMTVjNjEuLmViODgzYjcyMTdjOWRiODE3
OGU3ZWMxYWE4NDgyODY5OWIzNDkzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUaGVtZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVJT1MubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIkNvbG9ySU9TLmgiCiAj
aW1wb3J0ICJEYXRlQ29tcG9uZW50cy5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKKyNpbXBvcnQg
IkRyYXdHbHlwaHNSZWNvcmRlci5oIgogI2ltcG9ydCAiRmlsZS5oIgogI2ltcG9ydCAiRmxvYXRS
b3VuZGVkUmVjdC5oIgogI2ltcG9ydCAiRm9udENhY2hlLmgiCkBAIC0xNTM2LDYgKzE1MzcsNyBA
QCBzdHJ1Y3QgUmVuZGVyQXR0YWNobWVudEluZm8gewogICAgIHN0cnVjdCBMYWJlbExpbmUgewog
ICAgICAgICBGbG9hdFJlY3QgcmVjdDsKICAgICAgICAgUmV0YWluUHRyPENUTGluZVJlZj4gbGlu
ZTsKKyAgICAgICAgUmV0YWluUHRyPENURm9udFJlZj4gZm9udDsKICAgICB9OwogICAgIFZlY3Rv
cjxMYWJlbExpbmU+IGxpbmVzOwogCkBAIC0xNTQ1LDEwICsxNTQ3LDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBidWlsZFdyYXBwZWRMaW5lcyhjb25zdCBTdHJpbmcmLCBDVEZvbnRSZWYsIFVJQ29s
b3IgKiwgdW5zaWduZWQgbWF4aW11bUxpbmVDb3VudCk7CiAgICAgdm9pZCBidWlsZFNpbmdsZUxp
bmUoY29uc3QgU3RyaW5nJiwgQ1RGb250UmVmLCBVSUNvbG9yICopOwogCi0gICAgdm9pZCBhZGRM
aW5lKENUTGluZVJlZik7CisgICAgdm9pZCBhZGRMaW5lKENURm9udFJlZiwgQ1RMaW5lUmVmKTsK
IH07CiAKLXZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmFkZExpbmUoQ1RMaW5lUmVmIGxpbmUp
Cit2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjphZGRMaW5lKENURm9udFJlZiBmb250LCBDVExp
bmVSZWYgbGluZSkKIHsKICAgICBDR1JlY3QgbGluZUJvdW5kcyA9IENUTGluZUdldEJvdW5kc1dp
dGhPcHRpb25zKGxpbmUsIGtDVExpbmVCb3VuZHNFeGNsdWRlVHlwb2dyYXBoaWNMZWFkaW5nKTsK
ICAgICBDR0Zsb2F0IHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gQ1RMaW5lR2V0VHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGgobGluZSk7CkBAIC0xNTU3LDYgKzE1NTksNyBAQCB2b2lkIFJlbmRlckF0
dGFjaG1lbnRJbmZvOjphZGRMaW5lKENUTGluZVJlZiBsaW5lKQogCiAgICAgQ0dGbG9hdCB4T2Zm
c2V0ID0gKGF0dGFjaG1lbnRSZWN0LndpZHRoKCkgLyAyKSAtIChsaW5lV2lkdGhJZ25vcmluZ1Ry
YWlsaW5nV2hpdGVzcGFjZSAvIDIpOwogICAgIExhYmVsTGluZSBsYWJlbExpbmU7CisgICAgbGFi
ZWxMaW5lLmZvbnQgPSBmb250OwogICAgIGxhYmVsTGluZS5saW5lID0gbGluZTsKICAgICBsYWJl
bExpbmUucmVjdCA9IEZsb2F0UmVjdCh4T2Zmc2V0LCAwLCBsaW5lV2lkdGhJZ25vcmluZ1RyYWls
aW5nV2hpdGVzcGFjZSwgbGluZUhlaWdodCk7CiAKQEAgLTE1OTEsNyArMTU5NCw3IEBAIHZvaWQg
UmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxkV3JhcHBlZExpbmVzKGNvbnN0IFN0cmluZyYgdGV4
dCwgQ1RGb250UmVmIGZvbnQsCiAgICAgQ0ZJbmRleCBsaW5lSW5kZXggPSAwOwogICAgIENGSW5k
ZXggbm9uVHJ1bmNhdGVkTGluZUNvdW50ID0gc3RkOjptaW48Q0ZJbmRleD4obWF4aW11bUxpbmVD
b3VudCAtIDEsIGxpbmVDb3VudCk7CiAgICAgZm9yICg7IGxpbmVJbmRleCA8IG5vblRydW5jYXRl
ZExpbmVDb3VudDsgKytsaW5lSW5kZXgpCi0gICAgICAgIGFkZExpbmUoKENUTGluZVJlZilDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGN0TGluZXMsIGxpbmVJbmRleCkpOworICAgICAgICBhZGRMaW5l
KGZvbnQsIChDVExpbmVSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChjdExpbmVzLCBsaW5lSW5k
ZXgpKTsKIAogICAgIGlmIChsaW5lSW5kZXggPT0gbGluZUNvdW50KQogICAgICAgICByZXR1cm47
CkBAIC0xNjExLDcgKzE2MTQsNyBAQCB2b2lkIFJlbmRlckF0dGFjaG1lbnRJbmZvOjpidWlsZFdy
YXBwZWRMaW5lcyhjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LAogICAgIGlmICgh
dHJ1bmNhdGVkTGluZSkKICAgICAgICAgdHJ1bmNhdGVkTGluZSA9IHJlbWFpbmluZ0xpbmU7CiAK
LSAgICBhZGRMaW5lKHRydW5jYXRlZExpbmUuZ2V0KCkpOworICAgIGFkZExpbmUoZm9udCwgdHJ1
bmNhdGVkTGluZS5nZXQoKSk7CiB9CiAKIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1aWxk
U2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVSUNvbG9yICpj
b2xvcikKQEAgLTE2MjUsNyArMTYyOCw3IEBAIHZvaWQgUmVuZGVyQXR0YWNobWVudEluZm86OmJ1
aWxkU2luZ2xlTGluZShjb25zdCBTdHJpbmcmIHRleHQsIENURm9udFJlZiBmb250LCBVCiAgICAg
fTsKICAgICBSZXRhaW5QdHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiBhdHRyaWJ1dGVkVGV4dCA9IGFk
b3B0TlMoW1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOnRleHQgYXR0
cmlidXRlczp0ZXh0QXR0cmlidXRlc10pOwogCi0gICAgYWRkTGluZShhZG9wdENGKENUTGluZUNy
ZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRl
ZFRleHQuZ2V0KCkpKS5nZXQoKSk7CisgICAgYWRkTGluZShmb250LCBhZG9wdENGKENUTGluZUNy
ZWF0ZVdpdGhBdHRyaWJ1dGVkU3RyaW5nKChDRkF0dHJpYnV0ZWRTdHJpbmdSZWYpYXR0cmlidXRl
ZFRleHQuZ2V0KCkpKS5nZXQoKSk7CiB9CiAKIHN0YXRpYyBCT09MIGdldEF0dGFjaG1lbnRQcm9n
cmVzcyhjb25zdCBSZW5kZXJBdHRhY2htZW50JiBhdHRhY2htZW50LCBmbG9hdCYgcHJvZ3Jlc3Mp
CkBAIC0xNzY2LDE1ICsxNzY5LDEwIEBAIHN0YXRpYyB2b2lkIHBhaW50QXR0YWNobWVudEljb24o
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJBdHRhY2htZW50SW5mbyYKIAogc3RhdGlj
IHZvaWQgcGFpbnRBdHRhY2htZW50VGV4dChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIFJlbmRl
ckF0dGFjaG1lbnRJbmZvJiBpbmZvKQogewotICAgIGZvciAoY29uc3QgYXV0byYgbGluZSA6IGlu
Zm8ubGluZXMpIHsKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBzYXZlcihjb250
ZXh0KTsKKyAgICBEcmF3R2x5cGhzUmVjb3JkZXIgcmVjb3JkZXIoY29udGV4dCwgRHJhd0dseXBo
c1JlY29yZGVyOjpEZWNvbnN0cnVjdERyYXdHbHlwaHM6OlllcywgRHJhd0dseXBoc1JlY29yZGVy
OjpEZXJpdmVGb250RnJvbUNvbnRleHQ6Olllcyk7CiAKLSAgICAgICAgY29udGV4dC50cmFuc2xh
dGUodG9GbG9hdFNpemUobGluZS5yZWN0Lm1pblhNYXhZQ29ybmVyKCkpKTsKLSAgICAgICAgY29u
dGV4dC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKLQotICAgICAgICBDR0NvbnRleHRTZXRUZXh0
UG9zaXRpb24oY29udGV4dC5wbGF0Zm9ybUNvbnRleHQoKSwgMCwgMCk7Ci0gICAgICAgIENUTGlu
ZURyYXcobGluZS5saW5lLmdldCgpLCBjb250ZXh0LnBsYXRmb3JtQ29udGV4dCgpKTsKLSAgICB9
CisgICAgZm9yIChjb25zdCBhdXRvJiBsaW5lIDogaW5mby5saW5lcykKKyAgICAgICAgcmVjb3Jk
ZXIuZHJhd05hdGl2ZVRleHQobGluZS5mb250LmdldCgpLCBDVEZvbnRHZXRTaXplKGxpbmUuZm9u
dC5nZXQoKSksIGxpbmUubGluZS5nZXQoKSwgbGluZS5yZWN0KTsKIH0KIAogc3RhdGljIHZvaWQg
cGFpbnRBdHRhY2htZW50UHJvZ3Jlc3MoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBSZW5kZXJB
dHRhY2htZW50SW5mbyYgaW5mbykK
</data>

          </attachment>
      

    </bug>

</bugzilla>