<?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>123648</bug_id>
          
          <creation_ts>2013-11-01 16:58:45 -0700</creation_ts>
          <short_desc>Removing MediaStreamTrackVector and MediaStreamSourceVector typedefs</short_desc>
          <delta_ts>2013-11-01 19:11:31 -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>WebCore Misc.</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>
          <dependson>123644</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thiago de Barros Lacerda">thiago.lacerda</reporter>
          <assigned_to name="Thiago de Barros Lacerda">thiago.lacerda</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>946110</commentid>
    <comment_count>0</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-01 16:58:45 -0700</bug_when>
    <thetext>Talking with Eric Carlson we agreed that those reduce code readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946112</commentid>
    <comment_count>1</comment_count>
      <attachid>215781</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-01 17:05:30 -0700</bug_when>
    <thetext>Created attachment 215781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946133</commentid>
    <comment_count>2</comment_count>
      <attachid>215781</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-11-01 18:02:45 -0700</bug_when>
    <thetext>Comment on attachment 215781
Patch

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

This looks good, thanks for doing it! 

r=me, but it looks like it needs to be rebased so I listed a couple of drive-by changes you might make.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:137
&gt; +void MediaStream::cloneMediaStreamTrackVector(Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;&amp; destination, const Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;&amp; origin)

Nit: while you are here, can you change &quot;origin&quot; to &quot;source&quot;?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:219
&gt; +        for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_audioTracks.begin(); iter != m_audioTracks.end(); ++iter) {

Nit: while you are here, can you fix this to use &quot;auto&quot;?

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:226
&gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_videoTracks.begin(); iter != m_videoTracks.end(); ++iter) {

Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:236
&gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_audioTracks.begin(); iter != m_audioTracks.end(); ++iter) {

Ditto.

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:241
&gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_videoTracks.begin(); iter != m_videoTracks.end(); ++iter) {

Ditto.

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:169
&gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = tracks.begin(); iter != tracks.end(); ++iter)

Ditto.

&gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:173
&gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = tracks.begin(); iter != tracks.end(); ++iter)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946135</commentid>
    <comment_count>3</comment_count>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-01 18:03:52 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 215781 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=215781&amp;action=review
&gt; 
&gt; This looks good, thanks for doing it! 
&gt; 
&gt; r=me, but it looks like it needs to be rebased so I listed a couple of drive-by changes you might make.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:137
&gt; &gt; +void MediaStream::cloneMediaStreamTrackVector(Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;&amp; destination, const Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;&amp; origin)
&gt; 
&gt; Nit: while you are here, can you change &quot;origin&quot; to &quot;source&quot;?
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:219
&gt; &gt; +        for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_audioTracks.begin(); iter != m_audioTracks.end(); ++iter) {
&gt; 
&gt; Nit: while you are here, can you fix this to use &quot;auto&quot;?
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:226
&gt; &gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_videoTracks.begin(); iter != m_videoTracks.end(); ++iter) {
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:236
&gt; &gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_audioTracks.begin(); iter != m_audioTracks.end(); ++iter) {
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:241
&gt; &gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = m_videoTracks.begin(); iter != m_videoTracks.end(); ++iter) {
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:169
&gt; &gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = tracks.begin(); iter != tracks.end(); ++iter)
&gt; 
&gt; Ditto.
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/UserMediaRequest.cpp:173
&gt; &gt; +    for (Vector&lt;RefPtr&lt;MediaStreamTrack&gt;&gt;::iterator iter = tracks.begin(); iter != tracks.end(); ++iter)
&gt; 
&gt; Ditto.

OK for all</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946144</commentid>
    <comment_count>4</comment_count>
      <attachid>215791</attachid>
    <who name="Thiago de Barros Lacerda">thiago.lacerda</who>
    <bug_when>2013-11-01 18:27:48 -0700</bug_when>
    <thetext>Created attachment 215791
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946162</commentid>
    <comment_count>5</comment_count>
      <attachid>215791</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-01 19:11:29 -0700</bug_when>
    <thetext>Comment on attachment 215791
Patch

Clearing flags on attachment: 215791

Committed r158480: &lt;http://trac.webkit.org/changeset/158480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>946163</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-01 19:11:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215781</attachid>
            <date>2013-11-01 17:05:30 -0700</date>
            <delta_ts>2013-11-01 18:27:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123648-20131101210528.patch</filename>
            <type>text/plain</type>
            <size>20397</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjcyZjBkNzAyNDY2Y2Yw
OTk5OGQzMGEwMjRkZDZhNjk2MDEyNDcyMC4uM2U4ZGFlZWJhZTk1ZDIzMzRlODU4YjQ5OTllNDM1
Y2NkZDg1YTc1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTExLTAxICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFJlbW92aW5nIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgYW5kIE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yIHR5cGVkZWZzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjbG9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y2xvbmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06OmhhdmVUcmFja1dpdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06
OmdldFRyYWNrQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dHJhY2tWZWN0
b3JGb3JUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmNhbGxTdWNjZXNzSGFuZGxlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Tb3VyY2UuaDoKKwogMjAxMy0xMS0wMSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTICdpbml0aWFsJyBhbmQgJ2luaGVyaXQnIHZhbHVl
IGNvbnN0cnVjdG9ycyBzaG91bGQgcmV0dXJuIFBhc3NSZWYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZwppbmRleCAwOWUxNjViOTVkYTJjOWE4MTVjYWYzNDAyMzI3Mzg2NzIwZTYwN2YxLi5i
ZDUyYjUzZDVmZmNlNmVjMGEyNDk0ZDdhNmQ3NzNmMzdkYTY1ZWJhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0xMS0wMSAgVGhpYWdvIGRlIEJh
cnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBS
ZW1vdmluZyBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGFuZCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciB0eXBlZGVmcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTIzNjQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvTWVkaWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJN
ZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1VzZXJNZWRpYUNsaWVudEltcGwuaDoKKwogMjAxMy0xMC0zMSAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBJ
bnNwZWN0b3JTdGF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAppbmRleCA0MjU0MGNmNDdjNzllNjg0YTgzYmI5M2M0MmFlNGFkOTdk
OGVhMTYxLi5iMjE1NDg2NjkyODczYjJhM2VjZGFjNzAwOGZiMWQwODYzZmY1YWQwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApA
QCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKIHsKLSAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVh
bURlc2NyaXB0b3I6OmNyZWF0ZShNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcigpLCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvcigpKSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4
dCwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZT4+KCksIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PigpKSk7CiB9CiAK
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQpAQCAt
NjIsNyArNjIsNyBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhcwogICAgIHJldHVybiBNZWRpYVN0
cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlv
VHJhY2tzLCB2aWRlb1RyYWNrcykpOwogfQogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRp
YVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3ImIHRyYWNrcykKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1l
ZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3Qg
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mIHRyYWNrcykKIHsKICAgICBWZWN0b3I8
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gYXVkaW9UcmFja3M7CiAgICAgVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+IHZpZGVvVHJhY2tzOwpAQCAtMTI3LDE0
ICsxMjcsMTQgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c2V0RW5kZWQoKQogCiBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y2xvbmUoKQogewotICAgIE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3IgdHJhY2tTZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gdHJh
Y2tTZXQ7CiAKICAgICBjbG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0b3IodHJhY2tTZXQsIGdldEF1
ZGlvVHJhY2tzKCkpOwogICAgIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcih0cmFja1NldCwg
Z2V0VmlkZW9UcmFja3MoKSk7CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgdHJhY2tTZXQpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjpj
bG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0b3IoTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYgZGVzdGlu
YXRpb24sIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIG9yaWdpbikKK3ZvaWQgTWVkaWFT
dHJlYW06OmNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3RvcihWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+PiYgZGVzdGluYXRpb24sIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4+JiBvcmlnaW4pCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbi5z
aXplKCk7IGkrKykKICAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKG9yaWdpbltpXS0+Y2xvbmUo
KSk7CkBAIC0xNjMsNyArMTYzLDcgQEAgYm9vbCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaykKICAgICBpZiAoZ2V0VHJhY2tCeUlkKHRy
YWNrLT5pZCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgTWVkaWFTdHJlYW1UcmFj
a1ZlY3RvciogdHJhY2tzID0gdHJhY2tWZWN0b3JGb3JUeXBlKHRyYWNrLT5zb3VyY2UoKS0+dHlw
ZSgpKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiogdHJhY2tzID0gdHJh
Y2tWZWN0b3JGb3JUeXBlKHRyYWNrLT5zb3VyY2UoKS0+dHlwZSgpKTsKIAogICAgIHRyYWNrcy0+
YXBwZW5kKHRyYWNrKTsKICAgICB0cmFjay0+YWRkT2JzZXJ2ZXIodGhpcyk7CkBAIC0xOTEsNyAr
MTkxLDcgQEAgYm9vbCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiBwcnBUcmFjaykKICAgICAvLyBUaGlzIGlzIGEgY29tbW9uIHBhcnQgdXNlZCBi
eSByZW1vdmVUcmFjayBjYWxsZWQgYnkgSmF2YVNjcmlwdAogICAgIC8vIGFuZCByZW1vdmVSZW1v
dGVUcmFjayBhbmQgb25seSByZW1vdmVSZW1vdGVUcmFjayBtdXN0IGZpcmUgcmVtb3ZldHJhY2sg
ZXZlbnQKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKLSAg
ICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiB0cmFja3MgPSB0cmFja1ZlY3RvckZvclR5cGUodHJh
Y2stPnNvdXJjZSgpLT50eXBlKCkpOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4+KiB0cmFja3MgPSB0cmFja1ZlY3RvckZvclR5cGUodHJhY2stPnNvdXJjZSgpLT50eXBlKCkp
OwogCiAgICAgc2l6ZV90IHBvcyA9IHRyYWNrcy0+ZmluZCh0cmFjayk7CiAgICAgaWYgKHBvcyA9
PSBub3RGb3VuZCkKQEAgLTIxNiwxNCArMjE2LDE0IEBAIGJvb2wgTWVkaWFTdHJlYW06OnJlbW92
ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2spCiBib29sIE1lZGlh
U3RyZWFtOjpoYXZlVHJhY2tXaXRoU291cmNlKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
IHNvdXJjZSkKIHsKICAgICBpZiAoc291cmNlLT50eXBlKCkgPT0gTWVkaWFTdHJlYW1Tb3VyY2U6
OkF1ZGlvKSB7Ci0gICAgICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3Ig
aXRlciA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgp
OyArK2l0ZXIpIHsKKyAgICAgICAgZm9yIChWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+
Pjo6aXRlcmF0b3IgaXRlciA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX2F1ZGlv
VHJhY2tzLmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgICAgIGlmICgoKml0ZXIpLT5zb3VyY2Uo
KSA9PSBzb3VyY2UuZ2V0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGZvciAoTWVkaWFTdHJlYW1U
cmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IG1fdmlkZW9UcmFja3MuYmVnaW4oKTsgaXRlciAh
PSBtX3ZpZGVvVHJhY2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4+OjppdGVyYXRvciBpdGVyID0gbV92aWRlb1RyYWNrcy5iZWdpbigp
OyBpdGVyICE9IG1fdmlkZW9UcmFja3MuZW5kKCk7ICsraXRlcikgewogICAgICAgICBpZiAoKCpp
dGVyKS0+c291cmNlKCkgPT0gc291cmNlLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMjMzLDEyICsyMzMsMTIgQEAgYm9vbCBNZWRpYVN0cmVhbTo6aGF2ZVRyYWNr
V2l0aFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiAKIE1lZGlh
U3RyZWFtVHJhY2sqIE1lZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQoU3RyaW5nIGlkKQogewotICAg
IGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IG1fYXVkaW9UcmFj
a3MuYmVnaW4oKTsgaXRlciAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICBm
b3IgKFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+OjppdGVyYXRvciBpdGVyID0gbV9h
dWRpb1RyYWNrcy5iZWdpbigpOyBpdGVyICE9IG1fYXVkaW9UcmFja3MuZW5kKCk7ICsraXRlcikg
ewogICAgICAgICBpZiAoKCppdGVyKS0+aWQoKSA9PSBpZCkKICAgICAgICAgICAgIHJldHVybiAo
Kml0ZXIpLmdldCgpOwogICAgIH0KIAotICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6
aXRlcmF0b3IgaXRlciA9IG1fdmlkZW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX3ZpZGVvVHJh
Y2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4+OjppdGVyYXRvciBpdGVyID0gbV92aWRlb1RyYWNrcy5iZWdpbigpOyBpdGVyICE9IG1f
dmlkZW9UcmFja3MuZW5kKCk7ICsraXRlcikgewogICAgICAgICBpZiAoKCppdGVyKS0+aWQoKSA9
PSBpZCkKICAgICAgICAgICAgIHJldHVybiAoKml0ZXIpLmdldCgpOwogICAgIH0KQEAgLTM2Miw3
ICszNjIsNyBAQCBVUkxSZWdpc3RyeSYgTWVkaWFTdHJlYW06OnJlZ2lzdHJ5KCkgY29uc3QKICAg
ICByZXR1cm4gTWVkaWFTdHJlYW1SZWdpc3RyeTo6cmVnaXN0cnkoKTsKIH0KIAotTWVkaWFTdHJl
YW1UcmFja1ZlY3RvciogTWVkaWFTdHJlYW06OnRyYWNrVmVjdG9yRm9yVHlwZShNZWRpYVN0cmVh
bVNvdXJjZTo6VHlwZSB0eXBlKQorVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIE1l
ZGlhU3RyZWFtOjp0cmFja1ZlY3RvckZvclR5cGUoTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpB
dWRpbzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaAppbmRleCAzZDY3NGM1NmZiNzUyN2MyMWJiZGE4ZTA0NDkwZWE5MzQ0NzA5MGIzLi4xOTZh
ZjU2OTdkYTYxODUyYmNkMDczN2NhYTYyOTdjZjdkMzA5OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC00OCw3ICs0OCw3IEBA
IGNsYXNzIE1lZGlhU3RyZWFtIEZJTkFMIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW0+
LCBwdWJsaWMgVVJMUmVnaXN0cmFibGUsCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhU3RyZWFtVHJh
Y2tWZWN0b3ImKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJh
Y2s+PiYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7CiAg
ICAgdmlydHVhbCB+TWVkaWFTdHJlYW0oKTsKIApAQCAtNTgsOCArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBFeGNlcHRp
b25Db2RlJik7CiAgICAgTWVkaWFTdHJlYW1UcmFjayogZ2V0VHJhY2tCeUlkKFN0cmluZyk7CiAK
LSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGdldEF1ZGlvVHJhY2tzKCkgY29uc3QgeyByZXR1
cm4gbV9hdWRpb1RyYWNrczsgfQotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgZ2V0VmlkZW9U
cmFja3MoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvVHJhY2tzOyB9CisgICAgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPj4gZ2V0QXVkaW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX2F1
ZGlvVHJhY2tzOyB9CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gZ2V0Vmlk
ZW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvVHJhY2tzOyB9CiAKICAgICBib29sIGVu
ZGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRFbmRlZCgpOwpAQCAtMTA4LDEzICsxMDgsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50
Pik7CiAgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW0+
Kik7CiAKLSAgICB2b2lkIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3RvcihNZWRpYVN0cmVhbVRy
YWNrVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYpOworICAgIHZvaWQgY2xv
bmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+
JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mKTsKIAotICAgIE1lZGlh
U3RyZWFtVHJhY2tWZWN0b3IqIHRyYWNrVmVjdG9yRm9yVHlwZShNZWRpYVN0cmVhbVNvdXJjZTo6
VHlwZSk7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNrVmVjdG9y
Rm9yVHlwZShNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZSk7CiAKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBt
X2F1ZGlvVHJhY2tzOwotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV92aWRlb1RyYWNrczsK
KyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBtX2F1ZGlvVHJhY2tzOworICAg
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IG1fdmlkZW9UcmFja3M7CiAKICAgICBU
aW1lcjxNZWRpYVN0cmVhbT4gbV9zY2hlZHVsZWRFdmVudFRpbWVyOwogICAgIFZlY3RvcjxSZWZQ
dHI8RXZlbnQ+PiBtX3NjaGVkdWxlZEV2ZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggOTIwM2EwNzNkZWZi
ZjdhZjUxOGU2YzU3MTVhZjRjZDU2YjUyNDUxYy4uZWFjNThiOTQzZGU2NzBkNTc4Zjg5NDk3MDhm
ZjFlZTRkMGEzOGVjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTE0Miw4ICsxNDIsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9zdG9wcGluZ1RyYWNrOwogfTsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+PiBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOwotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAK
aW5kZXggZmUzNDY5YmE5YWVlM2ZkODM0MzE4MmY0MTVhZTM0MTU2ZDFjZTM0ZC4uYTEyYmRmMzM0
MTg4N2I3YjgzZDk5Y2Y0OTJmMGU0N2M4Y2NhODMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCkBAIC0xNjUs
MTIgKzE2NSwxMiBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmNhbGxTdWNjZXNzSGFuZGxlcihQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZQogCiAgICAgUmVmUHRyPE1lZGlh
U3RyZWFtPiBzdHJlYW0gPSBNZWRpYVN0cmVhbTo6Y3JlYXRlKCptX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHN0cmVhbURlc2NyaXB0b3IpOwogCi0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciB0
cmFja3MgPSBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCk7Ci0gICAgZm9yIChNZWRpYVN0cmVhbVRy
YWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gdHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gdHJhY2tz
LmVuZCgpOyArK2l0ZXIpCisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gdHJh
Y2tzID0gc3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpOworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPj46Oml0ZXJhdG9yIGl0ZXIgPSB0cmFja3MuYmVnaW4oKTsgaXRlciAh
PSB0cmFja3MuZW5kKCk7ICsraXRlcikKICAgICAgICAgKCppdGVyKS0+YXBwbHlDb25zdHJhaW50
cyhtX2F1ZGlvQ29uc3RyYWludHMpOwogCiAgICAgdHJhY2tzID0gc3RyZWFtLT5nZXRWaWRlb1Ry
YWNrcygpOwotICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9
IHRyYWNrcy5iZWdpbigpOyBpdGVyICE9IHRyYWNrcy5lbmQoKTsgKytpdGVyKQorICAgIGZvciAo
VmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj46Oml0ZXJhdG9yIGl0ZXIgPSB0cmFja3Mu
YmVnaW4oKTsgaXRlciAhPSB0cmFja3MuZW5kKCk7ICsraXRlcikKICAgICAgICAgKCppdGVyKS0+
YXBwbHlDb25zdHJhaW50cyhtX3ZpZGVvQ29uc3RyYWludHMpOwogCiAgICAgbV9zdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KHN0cmVhbS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKaW5kZXggZTJkMTk0NzMxZTFkN2JiOWM3
NzUwYjM5MTAxNGEyOTRlOTlkZTRmZS4uNjU5ODg4OTg4MGYwNDdiOTQwZmVhMjNlZmRhOGUwYWJi
MzAzNDRjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmNwcApAQCAtNDE2LDcgKzQxNiw3IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkCiAK
ICAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBwcm92aWRlciA9IDA7CiAKLSAgICBNZWRpYVN0cmVh
bVRyYWNrVmVjdG9yIGF1ZGlvVHJhY2tzID0gbWVkaWFTdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCk7
CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gYXVkaW9UcmFja3MgPSBtZWRp
YVN0cmVhbS0+Z2V0QXVkaW9UcmFja3MoKTsKICAgICAvLyBGSVhNRTogZ2V0IGEgcHJvdmlkZXIg
Zm9yIG5vbi1sb2NhbCBNZWRpYVN0cmVhbXMgKGxpa2UgZnJvbSBhIHJlbW90ZSBwZWVyKS4KICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvVHJhY2tzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBsb2NhbEF1ZGlvID0gYXVkaW9UcmFja3NbaV07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFt
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCBjYTgzOGFhN2ZiMTVj
MzZkYTRjYmJmNjJhZDUxOGJlMWI1ZThkM2U2Li41YmZmYTUyM2RmMjNiZWUxMzUxZTEyNDY2MDU2
ZjUyNjkwZDk1MDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAg
LTQ5LDkgKzQ5LDkgQEAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqIGMKICAgICBzZXROb2RlVHlwZShO
b2RlVHlwZU1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbik7CiAKICAgICBtX3NvdXJjZSA9IE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNyZWF0ZSgpOwotICAgIE1lZGlhU3RyZWFtU291cmNlVmVj
dG9yIGF1ZGlvU291cmNlczsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4g
YXVkaW9Tb3VyY2VzOwogICAgIGF1ZGlvU291cmNlcy5hcHBlbmQobV9zb3VyY2UpOwotICAgIG1f
c3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShhdWRpb1NvdXJjZXMsIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yKCkpKTsKKyAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVh
dGUoKmNvbnRleHQtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlw
dG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2VzLCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNl
Pj4oKSkpOwogCiAgICAgbV9zb3VyY2UtPnNldEF1ZGlvRm9ybWF0KG51bWJlck9mQ2hhbm5lbHMs
IGNvbnRleHQtPnNhbXBsZVJhdGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCmluZGV4
IDkyZjliNmQwMGE0Mzg2OWU4YzY4ZTVjZDIzNTNjMTQzMzU1NTlhN2UuLjA1NjYyNjg4MGFkZjI1
MmU1OTk3OTkxNWQwZWE4ZjNjMmYxNjdmMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApA
QCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjb25zdCBN
ZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQorUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1Tb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlPj4mIHZpZGVvU291cmNlcykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzKSk7CiB9CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlKiB0cmFjaykKICAgICAgICAgcmVtb3ZlVHJhY2sodHJhY2spOwogfQogCi1NZWRpYVN0cmVh
bURlc2NyaXB0b3I6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKQorTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpNZWRp
YVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxN
ZWRpYVN0cmVhbVNvdXJjZT4+JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVk
aWFTdHJlYW1Tb3VyY2U+PiYgdmlkZW9Tb3VyY2VzKQogICAgIDogbV9jbGllbnQoMCkKICAgICAs
IG1faWQoaWQpCiAgICAgLCBtX2VuZGVkKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRl
eCBkZDBjNDgxOGE0MTBkY2Y3NmMwOGQ2YTkwMzA2N2M5NDMzZDAyNTg4Li4zMjA4MWY1YjNkZTVl
NGIwNzZmNmRjMTU4YzRkMmNkMjg4MGNhZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAt
NTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIE1lZGlhU3RyZWFtRGVzY3JpcHRvciA6IHB1
YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiB2aWRlb1NvdXJjZXMpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4m
IHZpZGVvU291cmNlcyk7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlw
dG9yPiBjcmVhdGUoY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+
JiBhdWRpb1ByaXZhdGVUcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
a1ByaXZhdGU+PiYgdmlkZW9Qcml2YXRlVHJhY2tzKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcigpIHsgfQpAQCAtOTUsMTMgKzk1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlbW92ZVJlbW90ZVRyYWNrKE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlKik7CiAKIHByaXZhdGU6
Ci0gICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yJiBhdWRpb1NvdXJjZXMsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNl
VmVjdG9yJiB2aWRlb1NvdXJjZXMpOworICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBT
dHJpbmcmIGlkLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4mIGF1ZGlv
U291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+JiB2aWRlb1Nv
dXJjZXMpOwogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25z
dCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4mIGF1ZGlvUHJpdmF0ZVRy
YWNrcywgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiB2aWRl
b1ByaXZhdGVUcmFja3MpOwogCiAgICAgTWVkaWFTdHJlYW1EZXNjcmlwdG9yQ2xpZW50KiBtX2Ns
aWVudDsKICAgICBTdHJpbmcgbV9pZDsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBtX2F1
ZGlvU3RyZWFtU291cmNlczsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBtX3ZpZGVvU3Ry
ZWFtU291cmNlczsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gbV9hdWRp
b1N0cmVhbVNvdXJjZXM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IG1f
dmlkZW9TdHJlYW1Tb3VyY2VzOwogCiAgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
UHJpdmF0ZT4+IG1fYXVkaW9Qcml2YXRlVHJhY2tzOwogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja1ByaXZhdGU+PiBtX3ZpZGVvUHJpdmF0ZVRyYWNrczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCmlu
ZGV4IDVjYTJlNjAxYjE5MWM5ODU0MmJiOGQxMjRlYzlkZTQyNzAxMDMyOGEuLjY5NjZhM2I2NTk1
OWFhMjk4Njc0MWQyOWU1ZTIyYjUzZDQxNmE1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtMTIyLDgg
KzEyMiw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3JlbW90ZTsKIH07CiAKLXR5cGVkZWYgVmVj
dG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwot
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1Vz
ZXJNZWRpYUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCmluZGV4IDY3ZjIzNzlkYmE2MTQwNDY4MDY2
ZThjNmRhOWFjODIzM2NmZTkwYTIuLmY4MTFhYzI1MWIwYTU3ZGZhYWMyOWNkNDIxZGVlZDIzYWM3
YjQ1MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKQEAgLTU1LDEzICs1NSwxMyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gdG9NZWRpYVN0cmVhbVNvdXJj
ZShjb25zdCBXZWJNZWRpYVN0cmVhbVNvdQogCiBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bURlc2NyaXB0b3I+IHRvTWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFdlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvciYgZCkKIHsKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJj
ZXM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IGF1ZGlvU291cmNlczsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQuYXVkaW9zKCkuc2l6ZSgpOyBpKyspIHsKICAg
ICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzcmMgPSB0b01lZGlhU3RyZWFtU291cmNl
KGQuYXVkaW9zKClbaV0pOwogICAgICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKHNyYy5yZWxlYXNl
KCkpOwogICAgIH0KIAotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsK
KyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPj4gdmlkZW9Tb3VyY2VzOwogICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZC52aWRlb3MoKS5zaXplKCk7IGkrKykgewogICAgICAg
ICBSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHNyYyA9IHRvTWVkaWFTdHJlYW1Tb3VyY2UoZC52
aWRlb3MoKVtpXSk7CiAgICAgICAgIHZpZGVvU291cmNlcy5hcHBlbmQoc3JjLnJlbGVhc2UoKSk7
CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpwYWdlRGVzdHJv
eWVkKCkKICAgICBkZWxldGUgdGhpczsKIH0KIAotdm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpy
ZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJwUmVxdWVzdCwg
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImLCBjb25zdCBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvciYpCit2b2lkIFVzZXJNZWRpYUNsaWVudEltcGw6OnJlcXVlc3RVc2VyTWVkaWEoUGFzc1Jl
ZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiBwcnBSZXF1ZXN0LCBjb25zdCBWZWN0b3I8UmVmUHRyPE1l
ZGlhU3RyZWFtU291cmNlPj4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNl
Pj4mKQogewogICAgIFVzZXJNZWRpYVJlcXVlc3QqIHJlcXVlc3QgPSBwcnBSZXF1ZXN0LmdldCgp
OwogICAgIE93blB0cjxXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xpZW50SW1wbD4gcmVxdWVzdENsaWVu
dCA9IGFkb3B0UHRyKG5ldyBXZWJVc2VyTWVkaWFSZXF1ZXN0Q2xpZW50SW1wbChwcnBSZXF1ZXN0
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
VXNlck1lZGlhQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1VzZXJNZWRpYUNsaWVudEltcGwuaAppbmRleCBmNzZjYjNkNTY5YjljN2U5Njc4MDQx
NTA3Y2IwOTNiOTQzMmQ1Yjk3Li43YmMxMTY4OTJlN2FmOGU5ZjczODM4ZWU4ZDI4MTZkNTQwMTE4
NmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
VXNlck1lZGlhQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJD
b3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogICAgIH5Vc2VyTWVkaWFDbGllbnRJbXBsKCk7CiAKICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQo
KTsKLSAgICB2b2lkIHJlcXVlc3RVc2VyTWVkaWEoUGFzc1JlZlB0cjxXZWJDb3JlOjpVc2VyTWVk
aWFSZXF1ZXN0PiwgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlv
U291cmNlcywgY29uc3QgV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291
cmNlcyk7CisgICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6VXNl
ck1lZGlhUmVxdWVzdD4sIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1T
b3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U3RyZWFtU291cmNlPj4mIHZpZGVvU291cmNlcyk7CiAgICAgdm9pZCBjYW5jZWxVc2VyTWVkaWFS
ZXF1ZXN0KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3QqKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215791</attachid>
            <date>2013-11-01 18:27:48 -0700</date>
            <delta_ts>2013-11-01 19:11:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123648-20131101222747.patch</filename>
            <type>text/plain</type>
            <size>20347</size>
            <attacher name="Thiago de Barros Lacerda">thiago.lacerda</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU4NDcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTE3MGZiNGM5YjcyMTYx
ZmRlNzQ0OWE4ZWJmZjAxZjhjOTQwNjEzMy4uZjBiOWM3OTE2NDg2ZDJhMmE5MTlkMDdiMzJkZGE5
ZTc2MWUzNGI1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTExLTAxICBUaGlh
Z28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJkYUBvcGVuYm9zc2Eub3JnPgorCisg
ICAgICAgIFJlbW92aW5nIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgYW5kIE1lZGlhU3RyZWFtU291
cmNlVmVjdG9yIHR5cGVkZWZzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMjM2NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLgorCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjbG9uZSk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6Y2xvbmVNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06OmhhdmVUcmFja1dpdGhTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06
OmdldFRyYWNrQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6dHJhY2tWZWN0
b3JGb3JUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6
CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlVzZXJNZWRpYVJlcXVlc3Q6OmNhbGxTdWNjZXNzSGFuZGxlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtRGVzY3JpcHRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6
Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcik6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Tb3VyY2UuaDoKKwogMjAxMy0xMS0wMSAgQW5kcmVhcyBLbGluZyAgPGFrbGlu
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NTQ2FudmFzVmFsdWUgY29uc3RydWN0aW9uIGhlbHBl
ciBzaG91bGQgcmV0dXJuIFBhc3NSZWYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNr
YmVycnkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRl
eCAwOWUxNjViOTVkYTJjOWE4MTVjYWYzNDAyMzI3Mzg2NzIwZTYwN2YxLi5iZDUyYjUzZDVmZmNl
NmVjMGEyNDk0ZDdhNmQ3NzNmMzdkYTY1ZWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Js
YWNrYmVycnkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0xMS0wMSAgVGhpYWdvIGRlIEJhcnJvcyBMYWNlcmRh
ICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZW1vdmluZyBNZWRp
YVN0cmVhbVRyYWNrVmVjdG9yIGFuZCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB0eXBlZGVmcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIzNjQ4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJNZWRpYUNsaWVudElt
cGw6OnJlcXVlc3RVc2VyTWVkaWEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1VzZXJNZWRp
YUNsaWVudEltcGwuaDoKKwogMjAxMy0xMC0zMSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBJbnNwZWN0b3JTdGF0
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmNwcAppbmRleCA0MjU0MGNmNDdjNzllNjg0YTgzYmI5M2M0MmFlNGFkOTdkOGVhMTYxLi44YTZi
YmJiYWM3ZWQ2OTFjNmUzNzc1MDhkNWFmMWQ2MDkzZTdlY2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcApAQCAtNDMsNyArNDMs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlh
U3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBy
ZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShjb250ZXh0LCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6
OmNyZWF0ZShNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcigpLCBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
cigpKSk7CisgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoY29udGV4dCwgTWVkaWFTdHJl
YW1EZXNjcmlwdG9yOjpjcmVhdGUoVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+KCks
IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PigpKSk7CiB9CiAKIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQpAQCAtNjIsNyArNjIsNyBA
QCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFBhcwogICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRl
KGNvbnRleHQsIE1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvVHJhY2tzLCB2aWRl
b1RyYWNrcykpOwogfQogCi1QYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFtVHJh
Y2tWZWN0b3ImIHRyYWNrcykKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPj4mIHRyYWNrcykKIHsKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlPj4gYXVkaW9UcmFja3M7CiAgICAgVmVjdG9yPFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrUHJpdmF0ZT4+IHZpZGVvVHJhY2tzOwpAQCAtMTI3LDE3ICsxMjcsMTcgQEAg
dm9pZCBNZWRpYVN0cmVhbTo6c2V0RW5kZWQoKQogCiBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBN
ZWRpYVN0cmVhbTo6Y2xvbmUoKQogewotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgdHJhY2tT
ZXQ7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4gdHJhY2tTZXQ7CiAKICAg
ICBjbG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0b3IodHJhY2tTZXQsIGdldEF1ZGlvVHJhY2tzKCkp
OwogICAgIGNsb25lTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcih0cmFja1NldCwgZ2V0VmlkZW9UcmFj
a3MoKSk7CiAgICAgcmV0dXJuIE1lZGlhU3RyZWFtOjpjcmVhdGUoKnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgdHJhY2tTZXQpOwogfQogCi12b2lkIE1lZGlhU3RyZWFtOjpjbG9uZU1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3IoTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYgZGVzdGluYXRpb24sIGNvbnN0
IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIG9yaWdpbikKK3ZvaWQgTWVkaWFTdHJlYW06OmNsb25l
TWVkaWFTdHJlYW1UcmFja1ZlY3RvcihWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiYg
ZGVzdGluYXRpb24sIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+JiBzb3Vy
Y2UpCiB7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9yaWdpbi5zaXplKCk7IGkrKykK
LSAgICAgICAgZGVzdGluYXRpb24uYXBwZW5kKG9yaWdpbltpXS0+Y2xvbmUoKSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNvdXJjZS5zaXplKCk7IGkrKykKKyAgICAgICAgZGVzdGlu
YXRpb24uYXBwZW5kKHNvdXJjZVtpXS0+Y2xvbmUoKSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06
OmFkZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlv
bkNvZGUmIGVjKQpAQCAtMTYzLDcgKzE2Myw3IEBAIGJvb2wgTWVkaWFTdHJlYW06OmFkZFRyYWNr
KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2spCiAgICAgaWYgKGdldFRyYWNr
QnlJZCh0cmFjay0+aWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3IqIHRyYWNrcyA9IHRyYWNrVmVjdG9yRm9yVHlwZSh0cmFjay0+c291cmNl
KCktPnR5cGUoKSk7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4qIHRyYWNr
cyA9IHRyYWNrVmVjdG9yRm9yVHlwZSh0cmFjay0+c291cmNlKCktPnR5cGUoKSk7CiAKICAgICB0
cmFja3MtPmFwcGVuZCh0cmFjayk7CiAgICAgdHJhY2stPmFkZE9ic2VydmVyKHRoaXMpOwpAQCAt
MTkxLDcgKzE5MSw3IEBAIGJvb2wgTWVkaWFTdHJlYW06OnJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2spCiAgICAgLy8gVGhpcyBpcyBhIGNvbW1vbiBwYXJ0
IHVzZWQgYnkgcmVtb3ZlVHJhY2sgY2FsbGVkIGJ5IEphdmFTY3JpcHQKICAgICAvLyBhbmQgcmVt
b3ZlUmVtb3RlVHJhY2sgYW5kIG9ubHkgcmVtb3ZlUmVtb3RlVHJhY2sgbXVzdCBmaXJlIHJlbW92
ZXRyYWNrIGV2ZW50CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJh
Y2s7Ci0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciogdHJhY2tzID0gdHJhY2tWZWN0b3JGb3JU
eXBlKHRyYWNrLT5zb3VyY2UoKS0+dHlwZSgpKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+PiogdHJhY2tzID0gdHJhY2tWZWN0b3JGb3JUeXBlKHRyYWNrLT5zb3VyY2UoKS0+
dHlwZSgpKTsKIAogICAgIHNpemVfdCBwb3MgPSB0cmFja3MtPmZpbmQodHJhY2spOwogICAgIGlm
IChwb3MgPT0gbm90Rm91bmQpCkBAIC0yMTYsMTQgKzIxNiwxNCBAQCBib29sIE1lZGlhU3RyZWFt
OjpyZW1vdmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrKQogYm9v
bCBNZWRpYVN0cmVhbTo6aGF2ZVRyYWNrV2l0aFNvdXJjZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlPiBzb3VyY2UpCiB7CiAgICAgaWYgKHNvdXJjZS0+dHlwZSgpID09IE1lZGlhU3RyZWFt
U291cmNlOjpBdWRpbykgewotICAgICAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0
ZXJhdG9yIGl0ZXIgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gbV9hdWRpb1RyYWNr
cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGZvciAoYXV0byBpdGVyID0gbV9hdWRpb1RyYWNr
cy5iZWdpbigpOyBpdGVyICE9IG1fYXVkaW9UcmFja3MuZW5kKCk7ICsraXRlcikgewogICAgICAg
ICAgICAgaWYgKCgqaXRlciktPnNvdXJjZSgpID09IHNvdXJjZS5nZXQoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogCi0gICAgZm9yIChNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gbV92
aWRlb1RyYWNrcy5iZWdpbigpOyBpdGVyICE9IG1fdmlkZW9UcmFja3MuZW5kKCk7ICsraXRlcikg
eworICAgIGZvciAoYXV0byBpdGVyID0gbV92aWRlb1RyYWNrcy5iZWdpbigpOyBpdGVyICE9IG1f
dmlkZW9UcmFja3MuZW5kKCk7ICsraXRlcikgewogICAgICAgICBpZiAoKCppdGVyKS0+c291cmNl
KCkgPT0gc291cmNlLmdldCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAt
MjMzLDEyICsyMzMsMTIgQEAgYm9vbCBNZWRpYVN0cmVhbTo6aGF2ZVRyYWNrV2l0aFNvdXJjZShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzb3VyY2UpCiAKIE1lZGlhU3RyZWFtVHJhY2sq
IE1lZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQoU3RyaW5nIGlkKQogewotICAgIGZvciAoTWVkaWFT
dHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsg
aXRlciAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICBmb3IgKGF1dG8gaXRl
ciA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX2F1ZGlvVHJhY2tzLmVuZCgpOyAr
K2l0ZXIpIHsKICAgICAgICAgaWYgKCgqaXRlciktPmlkKCkgPT0gaWQpCiAgICAgICAgICAgICBy
ZXR1cm4gKCppdGVyKS5nZXQoKTsKICAgICB9CiAKLSAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX3ZpZGVvVHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gbV92
aWRlb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7CisgICAgZm9yIChhdXRvIGl0ZXIgPSBtX3ZpZGVv
VHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gbV92aWRlb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7CiAg
ICAgICAgIGlmICgoKml0ZXIpLT5pZCgpID09IGlkKQogICAgICAgICAgICAgcmV0dXJuICgqaXRl
cikuZ2V0KCk7CiAgICAgfQpAQCAtMzYyLDcgKzM2Miw3IEBAIFVSTFJlZ2lzdHJ5JiBNZWRpYVN0
cmVhbTo6cmVnaXN0cnkoKSBjb25zdAogICAgIHJldHVybiBNZWRpYVN0cmVhbVJlZ2lzdHJ5Ojpy
ZWdpc3RyeSgpOwogfQogCi1NZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiBNZWRpYVN0cmVhbTo6dHJh
Y2tWZWN0b3JGb3JUeXBlKE1lZGlhU3RyZWFtU291cmNlOjpUeXBlIHR5cGUpCitWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiogTWVkaWFTdHJlYW06OnRyYWNrVmVjdG9yRm9yVHlwZShN
ZWRpYVN0cmVhbVNvdXJjZTo6VHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAg
IGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OkF1ZGlvOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCmluZGV4IDNkNjc0YzU2ZmI3NTI3YzIxYmJk
YThlMDQ0OTBlYTkzNDQ3MDkwYjMuLjE5NmFmNTY5N2RhNjE4NTJiY2QwNzM3Y2FhNjI5N2NmN2Qz
MDk5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgY2xhc3MgTWVkaWFTdHJlYW0gRklOQUwgOiBwdWJs
aWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1YmxpYyBVUkxSZWdpc3RyYWJsZSwKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRl
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPik7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+Jik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbSgpOwogCkBA
IC01OCw4ICs1OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBNZWRpYVN0cmVhbVRyYWNr
KiBnZXRUcmFja0J5SWQoU3RyaW5nKTsKIAotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgZ2V0
QXVkaW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVHJhY2tzOyB9Ci0gICAgTWVkaWFT
dHJlYW1UcmFja1ZlY3RvciBnZXRWaWRlb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9U
cmFja3M7IH0KKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+PiBnZXRBdWRpb1Ry
YWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UcmFja3M7IH0KKyAgICBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+PiBnZXRWaWRlb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlk
ZW9UcmFja3M7IH0KIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEVuZGVk
KCk7CkBAIC0xMDgsMTMgKzEwOCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2NoZWR1bGVEaXNw
YXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKICAgICB2b2lkIHNjaGVkdWxlZEV2ZW50VGlt
ZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbT4qKTsKIAotICAgIHZvaWQgY2xvbmVNZWRpYVN0cmVh
bVRyYWNrVmVjdG9yKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImLCBjb25zdCBNZWRpYVN0cmVhbVRy
YWNrVmVjdG9yJik7CisgICAgdm9pZCBjbG9uZU1lZGlhU3RyZWFtVHJhY2tWZWN0b3IoVmVjdG9y
PFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPj4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+PiYpOwogCi0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciogdHJhY2tWZWN0b3JG
b3JUeXBlKE1lZGlhU3RyZWFtU291cmNlOjpUeXBlKTsKKyAgICBWZWN0b3I8UmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+PiogdHJhY2tWZWN0b3JGb3JUeXBlKE1lZGlhU3RyZWFtU291cmNlOjpUeXBl
KTsKIAogICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IG1fZGVzY3JpcHRvcjsKLSAg
ICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIG1fYXVkaW9UcmFja3M7Ci0gICAgTWVkaWFTdHJlYW1U
cmFja1ZlY3RvciBtX3ZpZGVvVHJhY2tzOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4+IG1fYXVkaW9UcmFja3M7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
Pj4gbV92aWRlb1RyYWNrczsKIAogICAgIFRpbWVyPE1lZGlhU3RyZWFtPiBtX3NjaGVkdWxlZEV2
ZW50VGltZXI7CiAgICAgVmVjdG9yPFJlZlB0cjxFdmVudD4+IG1fc2NoZWR1bGVkRXZlbnRzOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaAppbmRleCA5MjAzYTA3M2RlZmJmN2FmNTE4ZTZjNTcxNWFmNGNkNTZiNTI0NTFjLi5l
YWM1OGI5NDNkZTY3MGQ1NzhmODk0OTcwOGZmMWVlNGQwYTM4ZWMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaApAQCAt
MTQyLDggKzE0Miw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N0b3BwaW5nVHJhY2s7CiB9Owog
Ci10eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IE1lZGlhU3RyZWFtVHJh
Y2tWZWN0b3I7Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcAppbmRleCBmZTM0NjliYTlhZWUzZmQ4MzQzMTgyZjQx
NWFlMzQxNTZkMWNlMzRkLi5mNTk4NjZjYWNkYzNlMjk1MmM0NTE5NDBiMDVlMjgzNGRjM2Y2MDYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRp
YVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNl
ck1lZGlhUmVxdWVzdC5jcHAKQEAgLTE2NSwxMiArMTY1LDEyIEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6Y2FsbFN1Y2Nlc3NIYW5kbGVyKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9y
PiBzdHJlCiAKICAgICBSZWZQdHI8TWVkaWFTdHJlYW0+IHN0cmVhbSA9IE1lZGlhU3RyZWFtOjpj
cmVhdGUoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgc3RyZWFtRGVzY3JpcHRvcik7CiAKLSAg
ICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHRyYWNrcyA9IHN0cmVhbS0+Z2V0QXVkaW9UcmFja3Mo
KTsKLSAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSB0cmFj
a3MuYmVnaW4oKTsgaXRlciAhPSB0cmFja3MuZW5kKCk7ICsraXRlcikKKyAgICBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+PiB0cmFja3MgPSBzdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCk7
CisgICAgZm9yIChhdXRvIGl0ZXIgPSB0cmFja3MuYmVnaW4oKTsgaXRlciAhPSB0cmFja3MuZW5k
KCk7ICsraXRlcikKICAgICAgICAgKCppdGVyKS0+YXBwbHlDb25zdHJhaW50cyhtX2F1ZGlvQ29u
c3RyYWludHMpOwogCiAgICAgdHJhY2tzID0gc3RyZWFtLT5nZXRWaWRlb1RyYWNrcygpOwotICAg
IGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IHRyYWNrcy5iZWdp
bigpOyBpdGVyICE9IHRyYWNrcy5lbmQoKTsgKytpdGVyKQorICAgIGZvciAoYXV0byBpdGVyID0g
dHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gdHJhY2tzLmVuZCgpOyArK2l0ZXIpCiAgICAgICAgICgq
aXRlciktPmFwcGx5Q29uc3RyYWludHMobV92aWRlb0NvbnN0cmFpbnRzKTsKIAogICAgIG1fc3Vj
Y2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzdHJlYW0uZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IGUyZDE5NDczMWUx
ZDdiYjljNzc1MGIzOTEwMTRhMjk0ZTk5ZGU0ZmUuLjY1OTg4ODk4ODBmMDQ3Yjk0MGZlYTIzZWZk
YThlMGFiYjMwMzQ0Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQ29udGV4dC5jcHAKQEAgLTQxNiw3ICs0MTYsNyBAQCBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNl
KE1lZAogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSAwOwogCi0gICAgTWVk
aWFTdHJlYW1UcmFja1ZlY3RvciBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLT5nZXRBdWRpb1Ry
YWNrcygpOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4+IGF1ZGlvVHJhY2tz
ID0gbWVkaWFTdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCk7CiAgICAgLy8gRklYTUU6IGdldCBhIHBy
b3ZpZGVyIGZvciBub24tbG9jYWwgTWVkaWFTdHJlYW1zIChsaWtlIGZyb20gYSByZW1vdGUgcGVl
cikuCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb1RyYWNrcy5zaXplKCk7ICsraSkg
ewogICAgICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbG9jYWxBdWRpbyA9IGF1ZGlvVHJh
Y2tzW2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggY2E4Mzhh
YTdmYjE1YzM2ZGE0Y2JiZjYyYWQ1MThiZTFiNWU4ZDNlNi4uNWJmZmE1MjNkZjIzYmVlMTM1MWUx
MjQ2NjA1NmY1MjY5MGQ5NTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUu
Y3BwCkBAIC00OSw5ICs0OSw5IEBAIE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6Ok1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiBjCiAgICAgc2V0Tm9k
ZVR5cGUoTm9kZVR5cGVNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb24pOwogCiAgICAgbV9zb3Vy
Y2UgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKTsKLSAgICBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvciBhdWRpb1NvdXJjZXM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNv
dXJjZT4+IGF1ZGlvU291cmNlczsKICAgICBhdWRpb1NvdXJjZXMuYXBwZW5kKG1fc291cmNlKTsK
LSAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSwgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUoYXVkaW9Tb3VyY2Vz
LCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcigpKSk7CisgICAgbV9zdHJlYW0gPSBNZWRpYVN0cmVh
bTo6Y3JlYXRlKCpjb250ZXh0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvU291cmNlcywgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZT4+KCkpKTsKIAogICAgIG1fc291cmNlLT5zZXRBdWRpb0Zvcm1hdChudW1iZXJPZkNo
YW5uZWxzLCBjb250ZXh0LT5zYW1wbGVSYXRlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNw
cAppbmRleCA5MmY5YjZkMDBhNDM4NjllOGM2OGU1Y2QyMzUzYzE0MzM1NTU5YTdlLi4wNTY2MjY4
ODBhZGYyNTJlNTk5Nzk5MTVkMGVhOGYzYzJmMTY3ZjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRv
ci5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpjcmVhdGUo
Y29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVkaWFT
dHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShjb25zdCBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0
cjxNZWRpYVN0cmVhbVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpCiB7CiAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygp
LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcykpOwogfQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRy
YWNrUHJpdmF0ZSogdHJhY2spCiAgICAgICAgIHJlbW92ZVRyYWNrKHRyYWNrKTsKIH0KIAotTWVk
aWFTdHJlYW1EZXNjcmlwdG9yOjpNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3ImIGF1ZGlvU291cmNlcywgY29uc3QgTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3ImIHZpZGVvU291cmNlcykKK01lZGlhU3RyZWFtRGVzY3JpcHRv
cjo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgaWQsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiYgYXVkaW9Tb3VyY2VzLCBjb25zdCBWZWN0b3I8UmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPj4mIHZpZGVvU291cmNlcykKICAgICA6IG1fY2xpZW50KDAp
CiAgICAgLCBtX2lkKGlkKQogICAgICwgbV9lbmRlZChmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgKaW5kZXggZGQwYzQ4MThhNDEwZGNmNzZjMDhkNmE5MDMwNjdjOTQzM2QwMjU4OC4uMzIwODFm
NWIzZGU1ZTRiMDc2ZjZkYzE1OGM0ZDJjZDI4ODBjYWYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9y
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiBjbGFzcyBNZWRpYVN0cmVhbURlc2NyaXB0
b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0ZShjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbURlc2NyaXB0b3I+IGNyZWF0ZShjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFt
U291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNv
dXJjZT4+JiB2aWRlb1NvdXJjZXMpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4gY3JlYXRlKGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1By
aXZhdGU+PiYgYXVkaW9Qcml2YXRlVHJhY2tzLCBjb25zdCBWZWN0b3I8UmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tQcml2YXRlPj4mIHZpZGVvUHJpdmF0ZVRyYWNrcyk7CiAKICAgICB2aXJ0dWFsIH5N
ZWRpYVN0cmVhbURlc2NyaXB0b3IoKSB7IH0KQEAgLTk1LDEzICs5NSwxMyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZW1vdmVSZW1vdGVUcmFjayhNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSopOwogCiBw
cml2YXRlOgotICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBTdHJpbmcmIGlkLCBjb25z
dCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciYgYXVkaW9Tb3VyY2VzLCBjb25zdCBNZWRpYVN0cmVh
bVNvdXJjZVZlY3RvciYgdmlkZW9Tb3VyY2VzKTsKKyAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3Io
Y29uc3QgU3RyaW5nJiBpZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+
JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiYg
dmlkZW9Tb3VyY2VzKTsKICAgICBNZWRpYVN0cmVhbURlc2NyaXB0b3IoY29uc3QgU3RyaW5nJiBp
ZCwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZT4+JiBhdWRpb1By
aXZhdGVUcmFja3MsIGNvbnN0IFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+
PiYgdmlkZW9Qcml2YXRlVHJhY2tzKTsKIAogICAgIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNsaWVu
dCogbV9jbGllbnQ7CiAgICAgU3RyaW5nIG1faWQ7Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0
b3IgbV9hdWRpb1N0cmVhbVNvdXJjZXM7Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgbV92
aWRlb1N0cmVhbVNvdXJjZXM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+
IG1fYXVkaW9TdHJlYW1Tb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3Vy
Y2U+PiBtX3ZpZGVvU3RyZWFtU291cmNlczsKIAogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU+PiBtX2F1ZGlvUHJpdmF0ZVRyYWNrczsKICAgICBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gbV92aWRlb1ByaXZhdGVUcmFja3M7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuaAppbmRleCA1Y2EyZTYwMWIxOTFjOTg1NDJiYjhkMTI0ZWM5ZGU0MjcwMTAzMjhhLi42OTY2
YTNiNjU5NTlhYTI5ODY3NDFkMjllNWUyMmI1M2Q0MTZhNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKQEAg
LTEyMiw4ICsxMjIsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZW1vdGU7CiB9OwogCi10eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvcjsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3Vw
cG9ydC9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRJbXBsLmNwcAppbmRleCA2N2YyMzc5ZGJhNjE0
MDQ2ODA2NmU4YzZkYTlhYzgyMzNjZmU5MGEyLi5mODExYWMyNTFiMGE1N2RmYWFjMjljZDQyMWRl
ZWQyM2FjN2I0NTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29y
ZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L1VzZXJNZWRpYUNsaWVudEltcGwuY3BwCkBAIC01NSwxMyAr
NTUsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IHRvTWVkaWFTdHJl
YW1Tb3VyY2UoY29uc3QgV2ViTWVkaWFTdHJlYW1Tb3UKIAogc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1EZXNjcmlwdG9yPiB0b01lZGlhU3RyZWFtRGVzY3JpcHRvcihjb25zdCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImIGQpCiB7Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVk
aW9Tb3VyY2VzOworICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+PiBhdWRpb1Nv
dXJjZXM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkLmF1ZGlvcygpLnNpemUoKTsgaSsr
KSB7CiAgICAgICAgIFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gc3JjID0gdG9NZWRpYVN0cmVh
bVNvdXJjZShkLmF1ZGlvcygpW2ldKTsKICAgICAgICAgYXVkaW9Tb3VyY2VzLmFwcGVuZChzcmMu
cmVsZWFzZSgpKTsKICAgICB9CiAKLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlb1Nv
dXJjZXM7CisgICAgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+IHZpZGVvU291cmNl
czsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQudmlkZW9zKCkuc2l6ZSgpOyBpKyspIHsK
ICAgICAgICAgUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBzcmMgPSB0b01lZGlhU3RyZWFtU291
cmNlKGQudmlkZW9zKClbaV0pOwogICAgICAgICB2aWRlb1NvdXJjZXMuYXBwZW5kKHNyYy5yZWxl
YXNlKCkpOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgVXNlck1lZGlhQ2xpZW50SW1wbDo6cGFn
ZURlc3Ryb3llZCgpCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKLXZvaWQgVXNlck1lZGlhQ2xpZW50
SW1wbDo6cmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFVzZXJNZWRpYVJlcXVlc3Q+IHBycFJl
cXVlc3QsIGNvbnN0IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiwgY29uc3QgTWVkaWFTdHJlYW1T
b3VyY2VWZWN0b3ImKQordm9pZCBVc2VyTWVkaWFDbGllbnRJbXBsOjpyZXF1ZXN0VXNlck1lZGlh
KFBhc3NSZWZQdHI8VXNlck1lZGlhUmVxdWVzdD4gcHJwUmVxdWVzdCwgY29uc3QgVmVjdG9yPFJl
ZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4+JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZT4+JikKIHsKICAgICBVc2VyTWVkaWFSZXF1ZXN0KiByZXF1ZXN0ID0gcHJwUmVxdWVz
dC5nZXQoKTsKICAgICBPd25QdHI8V2ViVXNlck1lZGlhUmVxdWVzdENsaWVudEltcGw+IHJlcXVl
c3RDbGllbnQgPSBhZG9wdFB0cihuZXcgV2ViVXNlck1lZGlhUmVxdWVzdENsaWVudEltcGwocHJw
UmVxdWVzdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1VzZXJNZWRpYUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJDb3JlU3VwcG9ydC9Vc2VyTWVkaWFDbGllbnRJbXBsLmgKaW5kZXggZjc2Y2IzZDU2OWI5Yzdl
OTY3ODA0MTUwN2NiMDkzYjk0MzJkNWI5Ny4uN2JjMTE2ODkyZTdhZjhlOWY3MzgzOGVlOGQyODE2
ZDU0MDExODZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVT
dXBwb3J0L1VzZXJNZWRpYUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVy
cnkvV2ViQ29yZVN1cHBvcnQvVXNlck1lZGlhQ2xpZW50SW1wbC5oCkBAIC00Miw3ICs0Miw3IEBA
IHB1YmxpYzoKICAgICB+VXNlck1lZGlhQ2xpZW50SW1wbCgpOwogCiAgICAgdm9pZCBwYWdlRGVz
dHJveWVkKCk7Ci0gICAgdm9pZCByZXF1ZXN0VXNlck1lZGlhKFBhc3NSZWZQdHI8V2ViQ29yZTo6
VXNlck1lZGlhUmVxdWVzdD4sIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9y
JiBhdWRpb1NvdXJjZXMsIGNvbnN0IFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlVmVjdG9yJiB2
aWRlb1NvdXJjZXMpOworICAgIHZvaWQgcmVxdWVzdFVzZXJNZWRpYShQYXNzUmVmUHRyPFdlYkNv
cmU6OlVzZXJNZWRpYVJlcXVlc3Q+LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYkNvcmU6Ok1lZGlh
U3RyZWFtU291cmNlPj4mIGF1ZGlvU291cmNlcywgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYVN0cmVhbVNvdXJjZT4+JiB2aWRlb1NvdXJjZXMpOwogICAgIHZvaWQgY2FuY2VsVXNl
ck1lZGlhUmVxdWVzdChXZWJDb3JlOjpVc2VyTWVkaWFSZXF1ZXN0Kik7CiAKIHByaXZhdGU6Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>