<?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>102664</bug_id>
          
          <creation_ts>2012-11-19 01:50:07 -0800</creation_ts>
          <short_desc>Coordinated Graphics: refactor syncCanvas to handle the lifecycle clearly.</short_desc>
          <delta_ts>2012-11-19 14:55:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Dongseong Hwang">dongseong.hwang</assigned_to>
          <cc>dino</cc>
    
    <cc>levin+threading</cc>
    
    <cc>noam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zeno</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770488</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-19 01:50:07 -0800</bug_when>
    <thetext>This patch makes sync canvas code handle the lifecycle of the canvas
GraphicsSurface in the similar style to a directly image compositing and an
update atlas code. In conclusion, this patch moves the canvas lifecycle handling
code from LayerTreeRenderer to CoordinatedGraphicsLayer, because
CoordinatedGraphicsLayer knows best when to create and remove the canvas
GraphicsSurface.

After this patch, we can remove the canvas GraphicsSurface in UI Process as soon
as the canvas platform layer is unset in Web Process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770498</commentid>
    <comment_count>1</comment_count>
      <attachid>174919</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-19 02:04:56 -0800</bug_when>
    <thetext>Created attachment 174919
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770522</commentid>
    <comment_count>2</comment_count>
      <attachid>174919</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-19 02:40:22 -0800</bug_when>
    <thetext>Comment on attachment 174919
Patch

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

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-247
&gt; -    if (canvasSize.isEmpty() || !m_textureMapper)

Could you answer does GraphicsSurface need m_textureMapper? I think GraphicsSurface has its own GL Context.

I can make LayerTreeCoordinator early return if canvasSize.isEmpty(). If so, we must remove ASSERT(m_surfaceBackingStores.contains(id)) in LayerTreeRenderer::removeCanvas(), because we cannot know the canvasSize in LayerTreeCoordinator::removeCanvas. Which is better?

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-250
&gt; -    ensureLayer(id);

I treated it as ASSERT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770526</commentid>
    <comment_count>3</comment_count>
      <attachid>174919</attachid>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-11-19 02:51:27 -0800</bug_when>
    <thetext>Comment on attachment 174919
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-247
&gt;&gt; -    if (canvasSize.isEmpty() || !m_textureMapper)
&gt; 
&gt; Could you answer does GraphicsSurface need m_textureMapper? I think GraphicsSurface has its own GL Context.
&gt; 
&gt; I can make LayerTreeCoordinator early return if canvasSize.isEmpty(). If so, we must remove ASSERT(m_surfaceBackingStores.contains(id)) in LayerTreeRenderer::removeCanvas(), because we cannot know the canvasSize in LayerTreeCoordinator::removeCanvas. Which is better?

The current implementations of GraphicsSurface all rely on TextureMapper being available for drawing the transferred texture on screen.
This is why we check if we have a TextureMapper in this place. It does/did not make sense to create a GraphicsSurface without having a TextureMapper.
Unless of course, you are going to use a different method for drawing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770546</commentid>
    <comment_count>4</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-19 03:16:45 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 174919 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174919&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeRenderer.cpp:-247
&gt; &gt;&gt; -    if (canvasSize.isEmpty() || !m_textureMapper)
&gt; &gt; 
&gt; &gt; Could you answer does GraphicsSurface need m_textureMapper? I think GraphicsSurface has its own GL Context.
&gt; &gt; 
&gt; &gt; I can make LayerTreeCoordinator early return if canvasSize.isEmpty(). If so, we must remove ASSERT(m_surfaceBackingStores.contains(id)) in LayerTreeRenderer::removeCanvas(), because we cannot know the canvasSize in LayerTreeCoordinator::removeCanvas. Which is better?
&gt; 
&gt; The current implementations of GraphicsSurface all rely on TextureMapper being available for drawing the transferred texture on screen.
&gt; This is why we check if we have a TextureMapper in this place. It does/did not make sense to create a GraphicsSurface without having a TextureMapper.
&gt; Unless of course, you are going to use a different method for drawing.

Thanks for answer!

LayerTreeRenderer::syncRemoteContent() only calls three methods: createCanvas(), syncCanvas() and removeCanvas(), and syncRemoteContent() creates TextureMapper if it does not exist. So how about putting ASSERT instead of the if statement?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770549</commentid>
    <comment_count>5</comment_count>
    <who name="Zeno Albisser">zeno</who>
    <bug_when>2012-11-19 03:20:17 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; LayerTreeRenderer::syncRemoteContent() only calls three methods: createCanvas(), syncCanvas() and removeCanvas(), and syncRemoteContent() creates TextureMapper if it does not exist. So how about putting ASSERT instead of the if statement?

That sounds good to me, as it is not meant to be used without TextureMapper anyway.

The patch overall looks very nice to me. Thanks for the great work! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770733</commentid>
    <comment_count>6</comment_count>
      <attachid>174919</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-11-19 07:33:45 -0800</bug_when>
    <thetext>Comment on attachment 174919
Patch

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

Please fix comments before cq?
(You don&apos;t need to r? again)

&gt; Source/WebCore/ChangeLog:8
&gt; +        As refactoring Coordinated Graphics in WebKit2, code related to TexMap

TexMap -&gt; TextureMapper

&gt; Source/WebCore/platform/graphics/surfaces/GraphicsSurface.h:53
&gt; +class GraphicsSurface : public ThreadSafeRefCounted&lt;GraphicsSurface&gt; {

This belongs in a different patch.

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperBackingStore.cpp:42
&gt; +    if (!surface) {
&gt; +        m_graphicsSurface.clear();
&gt; +        return;
&gt;      }

This is redundant.

&gt; Source/WebKit2/UIProcess/CoordinatedGraphics/LayerTreeCoordinatorProxy.messages.in:54
&gt; +    RemoveCanvas(uint32_t id)

DestroyCanvas.
(Remove pairs with Add, Destroy pairs with Create)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771034</commentid>
    <comment_count>7</comment_count>
      <attachid>175042</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-19 14:37:47 -0800</bug_when>
    <thetext>Created attachment 175042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771038</commentid>
    <comment_count>8</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-11-19 14:41:13 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; That sounds good to me, as it is not meant to be used without TextureMapper anyway.
&gt; 
&gt; The patch overall looks very nice to me. Thanks for the great work! :)

Thanks for review!

(In reply to comment #6)
&gt; (From update of attachment 174919 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=174919&amp;action=review
&gt; 
&gt; Please fix comments before cq?
&gt; (You don&apos;t need to r? again)

OK :)

&gt; 
&gt; TexMap -&gt; TextureMapper
Done

&gt;  
&gt; This belongs in a different patch.
Yes. Do you think we should change ThreadSafeRefCounted?


&gt; This is redundant.
Done


&gt; DestroyCanvas.
&gt; (Remove pairs with Add, Destroy pairs with Create)
Done.
Oops. I&apos;m afraid that there are some create and remove pairs in coordinated graphics I made..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771054</commentid>
    <comment_count>9</comment_count>
      <attachid>175042</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 14:55:02 -0800</bug_when>
    <thetext>Comment on attachment 175042
Patch

Clearing flags on attachment: 175042

Committed r135200: &lt;http://trac.webkit.org/changeset/135200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>771055</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-19 14:55:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174919</attachid>
            <date>2012-11-19 02:04:56 -0800</date>
            <delta_ts>2012-11-19 14:37:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102664-20121119190238.patch</filename>
            <type>text/plain</type>
            <size>28341</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3NDU3YzFhM2M5Zjhi
MTNmYTNjNzM4ZWQ1NTA5YzQyNTdkMWZkYS4uMjFlMDM1ZTJjMmFiYTU0NzA1MDEzYWU4MDcyNjc5
ZjdkZmJjNzExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTExLTE5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiByZWZhY3RvciBzeW5jQ2FudmFzIHRvIGhhbmRsZSB0aGUgbGlmZWN5Y2xl
IGNsZWFybHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDI2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBcyByZWZhY3RvcmluZyBDb29yZGluYXRlZCBHcmFwaGljcyBpbiBXZWJLaXQyLCBjb2RlIHJl
bGF0ZWQgdG8gVGV4TWFwCisgICAgICAgIGlzIGNoYW5nZWQuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLiBSZWZhY3RvcmluZyBvbmx5LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NDb250ZXh0M0RRdC5jcHA6CisgICAgICAgIChHcmFwaGljc0NvbnRleHQzRFByaXZh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwbGF0ZnJv
bUxheWVyU2l6ZSk6CisgICAgICAgICAgICBXZSBuZWVkIHRvIGtub3cgdGhlIHNpemUgb2YgYSB0
ZXh0dXJlIG1hcHBlciBwbGF0Zm9ybSBsYXllci4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oOgorICAgICAg
ICAgIEV4dGVuZHMgVGhyZWFkU2FmZVJlZkNvdW50ZWQgaW5zdGVhZCBvZiBSZWZDb3VudGVkLCBi
ZWNhdXNlCisgICAgICAgICAgR3JhcGhpY3NTdXJmYWNlIGNhbiBiZSB1c2VkIGluIHR3byB0aHJl
YWRzLiBJdCBpcyB3aHkgU2hhcmVhYmxlU3VyZmFjZQorICAgICAgICAgIHdoaWNoIHVzZXMgR3Jh
cGhpY3NTdXJmYWNlIGV4dGVuZHMgVGhyZWFkU2FmZVJlZkNvdW50ZWQgdG9vLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcDoK
KyAgICAgICAgICBCZWNhdXNlIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBoYW5kbGVzIHRoZSBj
YW52YXMgR3JhcGhpY3NTdXJmYWNlCisgICAgICAgICAgbGlmZWN5Y2xlLCBUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZSBkb2VzIG5vdCBuZWVkIHRvIGtub3cKKyAgICAgICAgICBHcmFw
aGljc1N1cmZhY2VUb2tlbi4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNr
aW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXI6OnBsYXRmcm9tTGF5ZXJTaXplKToKKwogMjAxMi0xMS0xOSAgS2VudGFybyBIYXJh
ICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEzNTExNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjZDVjZWNiZmU1ODNjMmQ3MmYwODgwNDgzMTdlZmFm
ODY1M2VmYTY1Li4wYTkzNmE2ODQyODM2MTg5MDgyOWZkYmY1YmU5MDVhODY4ZWVmZjVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTItMTEtMTkgIEh1YW5nIERvbmdzdW5nICA8bHV4
dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IHJl
ZmFjdG9yIHN5bmNDYW52YXMgdG8gaGFuZGxlIHRoZSBsaWZlY3ljbGUgY2xlYXJseS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFr
ZXMgc3luYyBjYW52YXMgY29kZSBoYW5kbGUgdGhlIGxpZmVjeWNsZSBvZiB0aGUgY2FudmFzCisg
ICAgICAgIEdyYXBoaWNzU3VyZmFjZSBpbiB0aGUgc2ltaWxhciBzdHlsZSB0byBhIGRpcmVjdGx5
IGltYWdlIGNvbXBvc2l0aW5nIGFuZAorICAgICAgICBhbiB1cGRhdGUgYXRsYXMgY29kZS4gVGhp
cyBwYXRjaCBtb3ZlcyB0aGUgY2FudmFzIGxpZmVjeWNsZSBoYW5kbGluZworICAgICAgICBjb2Rl
IGZyb20gTGF5ZXJUcmVlUmVuZGVyZXIgdG8gQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLCBiZWNh
dXNlCisgICAgICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciBrbm93cyBiZXN0IHdoZW4gdG8g
Y3JlYXRlIGFuZCByZW1vdmUgdGhlIGNhbnZhcworICAgICAgICBHcmFwaGljc1N1cmZhY2UuCisK
KyAgICAgICAgQWZ0ZXIgdGhpcyBwYXRjaCwgd2UgY2FuIHJlbW92ZSB0aGUgY2FudmFzIEdyYXBo
aWNzU3VyZmFjZSBpbiBVSSBQcm9jZXNzIGFzIHNvb24KKyAgICAgICAgYXMgdGhlIGNhbnZhcyBw
bGF0Zm9ybSBsYXllciBpcyB1bnNldCBpbiBXZWIgUHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpjcmVhdGVDYW52YXMp
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3JQcm94eTo6c3luY0NhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yUHJveHk6OnJlbW92ZUNhbnZhcyk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAgICAgICAoTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpjcmVhdGVDYW52YXMpOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6cmVtb3ZlQ2FudmFzKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oOgor
ICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhp
Y3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNl
dENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3Jh
cGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChXZWJDb3JlOjpDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNDYW52YXMpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUNhbnZhc0lm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3Jl
YXRlQ2FudmFzSWZOZWVkZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oOgorICAgICAgICAoQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50KToKKyAgICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29y
ZGluYXRvcjo6Y3JlYXRlQ2FudmFzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5jQ2FudmFzKToKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbW92ZUNhbnZhcyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaDoKKyAg
ICAgICAgKExheWVyVHJlZUNvb3JkaW5hdG9yKToKKwogMjAxMi0xMS0xOCAgSHVhbmcgRG9uZ3N1
bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBDb29yZGluYXRlZCBHcmFw
aGljczogUmVtb3ZlIGEgdGV4dHVyZSBpZiBhbiBkaXJlY3QgY29tcG9zaXRlZCBpbWFnZSBpcyBv
ZmYgdGhlIHZpZXdwb3J0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAppbmRleCA0M2VhNzViZGNkNGEz
MTU2MTdmY2M0Mjk2N2IzMjdjYzQ3Y2UyYmFlLi5hOWY5MGYzNWNlMDljOWYzNTRiY2M3NDQzY2Zj
MTg3YWY1MTY3MmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcApAQCAtNjgsNiArNjgsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
LCBmbG9hdCBvcGFjaXR5LCBCaXRtYXBUZXh0dXJlKiBtYXNrKTsKICNlbmRpZgogI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQorICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0ZnJvbUxheWVyU2l6ZSgp
IGNvbnN0OwogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CiAg
ICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNv
bnN0OwogI2VuZGlmCkBAIC0yNzcsNiArMjc4LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
CiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCitJbnRTaXplIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxhdGZyb21M
YXllclNpemUoKSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKG1fY29udGV4dC0+bV9jdXJy
ZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKK30KKwogdWludDMyX3QgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQogewogICAgIGlm
ICghbV9ncmFwaGljc1N1cmZhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCmluZGV4IDU2MDJjZjUy
MTcxMTI5ZTRkZWIwMzYxMTc3MzI4YTQ3ZjQ5NWZiMWEuLmYzOTY1YTRiN2I3NGQ1NjRkZGI3MjM3
MjZkNWUyZTJjZmUxMzQyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCkBAIC01MCw3ICs1MCw3
IEBAIGNsYXNzIEJpdG1hcFRleHR1cmU7CiBjbGFzcyBUZXh0dXJlTWFwcGVyOwogc3RydWN0IEdy
YXBoaWNzU3VyZmFjZVByaXZhdGU7CiAKLWNsYXNzIEdyYXBoaWNzU3VyZmFjZSA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdyYXBoaWNzU3VyZmFjZT4geworY2xhc3MgR3JhcGhpY3NTdXJmYWNlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEdyYXBoaWNzU3VyZmFjZT4gewogcHVibGljOgogICAg
IGVudW0gRmxhZyB7CiAgICAgICAgIFN1cHBvcnRzQWxwaGEgPSAweDAxLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCmluZGV4IGZmOTZmMTY4YzI0MGE4ZmNhNGU3OWZl
Y2M3ZjJiODY3NTk1OWIwNzguLjEwYjhlNjk1MjkyY2FhZmM2ZjMwMjcyMGE2MjNlY2M2MTE0NTg4
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTM0LDE5
ICszNCwyMCBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZB
Q0UpCi12b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1
cmZhY2UoY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIGdyYXBoaWNzU3VyZmFjZVRva2VuLCBj
b25zdCBJbnRTaXplJiBzdXJmYWNlU2l6ZSwgdWludDMyX3QgZnJvbnRCdWZmZXIpCit2b2lkIFRl
eHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1Jl
ZlB0cjxHcmFwaGljc1N1cmZhY2U+IHN1cmZhY2UpCiB7Ci0gICAgaWYgKGdyYXBoaWNzU3VyZmFj
ZVRva2VuICE9IG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW4pIHsKLSAgICAgICAgR3JhcGhpY3NTdXJm
YWNlOjpGbGFncyBzdXJmYWNlRmxhZ3MgPSBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzVGV4dHVy
ZVRhcmdldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdy
YXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNTaGFyaW5nOwotICAgICAgICBzZXRTdXJmYWNlKEdyYXBo
aWNzU3VyZmFjZTo6Y3JlYXRlKHN1cmZhY2VTaXplLCBzdXJmYWNlRmxhZ3MsIGdyYXBoaWNzU3Vy
ZmFjZVRva2VuKSk7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlU2l6ZSA9IHN1cmZhY2VTaXpl
OworICAgIGlmICghc3VyZmFjZSkgeworICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS5jbGVhcigp
OworICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZT4gc3VyZmFjZSA9IGdyYXBoaWNzU3VyZmFjZSgpOwotICAgIGlmIChzdXJmYWNlICYm
IHN1cmZhY2UtPmZyb250QnVmZmVyKCkgIT0gZnJvbnRCdWZmZXIpCi0gICAgICAgIHN1cmZhY2Ut
PnN3YXBCdWZmZXJzKCk7CisgICAgbV9ncmFwaGljc1N1cmZhY2UgPSBzdXJmYWNlOworfQogCit2
b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzd2FwQnVmZmVyc0lmTmVlZGVk
KHVpbnQzMl90IGZyb250QnVmZmVyKQoreworICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSAmJiBt
X2dyYXBoaWNzU3VyZmFjZS0+ZnJvbnRCdWZmZXIoKSAhPSBmcm9udEJ1ZmZlcikKKyAgICAgICAg
bV9ncmFwaGljc1N1cmZhY2UtPnN3YXBCdWZmZXJzKCk7CiB9CiAKIFBhc3NSZWZQdHI8Qml0bWFw
VGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25z
dApAQCAtNjEsMTcgKzYyLDYgQEAgdm9pZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHUKICAgICBpZiAobV9n
cmFwaGljc1N1cmZhY2UpCiAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4dHVy
ZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHksIG1h
c2spOwogfQotCi12b2lkIFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzZXRTdXJm
YWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlKQotewotICAgIGlmIChzdXJm
YWNlKSB7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlID0gc3VyZmFjZTsKLSAgICAgICAgbV9n
cmFwaGljc1N1cmZhY2VUb2tlbiA9IG1fZ3JhcGhpY3NTdXJmYWNlLT5leHBvcnRUb2tlbigpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlID0gUmVmUHRyPEdyYXBoaWNz
U3VyZmFjZT4oKTsKLSAgICAgICAgbV9ncmFwaGljc1N1cmZhY2VUb2tlbiA9IEdyYXBoaWNzU3Vy
ZmFjZVRva2VuKCk7Ci0gICAgfQotfQogI2VuZGlmCiAKIHZvaWQgVGV4dHVyZU1hcHBlclRpbGU6
OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFn
ZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50
c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlLmgKaW5kZXggOWNhNmE4MmVmODFhODQ1MWViY2VmYjUxNDBlNDEyOTdmYzQ0OGU3Ny4uZmJl
ZGMwNDE4YmJhZWJmYWQ0MGJiMDg1N2FjMDA2ZWJiODEzMWM3YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC01MCwyMyArNTAsMTggQEAgcHJvdGVjdGVkOgogY2xh
c3MgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBl
ckJhY2tpbmdTdG9yZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
ZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSk7IH0KLSAgICB2b2lkIHNldEdyYXBoaWNz
U3VyZmFjZShjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYsIGNvbnN0IEludFNpemUmIHN1cmZh
Y2VTaXplLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2U+IGdyYXBoaWNzU3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhcGhp
Y3NTdXJmYWNlOyB9CisgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxHcmFw
aGljc1N1cmZhY2U+KTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QgZnJv
bnRCdWZmZXIpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJl
KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0LCBCaXRtYXBUZXh0dXJlKik7CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUoKSB7IH0KIAotcHJvdGVjdGVkOgotICAgIHZvaWQgc2V0U3VyZmFjZShQYXNz
UmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOwotCiBwcml2YXRlOgogICAgIFRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlKCkKICAgICAgICAgOiBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
KCkKICAgICAgICAgeyB9CiAKLSAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2dyYXBoaWNzU3Vy
ZmFjZVRva2VuOwotICAgIFJlZlB0cjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhp
Y3NTdXJmYWNlOwotICAgIEludFNpemUgbV9ncmFwaGljc1N1cmZhY2VTaXplOworICAgIFJlZlB0
cjxHcmFwaGljc1N1cmZhY2U+IG1fZ3JhcGhpY3NTdXJmYWNlOwogfTsKICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCmluZGV4IGRiM2YwYmVjNmJkNjliMWRl
Y2Q2NGI4MmIzZThiNTBlNmZhNjkwMDEuLjZkNDFkYjkzNTBmM2E1NmNkMTg5YTUwYjVhOWVkMTM5
OWZlZmFkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCkBAIC0z
Nyw2ICszNyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBv
cGFjaXR5ID0gMS4wLCBCaXRtYXBUZXh0dXJlKiBtYXNrID0gMCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzd2FwQnVmZmVycygpIHsgfQogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIHZp
cnR1YWwgSW50U2l6ZSBwbGF0ZnJvbUxheWVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIEludFNpemUo
KTsgfQogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3JhcGhpY3NTdXJmYWNlKCkgeyByZXR1
cm4gMDsgfQogICAgIHZpcnR1YWwgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNl
VG9rZW4oKSBjb25zdCB7IHJldHVybiBHcmFwaGljc1N1cmZhY2VUb2tlbigpOyB9CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKaW5kZXgg
NWFhZDk5NmEzOGRjMTJiNjczNTQ2OTc2ZjMyYjIxNGZiZThiODQ3MS4uNmI0NmE5Y2IwNTdjOTY4
NjA1ZTMwN2M1ZDVhY2QxNzAxMTVlMGUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJM
YXllclRyZWVJbmZvLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1cmZhY2UuaD4KIAog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKICNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5oIgpAQCAtMjIwLDkgKzIyMSwyMCBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OmRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbgogfQogCiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6
OnN5bmNDYW52YXModWludDMyX3QgaWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0
IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCit2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OmNyZWF0ZUNhbnZhcyhXZWJMYXllcklEIGlkLCBj
b25zdCBJbnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBHcmFwaGljc1N1cmZhY2VUb2tlbiYgdG9r
ZW4pCiB7Ci0gICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmND
YW52YXMsIG1fcmVuZGVyZXIuZ2V0KCksIGlkLCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZm
ZXIpKTsKKyAgICBHcmFwaGljc1N1cmZhY2U6OkZsYWdzIHN1cmZhY2VGbGFncyA9IEdyYXBoaWNz
U3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFyZ2V0IHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0
c1NoYXJpbmc7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmNy
ZWF0ZUNhbnZhcywgbV9yZW5kZXJlci5nZXQoKSwgaWQsIGNhbnZhc1NpemUsIEdyYXBoaWNzU3Vy
ZmFjZTo6Y3JlYXRlKGNhbnZhc1NpemUsIHN1cmZhY2VGbGFncywgdG9rZW4pKSk7Cit9CisKK3Zv
aWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c3luY0NhbnZhcyhXZWJMYXllcklEIGlkLCB1
aW50MzJfdCBmcm9udEJ1ZmZlcikKK3sKKyAgICBkaXNwYXRjaFVwZGF0ZShiaW5kKCZMYXllclRy
ZWVSZW5kZXJlcjo6c3luY0NhbnZhcywgbV9yZW5kZXJlci5nZXQoKSwgaWQsIGZyb250QnVmZmVy
KSk7Cit9CisKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6cmVtb3ZlQ2FudmFzKFdl
YkxheWVySUQgaWQpCit7CisgICAgZGlzcGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVy
ZXI6OnJlbW92ZUNhbnZhcywgbV9yZW5kZXJlci5nZXQoKSwgaWQpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggODViMDhj
YWFjZTIwYjIzZjU3MmE5YmJjZTgzOGFhMGRjMTRkZTM5MS4uMzBiNTVlMGE1YTZkZWIzMjI2ODg1
OTE5NzgxZWIzODg2Mzk2ZWUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHkuaApAQCAtODEsNyArODEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5kZXJO
ZXh0RnJhbWUoKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBvc2l0aW9uKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAg
dm9pZCBzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52
YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYsIHVpbnQzMl90IGZy
b250QnVmZmVyKTsKKyAgICB2b2lkIGNyZWF0ZUNhbnZhcyhXZWJMYXllcklELCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAg
ICB2b2lkIHN5bmNDYW52YXMoV2ViTGF5ZXJJRCwgdWludDMyX3QgZnJvbnRCdWZmZXIpOworICAg
IHZvaWQgcmVtb3ZlQ2FudmFzKFdlYkxheWVySUQpOwogI2VuZGlmCiAgICAgdm9pZCBwdXJnZUJh
Y2tpbmdTdG9yZXMoKTsKICAgICBMYXllclRyZWVSZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5tZXNzYWdlcy5pbgppbmRleCBmNmI5
NGU0MTNmNTBiMWM5YTg0NDhlMTRkYmNlZmFkYWRhOGU5ZDRlLi42MDVkMGM0NzUxZTgwMDI2ZmQ1
NGE5Nzk3MTk5NjFlNTljZWJiZGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ5LDcgKzQ5LDkgQEAgbWVz
c2FnZXMgLT4gTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSB7CiAjZW5kaWYKIAogI2lmIFVTRShH
UkFQSElDU19TVVJGQUNFKQotICAgIFN5bmNDYW52YXModWludDMyX3QgaWQsIFdlYkNvcmU6Oklu
dFNpemUgY2FudmFzU2l6ZSwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4gdG9rZW4sIHVp
bnQzMl90IGZyb250QnVmZmVyKQorICAgIENyZWF0ZUNhbnZhcyh1aW50MzJfdCBpZCwgV2ViQ29y
ZTo6SW50U2l6ZSBjYW52YXNTaXplLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tl
bikKKyAgICBTeW5jQ2FudmFzKHVpbnQzMl90IGlkLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKKyAg
ICBSZW1vdmVDYW52YXModWludDMyX3QgaWQpCiAjZW5kaWYKIAogICAgIFNldEJhY2tncm91bmRD
b2xvcihXZWJDb3JlOjpDb2xvciBjb2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmNwcAppbmRleCA3YTZkZTRhMzIzMDQ5MGUwMDlmOTAyOTQzMGQ5OTIzNDY2ZTYwYzU3Li5iYWM4
NTA4MjdjMGQ4ZDliNmYzYTMyZDYxZmIxYTBhNmIzNzg2MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlUmVuZGVyZXIuY3BwCkBAIC0yNDIsMjUgKzI0MiwzOCBAQCB2b2lkIExheWVyVHJlZVJl
bmRlcmVyOjpkaWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24p
CiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6
OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFz
U2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9udEJ1
ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUNhbnZhcyhXZWJMYXllcklEIGlk
LCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCBQYXNzUmVmUHRyPEdyYXBoaWNz
U3VyZmFjZT4gc3VyZmFjZSkKIHsKLSAgICBpZiAoY2FudmFzU2l6ZS5pc0VtcHR5KCkgfHwgIW1f
dGV4dHVyZU1hcHBlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZW5zdXJlTGF5ZXIoaWQpOwog
ICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICBBU1NFUlQobGF5
ZXIpOworICAgIEFTU0VSVCghbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5jb250YWlucyhpZCkpOwog
Ci0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBjYW52YXNCYWNr
aW5nU3RvcmU7Ci0gICAgU3VyZmFjZUJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3IgaXQgPSBtX3N1
cmZhY2VCYWNraW5nU3RvcmVzLmZpbmQoaWQpOwotICAgIGlmIChpdCA9PSBtX3N1cmZhY2VCYWNr
aW5nU3RvcmVzLmVuZCgpKSB7Ci0gICAgICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9IFRleHR1cmVN
YXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLSAgICAgICAgbV9zdXJmYWNlQmFj
a2luZ1N0b3Jlcy5zZXQoaWQsIGNhbnZhc0JhY2tpbmdTdG9yZSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZTsKKyAgICBSZWZQdHI8VGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNhbnZhc0JhY2tpbmdTdG9yZShUZXh0dXJlTWFwcGVy
U3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOworICAgIG1fc3VyZmFjZUJhY2tpbmdTdG9y
ZXMuc2V0KGlkLCBjYW52YXNCYWNraW5nU3RvcmUpOwogCi0gICAgY2FudmFzQmFja2luZ1N0b3Jl
LT5zZXRHcmFwaGljc1N1cmZhY2UodG9rZW4sIGNhbnZhc1NpemUsIGZyb250QnVmZmVyKTsKKyAg
ICBjYW52YXNCYWNraW5nU3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShzdXJmYWNlKTsKICAgICBs
YXllci0+c2V0Q29udGVudHNUb01lZGlhKGNhbnZhc0JhY2tpbmdTdG9yZS5nZXQoKSk7CiB9CisK
K3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBpZCwgdWludDMy
X3QgZnJvbnRCdWZmZXIpCit7CisgICAgQVNTRVJUKG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY29u
dGFpbnMoaWQpKTsKKworICAgIFN1cmZhY2VCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5maW5kKGlkKTsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmU+IGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZTsKKwor
ICAgIGNhbnZhc0JhY2tpbmdTdG9yZS0+c3dhcEJ1ZmZlcnNJZk5lZWRlZChmcm9udEJ1ZmZlcik7
Cit9CisKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnJlbW92ZUNhbnZhcyhXZWJMYXllcklEIGlk
KQoreworICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICBBU1NF
UlQobGF5ZXIpOworICAgIEFTU0VSVChtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGlk
KSk7CisKKyAgICBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLnJlbW92ZShpZCk7CisgICAgbGF5ZXIt
PnNldENvbnRlbnRzVG9NZWRpYSgwKTsKK30KICNlbmRpZgogCiB2b2lkIExheWVyVHJlZVJlbmRl
cmVyOjpzZXRMYXllckNoaWxkcmVuKFdlYkxheWVySUQgaWQsIGNvbnN0IFZlY3RvcjxXZWJMYXll
cklEPiYgY2hpbGRJRHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAppbmRleCAzMzI5
NTQ4NGUyYWZlNjBmZGYzMDI3YTgwNTU5OGYzYzU0Yzc5ZTUwLi41NGFkOGIzZGQ5MDkzNTU3NDU4
MDk4M2ViMzNmODlmZmY3ZTZmNjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmgK
QEAgLTc1LDcgKzc1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICB2b2lkIGRpZENoYW5nZVNjcm9sbFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb3NpdGlvbik7CiAjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCi0gICAgdm9pZCBzeW5jQ2FudmFzKHVpbnQzMl90IGlkLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBjYW52YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VU
b2tlbiYsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAgICB2b2lkIGNyZWF0ZUNhbnZhcyhXZWJM
YXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2U+KTsKKyAgICB2b2lkIHN5bmNDYW52YXMoV2ViTGF5ZXJJRCwgdWludDMyX3Qg
ZnJvbnRCdWZmZXIpOworICAgIHZvaWQgcmVtb3ZlQ2FudmFzKFdlYkxheWVySUQpOwogI2VuZGlm
CiAKICAgICB2b2lkIGRldGFjaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKaW5kZXggOWE2Nzc5YjMyOTlhNGZjMTVj
YTNlMGZiMTZkNDZkMjQ1MDQ4ZDg1MS4uZDdjYzRjNWJlY2Q3NDU1ZjRiYTI4MzY0YzRmNWVhNmQ0
ZWJhZDdlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuY3BwCkBAIC0xMTcsNiArMTE3LDggQEAgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCog
Y2xpZW50KQogICAgICwgbV9zaG91bGRTeW5jQW5pbWF0aW9ucyh0cnVlKQogICAgICwgbV9maXhl
ZFRvVmlld3BvcnQoZmFsc2UpCiAgICAgLCBtX2NhbnZhc05lZWRzRGlzcGxheShmYWxzZSkKKyAg
ICAsIG1fY2FudmFzTmVlZHNDcmVhdGUoZmFsc2UpCisgICAgLCBtX2NhbnZhc05lZWRzUmVtb3Zl
KGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwgbV9jb250ZW50c1NjYWxlKDEp
CiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQpAQCAtMzIyLDE3ICszMjQsMzYg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRlbnRzUmVjdChjb25zdCBJ
bnRSZWN0JiByKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNO
ZWVkc0Rpc3BsYXkoKQogewotICAgIG1fY2FudmFzTmVlZHNEaXNwbGF5ID0gdHJ1ZTsKKyAgICBp
ZiAobV9jYW52YXNQbGF0Zm9ybUxheWVyKQorICAgICAgICBtX2NhbnZhc05lZWRzRGlzcGxheSA9
IHRydWU7CiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQoKS0+bm90aWZ5Rmx1c2hS
ZXF1aXJlZCh0aGlzKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENv
bnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcikKIHsKKyNpZiBVU0Uo
R1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAobV9jYW52YXNQbGF0Zm9ybUxheWVyKSB7CisgICAg
ICAgIEFTU0VSVChtX2NhbnZhc1Rva2VuLmlzVmFsaWQoKSk7CisgICAgICAgIC8vIG1fY2FudmFz
VG9rZW4gY2FuIGJlIGRpZmZlcmVudCB0byBwbGF0Zm9ybUxheWVyLT5ncmFwaGljc1N1cmZhY2VU
b2tlbigpLCBldmVuIGlmIG1fY2FudmFzUGxhdGZvcm1MYXllciBlcXVhbHMgcGxhdGZvcm1MYXll
ci4KKyAgICAgICAgaWYgKG1fY2FudmFzVG9rZW4gIT0gcGxhdGZvcm1MYXllci0+Z3JhcGhpY3NT
dXJmYWNlVG9rZW4oKSkgeworICAgICAgICAgICAgbV9jYW52YXNOZWVkc1JlbW92ZSA9IHRydWU7
CisgICAgICAgICAgICBtX2NhbnZhc05lZWRzQ3JlYXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIGlmIChwbGF0Zm9ybUxheWVyKQorICAgICAgICAgICAgbV9jYW52
YXNOZWVkc0NyZWF0ZSA9IHRydWU7CisgICAgfQorCiAgICAgbV9jYW52YXNQbGF0Zm9ybUxheWVy
ID0gcGxhdGZvcm1MYXllcjsKLSAgICBtX2NhbnZhc05lZWRzRGlzcGxheSA9IHRydWU7CisgICAg
Ly8gbV9jYW52YXNUb2tlbiBpcyB1cGRhdGVkIG9ubHkgaGVyZS4gSW4gZGV0YWlsLCB3aGVuIEdy
YXBoaWNzQ29udGV4dDNEIGlzIGNoYW5nZWQgb3IgcmVzaGFwZWQsIG1fY2FudmFzVG9rZW4gaXMg
Y2hhbmdlZCBhbmQgc2V0Q29udGVudHNUb0NhbnZhcygpIGlzIGFsd2F5cyBjYWxsZWQuCisgICAg
bV9jYW52YXNUb2tlbiA9IG1fY2FudmFzUGxhdGZvcm1MYXllciA/IG1fY2FudmFzUGxhdGZvcm1M
YXllci0+Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKSA6IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7Cisg
ICAgQVNTRVJUKCEoIW1fY2FudmFzVG9rZW4uaXNWYWxpZCgpICYmIG1fY2FudmFzUGxhdGZvcm1M
YXllcikpOworICAgIGlmIChtX2NhbnZhc1BsYXRmb3JtTGF5ZXIpCisgICAgICAgIG1fY2FudmFz
TmVlZHNEaXNwbGF5ID0gdHJ1ZTsKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgp
LT5ub3RpZnlGbHVzaFJlcXVpcmVkKHRoaXMpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCkBAIC01MzAsMTkgKzU1MSw0MCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c3luY0FuaW1hdGlvbnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6
c3luY0NhbnZhcygpCiB7CisgICAgcmVtb3ZlQ2FudmFzSWZOZWVkZWQoKTsKKyAgICBjcmVhdGVD
YW52YXNJZk5lZWRlZCgpOworCiAgICAgaWYgKCFtX2NhbnZhc05lZWRzRGlzcGxheSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKCFtX2NhbnZhc1BsYXRmb3JtTGF5ZXIpCisgICAgQVNTRVJU
KG1fY2FudmFzUGxhdGZvcm1MYXllcik7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAg
bV9jb29yZGluYXRvci0+c3luY0NhbnZhcyhtX2lkLCBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIpOwor
I2VuZGlmCisgICAgbV9jYW52YXNOZWVkc0Rpc3BsYXkgPSBmYWxzZTsKK30KKwordm9pZCBDb29y
ZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnJlbW92ZUNhbnZhc0lmTmVlZGVkKCkKK3sKKyAgICBpZiAo
IW1fY2FudmFzTmVlZHNSZW1vdmUpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShHUkFQSElD
U19TVVJGQUNFKQotICAgIHVpbnQzMl90IGZyb250QnVmZmVyID0gbV9jYW52YXNQbGF0Zm9ybUxh
eWVyLT5jb3B5VG9HcmFwaGljc1N1cmZhY2UoKTsKLSAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiB0
b2tlbiA9IG1fY2FudmFzUGxhdGZvcm1MYXllci0+Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAg
ICBtX2Nvb3JkaW5hdG9yLT5yZW1vdmVDYW52YXMobV9pZCk7CisjZW5kaWYKKyAgICBtX2NhbnZh
c05lZWRzUmVtb3ZlID0gZmFsc2U7Cit9CiAKLSAgICBtX2Nvb3JkaW5hdG9yLT5zeW5jQ2FudmFz
KG1faWQsIEludFNpemUoc2l6ZSgpLndpZHRoKCksIHNpemUoKS5oZWlnaHQoKSksIHRva2VuLCBm
cm9udEJ1ZmZlcik7Cit2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6Y3JlYXRlQ2FudmFz
SWZOZWVkZWQoKQoreworICAgIGlmICghbV9jYW52YXNOZWVkc0NyZWF0ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKG1fY2FudmFzUGxhdGZvcm1MYXllcik7CisjaWYgVVNFKEdSQVBI
SUNTX1NVUkZBQ0UpCisgICAgbV9jb29yZGluYXRvci0+Y3JlYXRlQ2FudmFzKG1faWQsIG1fY2Fu
dmFzUGxhdGZvcm1MYXllcik7CiAjZW5kaWYKLSAgICBtX2NhbnZhc05lZWRzRGlzcGxheSA9IGZh
bHNlOworICAgIG1fY2FudmFzTmVlZHNDcmVhdGUgPSBmYWxzZTsKIH0KIAogdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXI6OmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNz
TGF5ZXIuaAppbmRleCA3ZTBkOGVmYjg5YjljYzVmMWJlNDBjNmViYjRkNTNlOTg2NmIwNTFkLi5i
OWM0YTdhODdkZmIzY2U3NTc2MmU0NDA4ZDEzNzk5NWIwNmIzYmQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaApAQCAtMjcs
NyArMjcsNiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJHcmFwaGlj
c0xheWVyQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllclRyYW5zZm9ybS5oIgot
I2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCiAjaW5jbHVk
ZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgpAQCAtMzcsNiArMzYs
OSBAQAogI2luY2x1ZGUgIlVwZGF0ZUluZm8uaCIKICNpbmNsdWRlICJXZWJMYXllclRyZWVJbmZv
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQor
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KKyNlbmRpZgogI2luY2x1
ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
IApAQCAtNjQsNyArNjYsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNMYXllckZp
bHRlcnMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpID0gMDsK
ICNlbmRpZgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHZpcnR1YWwgdm9pZCBzeW5j
Q2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNhbnZhc1NpemUsIGNv
bnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiwgdWludDMyX3QgZnJvbnRCdWZmZXIp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQ2FudmFzKFdlYkxheWVySUQsIFdlYkNvcmU6
OlBsYXRmb3JtTGF5ZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoV2ViTGF5
ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1MYXllciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2FudmFzKFdlYkxheWVySUQpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNl
dExheWVyQW5pbWF0aW9ucyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
QW5pbWF0aW9ucyYpID0gMDsKQEAgLTE4OSw2ICsxOTMsOSBAQCBwcml2YXRlOgogICAgIC8vIENv
b3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpMYXllckNsaWVudAogICAgIHZpcnR1YWwgYm9vbCBpbWFn
ZUJhY2tpbmdWaXNpYmxlKCkgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHJlbW92ZUNhbnZhc0lmTmVl
ZGVkKCk7CisgICAgdm9pZCBjcmVhdGVDYW52YXNJZk5lZWRlZCgpOworCiAgICAgYm9vbCBzZWxm
T3JBbmNlc3RvckhhdmVOb25BZmZpbmVUcmFuc2Zvcm1zKCk7CiAgICAgYm9vbCBzaG91bGRVc2VU
aWxlZEJhY2tpbmdTdG9yZSgpOwogICAgIHZvaWQgYWRqdXN0Q29udGVudHNTY2FsZSgpOwpAQCAt
MjEyLDYgKzIxOSw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNBbmltYXRpb25z
OiAxOwogICAgIGJvb2wgbV9maXhlZFRvVmlld3BvcnQgOiAxOwogICAgIGJvb2wgbV9jYW52YXNO
ZWVkc0Rpc3BsYXkgOiAxOworICAgIGJvb2wgbV9jYW52YXNOZWVkc0NyZWF0ZSA6IDE7CisgICAg
Ym9vbCBtX2NhbnZhc05lZWRzUmVtb3ZlIDogMTsKIAogICAgIFdlYktpdDo6Q29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyQ2xpZW50KiBtX2Nvb3JkaW5hdG9yOwogICAgIE93blB0cjxUaWxlZEJhY2tp
bmdTdG9yZT4gbV9tYWluQmFja2luZ1N0b3JlOwpAQCAtMjIzLDYgKzIzMiw5IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFdlYktpdDo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IG1fY29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc7CiAKICAgICBQbGF0Zm9ybUxheWVyKiBtX2NhbnZhc1BsYXRmb3JtTGF5
ZXI7CisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4g
bV9jYW52YXNUb2tlbjsKKyNlbmRpZgogICAgIFRpbWVyPENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cj4gbV9hbmltYXRpb25TdGFydGVkVGltZXI7CiAgICAgR3JhcGhpY3NMYXllckFuaW1hdGlvbnMg
bV9hbmltYXRpb25zOwogICAgIGRvdWJsZSBtX2xhc3RBbmltYXRpb25TdGFydFRpbWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKaW5k
ZXggMmU5OGJlMWY3ZGJiZGU0NTYwZTRhZWM4ODcyZGRhNDgyM2Y2MzEzOS4uNmNjOWVlNDMxMzY5
MDYxNTM3N2VhNDQyNzRhOWVmYWYxOTY2OWRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtNDIsMTIgKzQyLDE0IEBACiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0dy
YXBoaWNzU3VyZmFjZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVuZGVyTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyQmFja2lu
Zy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZW5kZXJWaWV3Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaD4KICNpbmNsdWRl
IDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+CiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCkBAIC0z
MjIsMTAgKzMyNCwyOCBAQCB2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5jTGF5ZXJDaGls
ZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBWZWN0b3I8V2ViTGF5ZQogfQogCiAjaWYgVVNFKEdS
QVBISUNTX1NVUkZBQ0UpCi12b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5jQ2FudmFzKFdl
YkxheWVySUQgaWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IEdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCit2b2lkIExheWVyVHJlZUNv
b3JkaW5hdG9yOjpjcmVhdGVDYW52YXMoV2ViTGF5ZXJJRCBpZCwgUGxhdGZvcm1MYXllciogY2Fu
dmFzUGxhdGZvcm1MYXllcikKIHsKICAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpTeW5j
Q2FudmFzKGlkLCBjYW52YXNTaXplLCB0b2tlbiwgZnJvbnRCdWZmZXIpKTsKKyAgICBHcmFwaGlj
c1N1cmZhY2VUb2tlbiB0b2tlbiA9IGNhbnZhc1BsYXRmb3JtTGF5ZXItPmdyYXBoaWNzU3VyZmFj
ZVRva2VuKCk7CisgICAgSW50U2l6ZSBjYW52YXNTaXplID0gY2FudmFzUGxhdGZvcm1MYXllci0+
cGxhdGZyb21MYXllclNpemUoKTsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkxheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHk6OkNyZWF0ZUNhbnZhcyhpZCwgY2FudmFzU2l6ZSwgdG9rZW4p
KTsKK30KKwordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6c3luY0NhbnZhcyhXZWJMYXllcklE
IGlkLCBQbGF0Zm9ybUxheWVyKiBjYW52YXNQbGF0Zm9ybUxheWVyKQoreworICAgIG1fc2hvdWxk
U3luY0ZyYW1lID0gdHJ1ZTsKKyAgICB1aW50MzJfdCBmcm9udEJ1ZmZlciA9IGNhbnZhc1BsYXRm
b3JtTGF5ZXItPmNvcHlUb0dyYXBoaWNzU3VyZmFjZSgpOworICAgIG1fd2ViUGFnZS0+c2VuZChN
ZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6U3luY0NhbnZhcyhpZCwgZnJvbnRC
dWZmZXIpKTsKK30KKwordm9pZCBMYXllclRyZWVDb29yZGluYXRvcjo6cmVtb3ZlQ2FudmFzKFdl
YkxheWVySUQgaWQpCit7CisgICAgaWYgKG1faXNQdXJnaW5nKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3Nob3VsZFN5bmNGcmFtZSA9IHRydWU7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3Nh
Z2VzOjpMYXllclRyZWVDb29yZGluYXRvclByb3h5OjpSZW1vdmVDYW52YXMoaWQpKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuaAppbmRleCBmZGRlNDkxNWZiZGE1N2M4YzM3NDkxNTE4MDc2MGY3ZmI0Y2IxN2Q2Li5iYzQ1
YjVjMjZhNGU2ZjZkNWU5MzIzZDM4Y2I2YWE0MjVmN2NmNzdkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAgLTMwLDcgKzMwLDYgQEAK
ICNpbmNsdWRlICJVcGRhdGVBdGxhcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXll
ckNsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllckZhY3RvcnkuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIu
aD4KIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKQEAgLTk3LDcgKzk2LDkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzeW5jTGF5ZXJGaWx0ZXJzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKICNlbmRpZgogI2lmIFVTRShHUkFQSElDU19TVVJGQUNF
KQotICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIGNhbnZhc1NpemUsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2Vu
JiwgdWludDMyX3QgZnJvbnRCdWZmZXIpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjcmVh
dGVDYW52YXMoV2ViTGF5ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1MYXllciopIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVySUQsIFdlYkNvcmU6OlBsYXRmb3Jt
TGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2FudmFzKFdlYkxheWVy
SUQpIE9WRVJSSURFOwogI2VuZGlmCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKFdlYkNv
cmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jRml4
ZWRMYXllcnMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175042</attachid>
            <date>2012-11-19 14:37:47 -0800</date>
            <delta_ts>2012-11-19 14:55:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-102664-20121120073526.patch</filename>
            <type>text/plain</type>
            <size>27536</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmU3NDU3YzFhM2M5Zjhi
MTNmYTNjNzM4ZWQ1NTA5YzQyNTdkMWZkYS4uZGJlOTdkM2ZhNGZlMzBmNTE2ZDMwNGI3ZmU4NmU5
MGY4ZWRlZjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTExLTE5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5h
dGVkIEdyYXBoaWNzOiByZWZhY3RvciBzeW5jQ2FudmFzIHRvIGhhbmRsZSB0aGUgbGlmZWN5Y2xl
IGNsZWFybHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDI2NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAg
ICBBcyByZWZhY3RvcmluZyBDb29yZGluYXRlZCBHcmFwaGljcyBpbiBXZWJLaXQyLCBjb2RlIHJl
bGF0ZWQgdG8KKyAgICAgICAgVGV4dHVyZU1hcHBlciBpcyBjaGFuZ2VkLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gUmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
cGxhdGZvcm1MYXllclNpemUpOgorICAgICAgICAgICAgV2UgbmVlZCB0byBrbm93IHRoZSBzaXpl
IG9mIGEgdGV4dHVyZSBtYXBwZXIgcGxhdGZvcm0gbGF5ZXIuCisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdT
dG9yZS5jcHA6CisgICAgICAgICAgQmVjYXVzZSBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIgaGFu
ZGxlcyB0aGUgY2FudmFzIEdyYXBoaWNzU3VyZmFjZQorICAgICAgICAgIGxpZmVjeWNsZSwgVGV4
dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUgZG9lcyBub3QgbmVlZCB0byBrbm93CisgICAg
ICAgICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4uCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpzd2FwQnVmZmVyc0lmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3Jl
OjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFRleHR1cmVNYXBwZXJT
dXJmYWNlQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyOjpwbGF0Zm9ybUxheWVyU2l6ZSk6CisKIDIwMTItMTEtMTkgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHIxMzUxMTQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2Q1Y2VjYmZlNTgzYzJkNzJmMDg4
MDQ4MzE3ZWZhZjg2NTNlZmE2NS4uY2MxZTZkZDZkMTk3OGQyYmFmNjNiYTcyZjMzYzExZjQ4MzQx
ZDE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTExLTE5ICBIdWFuZyBEb25n
c3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIENvb3JkaW5hdGVkIEdy
YXBoaWNzOiByZWZhY3RvciBzeW5jQ2FudmFzIHRvIGhhbmRsZSB0aGUgbGlmZWN5Y2xlIGNsZWFy
bHkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOb2FtIFJvc2VudGhhbC4KKworICAgICAgICBUaGlz
IHBhdGNoIG1ha2VzIHN5bmMgY2FudmFzIGNvZGUgaGFuZGxlIHRoZSBsaWZlY3ljbGUgb2YgdGhl
IGNhbnZhcworICAgICAgICBHcmFwaGljc1N1cmZhY2UgaW4gdGhlIHNpbWlsYXIgc3R5bGUgdG8g
YSBkaXJlY3RseSBpbWFnZSBjb21wb3NpdGluZyBhbmQKKyAgICAgICAgYW4gdXBkYXRlIGF0bGFz
IGNvZGUuIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIGNhbnZhcyBsaWZlY3ljbGUgaGFuZGxpbmcKKyAg
ICAgICAgY29kZSBmcm9tIExheWVyVHJlZVJlbmRlcmVyIHRvIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllciwgYmVjYXVzZQorICAgICAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIga25vd3MgYmVz
dCB3aGVuIHRvIGNyZWF0ZSBhbmQgcmVtb3ZlIHRoZSBjYW52YXMKKyAgICAgICAgR3JhcGhpY3NT
dXJmYWNlLgorCisgICAgICAgIEFmdGVyIHRoaXMgcGF0Y2gsIHdlIGNhbiByZW1vdmUgdGhlIGNh
bnZhcyBHcmFwaGljc1N1cmZhY2UgaW4gVUkgUHJvY2VzcyBhcyBzb29uCisgICAgICAgIGFzIHRo
ZSBjYW52YXMgcGxhdGZvcm0gbGF5ZXIgaXMgdW5zZXQgaW4gV2ViIFByb2Nlc3MuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6Y3Jl
YXRlQ2FudmFzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJl
ZUNvb3JkaW5hdG9yUHJveHk6OnN5bmNDYW52YXMpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRy
ZWVDb29yZGluYXRvclByb3h5OjpkZXN0cm95Q2FudmFzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAg
IChMYXllclRyZWVDb29yZGluYXRvclByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlUmVuZGVyZXI6OmNyZWF0ZUNhbnZhcyk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVSZW5kZXJlcjo6c3lu
Y0NhbnZhcyk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZVJlbmRlcmVyOjpkZXN0cm95Q2Fu
dmFzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVS
ZW5kZXJlci5oOgorICAgICAgICAoTGF5ZXJUcmVlUmVuZGVyZXIpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXll
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzTmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYkNvcmU6OkNv
b3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c2V0Q29udGVudHNUb0NhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnN5bmNDYW52YXMpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OmRl
c3Ryb3lDYW52YXNJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OmNyZWF0ZUNhbnZhc0lmTmVlZGVkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaDoKKyAg
ICAgICAgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudCk6CisgICAgICAgIChDb29yZGlu
YXRlZEdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmNyZWF0ZUNhbnZhcyk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6c3luY0NhbnZhcyk6CisgICAg
ICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpkZXN0cm95Q2FudmFzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvci5oOgorICAgICAgICAoTGF5ZXJUcmVlQ29vcmRpbmF0b3IpOgorCiAyMDEyLTExLTE4
ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIENv
b3JkaW5hdGVkIEdyYXBoaWNzOiBSZW1vdmUgYSB0ZXh0dXJlIGlmIGFuIGRpcmVjdCBjb21wb3Np
dGVkIGltYWdlIGlzIG9mZiB0aGUgdmlld3BvcnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCmluZGV4
IDQzZWE3NWJkY2Q0YTMxNTYxN2ZjYzQyOTY3YjMyN2NjNDdjZTJiYWUuLjcxNWQxYjVlOTA2MmI3
ZmIwNGJmZTAxY2VkZTU0MWRmOTk0NDhiYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC02
OCw2ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHksIEJpdG1hcFRleHR1cmUqIG1hc2spOwogI2Vu
ZGlmCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdmlydHVhbCBJbnRTaXplIHBsYXRm
b3JtTGF5ZXJTaXplKCkgY29uc3Q7CiAgICAgdmlydHVhbCB1aW50MzJfdCBjb3B5VG9HcmFwaGlj
c1N1cmZhY2UoKTsKICAgICB2aXJ0dWFsIEdyYXBoaWNzU3VyZmFjZVRva2VuIGdyYXBoaWNzU3Vy
ZmFjZVRva2VuKCkgY29uc3Q7CiAjZW5kaWYKQEAgLTI3Nyw2ICsyNzgsMTEgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZXIKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK0ludFNpemUgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwbGF0Zm9ybUxheWVyU2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIEludFNpemUobV9j
b250ZXh0LT5tX2N1cnJlbnRXaWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOworfQor
CiB1aW50MzJfdCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNvcHlUb0dyYXBoaWNzU3VyZmFj
ZSgpCiB7CiAgICAgaWYgKCFtX2dyYXBoaWNzU3VyZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyQmFja2luZ1N0b3JlLmNwcAppbmRleCBmZjk2ZjE2OGMyNDBhOGZjYTRlNzlmZWNjN2YyYjg2
NzU5NTliMDc4Li41OWQyZTA1ZjlkNTI1ZWVmODBkNGY2YjI5YWRlNDM0MTE4ODNmY2JlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuY3BwCkBAIC0zNCwxOSArMzQsMTUg
QEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotdm9p
ZCBUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKGNv
bnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiBncmFwaGljc1N1cmZhY2VUb2tlbiwgY29uc3QgSW50
U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVmZmVyKQordm9pZCBUZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6c2V0R3JhcGhpY3NTdXJmYWNlKFBhc3NSZWZQdHI8R3Jh
cGhpY3NTdXJmYWNlPiBzdXJmYWNlKQogewotICAgIGlmIChncmFwaGljc1N1cmZhY2VUb2tlbiAh
PSBtX2dyYXBoaWNzU3VyZmFjZVRva2VuKSB7Ci0gICAgICAgIEdyYXBoaWNzU3VyZmFjZTo6Rmxh
Z3Mgc3VyZmFjZUZsYWdzID0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1RleHR1cmVUYXJnZXQK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHcmFwaGljc1N1
cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKLSAgICAgICAgc2V0U3VyZmFjZShHcmFwaGljc1N1cmZh
Y2U6OmNyZWF0ZShzdXJmYWNlU2l6ZSwgc3VyZmFjZUZsYWdzLCBncmFwaGljc1N1cmZhY2VUb2tl
bikpOwotICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZVNpemUgPSBzdXJmYWNlU2l6ZTsKLSAgICB9
Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPiBzdXJmYWNlID0gZ3JhcGhp
Y3NTdXJmYWNlKCk7Ci0gICAgaWYgKHN1cmZhY2UgJiYgc3VyZmFjZS0+ZnJvbnRCdWZmZXIoKSAh
PSBmcm9udEJ1ZmZlcikKLSAgICAgICAgc3VyZmFjZS0+c3dhcEJ1ZmZlcnMoKTsKKyAgICBtX2dy
YXBoaWNzU3VyZmFjZSA9IHN1cmZhY2U7Cit9CiAKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OnN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpCit7
CisgICAgaWYgKG1fZ3JhcGhpY3NTdXJmYWNlICYmIG1fZ3JhcGhpY3NTdXJmYWNlLT5mcm9udEJ1
ZmZlcigpICE9IGZyb250QnVmZmVyKQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZS0+c3dhcEJ1
ZmZlcnMoKTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyU3Vy
ZmFjZUJhY2tpbmdTdG9yZTo6dGV4dHVyZSgpIGNvbnN0CkBAIC02MSwxNyArNTcsNiBAQCB2b2lk
IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dQogICAgIGlmIChtX2dyYXBoaWNzU3VyZmFjZSkKICAgICAgICAg
bV9ncmFwaGljc1N1cmZhY2UtPnBhaW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRh
cmdldFJlY3QsIHRyYW5zZm9ybSwgb3BhY2l0eSwgbWFzayk7CiB9Ci0KLXZvaWQgVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnNldFN1cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1
cmZhY2U+IHN1cmZhY2UpCi17Ci0gICAgaWYgKHN1cmZhY2UpIHsKLSAgICAgICAgbV9ncmFwaGlj
c1N1cmZhY2UgPSBzdXJmYWNlOwotICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZVRva2VuID0gbV9n
cmFwaGljc1N1cmZhY2UtPmV4cG9ydFRva2VuKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbV9n
cmFwaGljc1N1cmZhY2UgPSBSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPigpOwotICAgICAgICBtX2dy
YXBoaWNzU3VyZmFjZVRva2VuID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKLSAgICB9Ci19CiAj
ZW5kaWYKIAogdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCA5Y2E2YTgyZWY4MWE4
NDUxZWJjZWZiNTE0MGU0MTI5N2ZjNDQ4ZTc3Li5mYmVkYzA0MThiYmFlYmZhZDQwYmIwODU3YWMw
MDZlYmI4MTMxYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAg
LTUwLDIzICs1MCwxOCBAQCBwcm90ZWN0ZWQ6CiBjbGFzcyBUZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZSA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZT4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2lu
Z1N0b3JlKTsgfQotICAgIHZvaWQgc2V0R3JhcGhpY3NTdXJmYWNlKGNvbnN0IEdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiwgY29uc3QgSW50U2l6ZSYgc3VyZmFjZVNpemUsIHVpbnQzMl90IGZyb250QnVm
ZmVyKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gZ3JhcGhpY3NT
dXJmYWNlKCkgY29uc3QgeyByZXR1cm4gbV9ncmFwaGljc1N1cmZhY2U7IH0KKyAgICB2b2lkIHNl
dEdyYXBoaWNzU3VyZmFjZShQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4pOworICAgIHZvaWQg
c3dhcEJ1ZmZlcnNJZk5lZWRlZCh1aW50MzJfdCBmcm9udEJ1ZmZlcik7CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIEJpdG1hcFRleHR1cmUqKTsKICAg
ICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZSgpIHsgfQogCi1wcm90
ZWN0ZWQ6Ci0gICAgdm9pZCBzZXRTdXJmYWNlKFBhc3NSZWZQdHI8R3JhcGhpY3NTdXJmYWNlPik7
Ci0KIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKQogICAg
ICAgICA6IFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUoKQogICAgICAgICB7IH0KIAotICAgIEdy
YXBoaWNzU3VyZmFjZVRva2VuIG1fZ3JhcGhpY3NTdXJmYWNlVG9rZW47Ci0gICAgUmVmUHRyPFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7Ci0gICAgSW50U2l6ZSBt
X2dyYXBoaWNzU3VyZmFjZVNpemU7CisgICAgUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gbV9ncmFw
aGljc1N1cmZhY2U7CiB9OwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgKaW5kZXggZGIzZjBiZWM2YmQ2OWIxZGVjZDY0YjgyYjNlOGI1MGU2ZmE2OTAwMS4u
MzhhZjAzZTg5YjYyNDgxYWJhZjMyMDk4YzNhODE3YWI0ZDAwMGMxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgKQEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjAsIEJpdG1hcFRleHR1
cmUqIG1hc2sgPSAwKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9CiAj
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisgICAgdmlydHVhbCBJbnRTaXplIHBsYXRmb3JtTGF5
ZXJTaXplKCkgY29uc3QgeyByZXR1cm4gSW50U2l6ZSgpOyB9CiAgICAgdmlydHVhbCB1aW50MzJf
dCBjb3B5VG9HcmFwaGljc1N1cmZhY2UoKSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBHcmFw
aGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IHsgcmV0dXJuIEdy
YXBoaWNzU3VyZmFjZVRva2VuKCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmNwcAppbmRleCA1YWFkOTk2YTM4ZGMxMmI2NzM1NDY5NzZm
MzJiMjE0ZmJlOGI4NDcxLi41Y2ZhZjYxMDliN2MxMTNhMzhhODhkYjA5NWVjMzEyMTgwNTVkOGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcApA
QCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgogCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQog
I2luY2x1ZGUgIkN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgiCkBAIC0yMjAsOSArMjIxLDIwIEBA
IHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkQ2hhbmdlU2Nyb2xsUG9zaXRpb24o
Y29uc3QgSW50UG9pbnQmIHBvc2l0aW9uCiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
LXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6c3luY0NhbnZhcyh1aW50MzJfdCBpZCwg
Y29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRv
a2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eTo6Y3JlYXRlQ2FudmFzKFdlYkxheWVySUQgaWQsIGNvbnN0IEludFNpemUmIGNhbnZhc1NpemUs
IGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKIHsKLSAgICBkaXNwYXRjaFVwZGF0
ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6c3luY0NhbnZhcywgbV9yZW5kZXJlci5nZXQoKSwg
aWQsIGNhbnZhc1NpemUsIHRva2VuLCBmcm9udEJ1ZmZlcikpOworICAgIEdyYXBoaWNzU3VyZmFj
ZTo6RmxhZ3Mgc3VyZmFjZUZsYWdzID0gR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1RleHR1cmVU
YXJnZXQgfCBHcmFwaGljc1N1cmZhY2U6OlN1cHBvcnRzU2hhcmluZzsKKyAgICBkaXNwYXRjaFVw
ZGF0ZShiaW5kKCZMYXllclRyZWVSZW5kZXJlcjo6Y3JlYXRlQ2FudmFzLCBtX3JlbmRlcmVyLmdl
dCgpLCBpZCwgY2FudmFzU2l6ZSwgR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUoY2FudmFzU2l6ZSwg
c3VyZmFjZUZsYWdzLCB0b2tlbikpKTsKK30KKwordm9pZCBMYXllclRyZWVDb29yZGluYXRvclBy
b3h5OjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIHVpbnQzMl90IGZyb250QnVmZmVyKQorewor
ICAgIGRpc3BhdGNoVXBkYXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpzeW5jQ2FudmFzLCBt
X3JlbmRlcmVyLmdldCgpLCBpZCwgZnJvbnRCdWZmZXIpKTsKK30KKwordm9pZCBMYXllclRyZWVD
b29yZGluYXRvclByb3h5OjpkZXN0cm95Q2FudmFzKFdlYkxheWVySUQgaWQpCit7CisgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmRlc3Ryb3lDYW52YXMsIG1fcmVu
ZGVyZXIuZ2V0KCksIGlkKSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJU
cmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IDg1YjA4Y2FhY2UyMGIyM2Y1NzJhOWJiY2U4Mzhh
YTBkYzE0ZGUzOTEuLjgzOGFiMWI3NmM5OTc4YWM5NmQwZjIwZmNjMzZkNmIwYjBhM2M0NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTgxLDcg
KzgxLDkgQEAgcHVibGljOgogICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7CiAgICAgdm9pZCBk
aWRDaGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24p
OwogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHZvaWQgc3luY0NhbnZhcyh1aW50MzJf
dCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisgICAgdm9pZCBj
cmVhdGVDYW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIGNvbnN0IFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7CisgICAgdm9pZCBzeW5jQ2FudmFzKFdlYkxh
eWVySUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAgICB2b2lkIGRlc3Ryb3lDYW52YXMoV2Vi
TGF5ZXJJRCk7CiAjZW5kaWYKICAgICB2b2lkIHB1cmdlQmFja2luZ1N0b3JlcygpOwogICAgIExh
eWVyVHJlZVJlbmRlcmVyKiBsYXllclRyZWVSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fcmVu
ZGVyZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGY2Yjk0ZTQxM2Y1MGIxYzlhODQ0OGUxNGRi
Y2VmYWRhZGE4ZTlkNGUuLmQzN2MzZTU2YjUwYWUxZGEzNWRmYjhjNjg3MTYzYzM1NWQzNWFmNmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94
eS5tZXNzYWdlcy5pbgpAQCAtNDksNyArNDksOSBAQCBtZXNzYWdlcyAtPiBMYXllclRyZWVDb29y
ZGluYXRvclByb3h5IHsKICNlbmRpZgogCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAg
U3luY0NhbnZhcyh1aW50MzJfdCBpZCwgV2ViQ29yZTo6SW50U2l6ZSBjYW52YXNTaXplLCBXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tlbiwgdWludDMyX3QgZnJvbnRCdWZmZXIpCisg
ICAgQ3JlYXRlQ2FudmFzKHVpbnQzMl90IGlkLCBXZWJDb3JlOjpJbnRTaXplIGNhbnZhc1NpemUs
IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuIHRva2VuKQorICAgIFN5bmNDYW52YXModWlu
dDMyX3QgaWQsIHVpbnQzMl90IGZyb250QnVmZmVyKQorICAgIERlc3Ryb3lDYW52YXModWludDMy
X3QgaWQpCiAjZW5kaWYKIAogICAgIFNldEJhY2tncm91bmRDb2xvcihXZWJDb3JlOjpDb2xvciBj
b2xvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVyLmNwcAppbmRleCA3YTZkZTRhMzIz
MDQ5MGUwMDlmOTAyOTQzMGQ5OTIzNDY2ZTYwYzU3Li4yMGEzMWY1MDRmMTk3NzE0ZGUzNzUwOTVk
NTBkOGU3YjEwYTk0OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29v
cmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuY3BwCkBA
IC0yNDIsMjUgKzI0Miw0MSBAQCB2b2lkIExheWVyVHJlZVJlbmRlcmVyOjpkaWRDaGFuZ2VTY3Jv
bGxQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB9CiAKICNpZiBVU0UoR1JBUEhJ
Q1NfU1VSRkFDRSkKLXZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJ
RCBpZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgR3JhcGhpY3NT
dXJmYWNlVG9rZW4mIHRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVl
UmVuZGVyZXI6OmNyZWF0ZUNhbnZhcyhXZWJMYXllcklEIGlkLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiBjYW52YXNTaXplLCBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gc3VyZmFjZSkKIHsK
LSAgICBpZiAoY2FudmFzU2l6ZS5pc0VtcHR5KCkgfHwgIW1fdGV4dHVyZU1hcHBlcikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgZW5zdXJlTGF5ZXIoaWQpOworICAgIEFTU0VSVChtX3RleHR1cmVN
YXBwZXIpOwogICAgIEdyYXBoaWNzTGF5ZXIqIGxheWVyID0gbGF5ZXJCeUlEKGlkKTsKKyAgICBB
U1NFUlQobGF5ZXIpOworICAgIEFTU0VSVCghbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5jb250YWlu
cyhpZCkpOwogCi0gICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBj
YW52YXNCYWNraW5nU3RvcmU7Ci0gICAgU3VyZmFjZUJhY2tpbmdTdG9yZU1hcDo6aXRlcmF0b3Ig
aXQgPSBtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmZpbmQoaWQpOwotICAgIGlmIChpdCA9PSBtX3N1
cmZhY2VCYWNraW5nU3RvcmVzLmVuZCgpKSB7Ci0gICAgICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9
IFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlOjpjcmVhdGUoKTsKLSAgICAgICAgbV9z
dXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQoaWQsIGNhbnZhc0JhY2tpbmdTdG9yZSk7Ci0gICAgfSBl
bHNlCi0gICAgICAgIGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZTsKKyAgICBSZWZQdHI8
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU+IGNhbnZhc0JhY2tpbmdTdG9yZShUZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZTo6Y3JlYXRlKCkpOworICAgIG1fc3VyZmFjZUJh
Y2tpbmdTdG9yZXMuc2V0KGlkLCBjYW52YXNCYWNraW5nU3RvcmUpOwogCi0gICAgY2FudmFzQmFj
a2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UodG9rZW4sIGNhbnZhc1NpemUsIGZyb250QnVm
ZmVyKTsKKyAgICBjYW52YXNCYWNraW5nU3RvcmUtPnNldEdyYXBoaWNzU3VyZmFjZShzdXJmYWNl
KTsKICAgICBsYXllci0+c2V0Q29udGVudHNUb01lZGlhKGNhbnZhc0JhY2tpbmdTdG9yZS5nZXQo
KSk7CiB9CisKK3ZvaWQgTGF5ZXJUcmVlUmVuZGVyZXI6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBp
ZCwgdWludDMyX3QgZnJvbnRCdWZmZXIpCit7CisgICAgQVNTRVJUKG1fdGV4dHVyZU1hcHBlcik7
CisgICAgQVNTRVJUKG1fc3VyZmFjZUJhY2tpbmdTdG9yZXMuY29udGFpbnMoaWQpKTsKKworICAg
IFN1cmZhY2VCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlQmFja2luZ1N0
b3Jlcy5maW5kKGlkKTsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3Rv
cmU+IGNhbnZhc0JhY2tpbmdTdG9yZSA9IGl0LT52YWx1ZTsKKworICAgIGNhbnZhc0JhY2tpbmdT
dG9yZS0+c3dhcEJ1ZmZlcnNJZk5lZWRlZChmcm9udEJ1ZmZlcik7Cit9CisKK3ZvaWQgTGF5ZXJU
cmVlUmVuZGVyZXI6OmRlc3Ryb3lDYW52YXMoV2ViTGF5ZXJJRCBpZCkKK3sKKyAgICBBU1NFUlQo
bV90ZXh0dXJlTWFwcGVyKTsKKyAgICBHcmFwaGljc0xheWVyKiBsYXllciA9IGxheWVyQnlJRChp
ZCk7CisgICAgQVNTRVJUKGxheWVyKTsKKyAgICBBU1NFUlQobV9zdXJmYWNlQmFja2luZ1N0b3Jl
cy5jb250YWlucyhpZCkpOworCisgICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUoaWQp
OworICAgIGxheWVyLT5zZXRDb250ZW50c1RvTWVkaWEoMCk7Cit9CiAjZW5kaWYKIAogdm9pZCBM
YXllclRyZWVSZW5kZXJlcjo6c2V0TGF5ZXJDaGlsZHJlbihXZWJMYXllcklEIGlkLCBjb25zdCBW
ZWN0b3I8V2ViTGF5ZXJJRD4mIGNoaWxkSURzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZVJlbmRlcmVy
LmgKaW5kZXggMzMyOTU0ODRlMmFmZTYwZmRmMzAyN2E4MDU1OThmM2M1NGM3OWU1MC4uM2E1ZWZm
NmZkM2I2Y2ZhNzUwZjk4YjI0MDg5YmY5MmFkNTE5N2RlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlUmVuZGVyZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVSZW5kZXJlci5oCkBAIC03NSw3ICs3NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFZpc2li
bGVDb250ZW50c1JlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAgICAgdm9pZCBkaWRD
aGFuZ2VTY3JvbGxQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24pOwog
I2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHZvaWQgc3luY0NhbnZhcyh1aW50MzJfdCBp
ZCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcik7CisgICAgdm9pZCBjcmVh
dGVDYW52YXMoV2ViTGF5ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIFBhc3NSZWZQdHI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlPik7CisgICAgdm9pZCBzeW5jQ2FudmFzKFdlYkxheWVy
SUQsIHVpbnQzMl90IGZyb250QnVmZmVyKTsKKyAgICB2b2lkIGRlc3Ryb3lDYW52YXMoV2ViTGF5
ZXJJRCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZGV0YWNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA5YTY3
NzliMzI5OWE0ZmMxNWNhM2UwZmIxNmQ0NmQyNDUwNDhkODUxLi4yNzY1OTRiYmJiNzgyOTQxY2Jl
OGNiMjZmYzQyZjBmMDU5YjgwMTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAKQEAgLTExNyw2ICsxMTcsOCBAQCBD
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihHcmFwaGlj
c0xheWVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3Nob3VsZFN5bmNBbmltYXRpb25zKHRydWUp
CiAgICAgLCBtX2ZpeGVkVG9WaWV3cG9ydChmYWxzZSkKICAgICAsIG1fY2FudmFzTmVlZHNEaXNw
bGF5KGZhbHNlKQorICAgICwgbV9jYW52YXNOZWVkc0NyZWF0ZShmYWxzZSkKKyAgICAsIG1fY2Fu
dmFzTmVlZHNEZXN0cm95KGZhbHNlKQogICAgICwgbV9jb29yZGluYXRvcigwKQogICAgICwgbV9j
b250ZW50c1NjYWxlKDEpCiAgICAgLCBtX2NvbXBvc2l0ZWROYXRpdmVJbWFnZVB0cigwKQpAQCAt
MzIyLDE3ICszMjQsMzggQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXI6OnNldENvbnRl
bnRzUmVjdChjb25zdCBJbnRSZWN0JiByKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXll
cjo6c2V0Q29udGVudHNOZWVkc0Rpc3BsYXkoKQogewotICAgIG1fY2FudmFzTmVlZHNEaXNwbGF5
ID0gdHJ1ZTsKKyAgICBpZiAobV9jYW52YXNQbGF0Zm9ybUxheWVyKQorICAgICAgICBtX2NhbnZh
c05lZWRzRGlzcGxheSA9IHRydWU7CiAgICAgaWYgKGNsaWVudCgpKQogICAgICAgICBjbGllbnQo
KS0+bm90aWZ5Rmx1c2hSZXF1aXJlZCh0aGlzKTsKIH0KIAogdm9pZCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXI6OnNldENvbnRlbnRzVG9DYW52YXMoUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXll
cikKIHsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBpZiAobV9jYW52YXNQbGF0Zm9y
bUxheWVyKSB7CisgICAgICAgIEFTU0VSVChtX2NhbnZhc1Rva2VuLmlzVmFsaWQoKSk7CisgICAg
ICAgIGlmICghcGxhdGZvcm1MYXllcikKKyAgICAgICAgICAgIG1fY2FudmFzTmVlZHNEZXN0cm95
ID0gdHJ1ZTsKKyAgICAgICAgZWxzZSBpZiAobV9jYW52YXNUb2tlbiAhPSBwbGF0Zm9ybUxheWVy
LT5ncmFwaGljc1N1cmZhY2VUb2tlbigpKSB7CisgICAgICAgICAgICAvLyBtX2NhbnZhc1Rva2Vu
IGNhbiBiZSBkaWZmZXJlbnQgdG8gcGxhdGZvcm1MYXllci0+Z3JhcGhpY3NTdXJmYWNlVG9rZW4o
KSwgZXZlbiBpZiBtX2NhbnZhc1BsYXRmb3JtTGF5ZXIgZXF1YWxzIHBsYXRmb3JtTGF5ZXIuCisg
ICAgICAgICAgICBtX2NhbnZhc05lZWRzRGVzdHJveSA9IHRydWU7CisgICAgICAgICAgICBtX2Nh
bnZhc05lZWRzQ3JlYXRlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IGlmIChwbGF0Zm9ybUxheWVyKQorICAgICAgICAgICAgbV9jYW52YXNOZWVkc0NyZWF0ZSA9IHRy
dWU7CisgICAgfQorCiAgICAgbV9jYW52YXNQbGF0Zm9ybUxheWVyID0gcGxhdGZvcm1MYXllcjsK
LSAgICBtX2NhbnZhc05lZWRzRGlzcGxheSA9IHRydWU7CisgICAgLy8gbV9jYW52YXNUb2tlbiBp
cyB1cGRhdGVkIG9ubHkgaGVyZS4gSW4gZGV0YWlsLCB3aGVuIEdyYXBoaWNzQ29udGV4dDNEIGlz
IGNoYW5nZWQgb3IgcmVzaGFwZWQsIG1fY2FudmFzVG9rZW4gaXMgY2hhbmdlZCBhbmQgc2V0Q29u
dGVudHNUb0NhbnZhcygpIGlzIGFsd2F5cyBjYWxsZWQuCisgICAgbV9jYW52YXNUb2tlbiA9IG1f
Y2FudmFzUGxhdGZvcm1MYXllciA/IG1fY2FudmFzUGxhdGZvcm1MYXllci0+Z3JhcGhpY3NTdXJm
YWNlVG9rZW4oKSA6IEdyYXBoaWNzU3VyZmFjZVRva2VuKCk7CisgICAgQVNTRVJUKCEoIW1fY2Fu
dmFzVG9rZW4uaXNWYWxpZCgpICYmIG1fY2FudmFzUGxhdGZvcm1MYXllcikpOworICAgIGlmICht
X2NhbnZhc1BsYXRmb3JtTGF5ZXIpCisgICAgICAgIG1fY2FudmFzTmVlZHNEaXNwbGF5ID0gdHJ1
ZTsKICAgICBpZiAoY2xpZW50KCkpCiAgICAgICAgIGNsaWVudCgpLT5ub3RpZnlGbHVzaFJlcXVp
cmVkKHRoaXMpOworI2VuZGlmCiB9CiAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCkBAIC01MzAs
MTkgKzU1Myw0MCBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0FuaW1hdGlv
bnMoKQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcjo6c3luY0NhbnZhcygpCiB7Cisg
ICAgZGVzdHJveUNhbnZhc0lmTmVlZGVkKCk7CisgICAgY3JlYXRlQ2FudmFzSWZOZWVkZWQoKTsK
KwogICAgIGlmICghbV9jYW52YXNOZWVkc0Rpc3BsYXkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmICghbV9jYW52YXNQbGF0Zm9ybUxheWVyKQorICAgIEFTU0VSVChtX2NhbnZhc1BsYXRmb3Jt
TGF5ZXIpOworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQorICAgIG1fY29vcmRpbmF0b3ItPnN5
bmNDYW52YXMobV9pZCwgbV9jYW52YXNQbGF0Zm9ybUxheWVyKTsKKyNlbmRpZgorICAgIG1fY2Fu
dmFzTmVlZHNEaXNwbGF5ID0gZmFsc2U7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xh
eWVyOjpkZXN0cm95Q2FudmFzSWZOZWVkZWQoKQoreworICAgIGlmICghbV9jYW52YXNOZWVkc0Rl
c3Ryb3kpCiAgICAgICAgIHJldHVybjsKIAogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAg
IHVpbnQzMl90IGZyb250QnVmZmVyID0gbV9jYW52YXNQbGF0Zm9ybUxheWVyLT5jb3B5VG9HcmFw
aGljc1N1cmZhY2UoKTsKLSAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiB0b2tlbiA9IG1fY2FudmFz
UGxhdGZvcm1MYXllci0+Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsKKyAgICBtX2Nvb3JkaW5hdG9y
LT5kZXN0cm95Q2FudmFzKG1faWQpOworI2VuZGlmCisgICAgbV9jYW52YXNOZWVkc0Rlc3Ryb3kg
PSBmYWxzZTsKK30KIAotICAgIG1fY29vcmRpbmF0b3ItPnN5bmNDYW52YXMobV9pZCwgSW50U2l6
ZShzaXplKCkud2lkdGgoKSwgc2l6ZSgpLmhlaWdodCgpKSwgdG9rZW4sIGZyb250QnVmZmVyKTsK
K3ZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpjcmVhdGVDYW52YXNJZk5lZWRlZCgpCit7
CisgICAgaWYgKCFtX2NhbnZhc05lZWRzQ3JlYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQobV9jYW52YXNQbGF0Zm9ybUxheWVyKTsKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVDYW52YXMobV9pZCwgbV9jYW52YXNQbGF0Zm9ybUxh
eWVyKTsKICNlbmRpZgotICAgIG1fY2FudmFzTmVlZHNEaXNwbGF5ID0gZmFsc2U7CisgICAgbV9j
YW52YXNOZWVkc0NyZWF0ZSA9IGZhbHNlOwogfQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCmluZGV4
IDdlMGQ4ZWZiODliOWNjNWYxYmU0MGM2ZWJiNGQ1M2U5ODY2YjA1MWQuLjU4Mzk2MjAyZDViMjYy
YWIxNWYyNGJhMWMxZjFmNDNlZWUwNDNiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5oCkBAIC0yNyw3ICsyNyw2IEBACiAj
aW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJBbmltYXRp
b24uaCIKICNpbmNsdWRlICJHcmFwaGljc0xheWVyVHJhbnNmb3JtLmgiCi0jaW5jbHVkZSAiR3Jh
cGhpY3NTdXJmYWNlLmgiCiAjaW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJJbnRTaXplLmgi
CiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCkBAIC0zNyw2ICszNiw5IEBACiAjaW5jbHVk
ZSAiVXBkYXRlSW5mby5oIgogI2luY2x1ZGUgIldlYkxheWVyVHJlZUluZm8uaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzLmgiCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc1N1cmZhY2VUb2tlbi5oPgorI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9S
dW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogCkBAIC02NCw3ICs2
Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyRmlsdGVycyhXZWJMYXll
cklELCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJikgPSAwOwogI2VuZGlmCiAjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgdmlydHVhbCB2b2lkIHN5bmNDYW52YXMoV2ViTGF5
ZXJJRCwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgV2ViQ29yZTo6
R3JhcGhpY3NTdXJmYWNlVG9rZW4mLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBjcmVhdGVDYW52YXMoV2ViTGF5ZXJJRCwgV2ViQ29yZTo6UGxhdGZvcm1MYXll
ciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0NhbnZhcyhXZWJMYXllcklELCBXZWJDb3Jl
OjpQbGF0Zm9ybUxheWVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95Q2FudmFzKFdl
YkxheWVySUQpID0gMDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHNldExheWVyQW5pbWF0
aW9ucyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQW5pbWF0aW9ucyYp
ID0gMDsKQEAgLTE4OSw2ICsxOTMsOSBAQCBwcml2YXRlOgogICAgIC8vIENvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nOjpMYXllckNsaWVudAogICAgIHZpcnR1YWwgYm9vbCBpbWFnZUJhY2tpbmdWaXNp
YmxlKCkgT1ZFUlJJREU7CiAKKyAgICB2b2lkIGRlc3Ryb3lDYW52YXNJZk5lZWRlZCgpOworICAg
IHZvaWQgY3JlYXRlQ2FudmFzSWZOZWVkZWQoKTsKKwogICAgIGJvb2wgc2VsZk9yQW5jZXN0b3JI
YXZlTm9uQWZmaW5lVHJhbnNmb3JtcygpOwogICAgIGJvb2wgc2hvdWxkVXNlVGlsZWRCYWNraW5n
U3RvcmUoKTsKICAgICB2b2lkIGFkanVzdENvbnRlbnRzU2NhbGUoKTsKQEAgLTIxMiw2ICsyMTks
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRTeW5jQW5pbWF0aW9uczogMTsKICAgICBi
b29sIG1fZml4ZWRUb1ZpZXdwb3J0IDogMTsKICAgICBib29sIG1fY2FudmFzTmVlZHNEaXNwbGF5
IDogMTsKKyAgICBib29sIG1fY2FudmFzTmVlZHNDcmVhdGUgOiAxOworICAgIGJvb2wgbV9jYW52
YXNOZWVkc0Rlc3Ryb3kgOiAxOwogCiAgICAgV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzTGF5
ZXJDbGllbnQqIG1fY29vcmRpbmF0b3I7CiAgICAgT3duUHRyPFRpbGVkQmFja2luZ1N0b3JlPiBt
X21haW5CYWNraW5nU3RvcmU7CkBAIC0yMjMsNiArMjMyLDkgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8V2ViS2l0OjpDb29yZGluYXRlZEltYWdlQmFja2luZz4gbV9jb29yZGluYXRlZEltYWdlQmFj
a2luZzsKIAogICAgIFBsYXRmb3JtTGF5ZXIqIG1fY2FudmFzUGxhdGZvcm1MYXllcjsKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBtX2NhbnZhc1Rv
a2VuOworI2VuZGlmCiAgICAgVGltZXI8Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyPiBtX2FuaW1h
dGlvblN0YXJ0ZWRUaW1lcjsKICAgICBHcmFwaGljc0xheWVyQW5pbWF0aW9ucyBtX2FuaW1hdGlv
bnM7CiAgICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvblN0YXJ0VGltZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCAyZTk4YmUx
ZjdkYmJkZTQ1NjBlNGFlYzg4NzJkZGE0ODIzZjYzMTM5Li43YmE4ZTMzYzU1OTlmZjFmMjU3Y2Rm
M2M5NDg4YzU3NDE2ODJmZTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC00MiwxMiArNDIsMTQgQEAKICNpbmNsdWRlICJX
ZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJm
YWNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5k
ZXJMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVyTGF5ZXJCYWNraW5nLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllckNvbXBvc2l0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1JlbmRlclZpZXcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oPgogI2luY2x1ZGUgPHd0Zi9UZW1w
b3JhcnlDaGFuZ2UuaD4KIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKQEAgLTMyMiwxMCArMzI0
LDI4IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnN5bmNMYXllckNoaWxkcmVuKFdlYkxh
eWVySUQgaWQsIGNvbnN0IFZlY3RvcjxXZWJMYXllCiB9CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VS
RkFDRSkKLXZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnN5bmNDYW52YXMoV2ViTGF5ZXJJRCBp
ZCwgY29uc3QgSW50U2l6ZSYgY2FudmFzU2l6ZSwgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4m
IHRva2VuLCB1aW50MzJfdCBmcm9udEJ1ZmZlcikKK3ZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OmNyZWF0ZUNhbnZhcyhXZWJMYXllcklEIGlkLCBQbGF0Zm9ybUxheWVyKiBjYW52YXNQbGF0Zm9y
bUxheWVyKQogewogICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3dlYlBhZ2Ut
PnNlbmQoTWVzc2FnZXM6OkxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHk6OlN5bmNDYW52YXMoaWQs
IGNhbnZhc1NpemUsIHRva2VuLCBmcm9udEJ1ZmZlcikpOworICAgIEdyYXBoaWNzU3VyZmFjZVRv
a2VuIHRva2VuID0gY2FudmFzUGxhdGZvcm1MYXllci0+Z3JhcGhpY3NTdXJmYWNlVG9rZW4oKTsK
KyAgICBJbnRTaXplIGNhbnZhc1NpemUgPSBjYW52YXNQbGF0Zm9ybUxheWVyLT5wbGF0Zm9ybUxh
eWVyU2l6ZSgpOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6TGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eTo6Q3JlYXRlQ2FudmFzKGlkLCBjYW52YXNTaXplLCB0b2tlbikpOworfQorCit2
b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpzeW5jQ2FudmFzKFdlYkxheWVySUQgaWQsIFBsYXRm
b3JtTGF5ZXIqIGNhbnZhc1BsYXRmb3JtTGF5ZXIpCit7CisgICAgbV9zaG91bGRTeW5jRnJhbWUg
PSB0cnVlOworICAgIHVpbnQzMl90IGZyb250QnVmZmVyID0gY2FudmFzUGxhdGZvcm1MYXllci0+
Y29weVRvR3JhcGhpY3NTdXJmYWNlKCk7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpM
YXllclRyZWVDb29yZGluYXRvclByb3h5OjpTeW5jQ2FudmFzKGlkLCBmcm9udEJ1ZmZlcikpOwor
fQorCit2b2lkIExheWVyVHJlZUNvb3JkaW5hdG9yOjpkZXN0cm95Q2FudmFzKFdlYkxheWVySUQg
aWQpCit7CisgICAgaWYgKG1faXNQdXJnaW5nKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3No
b3VsZFN5bmNGcmFtZSA9IHRydWU7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpMYXll
clRyZWVDb29yZGluYXRvclByb3h5OjpEZXN0cm95Q2FudmFzKGlkKSk7CiB9CiAjZW5kaWYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKaW5k
ZXggZmRkZTQ5MTVmYmRhNTdjOGMzNzQ5MTUxODA3NjBmN2ZiNGNiMTdkNi4uNDY5ZTk4MTJkMzc0
YzZjMzZmNzZlNzA2NmU2M2M2ZWM2YTRlYmVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVk
ZSAiVXBkYXRlQXRsYXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJGYWN0b3J5Lmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9HcmFwaGljc1N1cmZhY2UuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCkBAIC05Nyw3ICs5Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc3luY0xheWVyRmlsdGVycyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zJik7CiAjZW5kaWYKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICB2
aXJ0dWFsIHZvaWQgc3luY0NhbnZhcyhXZWJMYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBjYW52YXNTaXplLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYsIHVpbnQz
Ml90IGZyb250QnVmZmVyKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlQ2FudmFz
KFdlYkxheWVySUQsIFdlYkNvcmU6OlBsYXRmb3JtTGF5ZXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3luY0NhbnZhcyhXZWJMYXllcklELCBXZWJDb3JlOjpQbGF0Zm9ybUxheWVyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lDYW52YXMoV2ViTGF5ZXJJRCkgT1ZF
UlJJREU7CiAjZW5kaWYKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoTGF5ZXIoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyKik7CiAgICAgdmlydHVhbCB2b2lkIHN5bmNGaXhlZExheWVy
cygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>