<?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>94587</bug_id>
          
          <creation_ts>2012-08-21 04:18:42 -0700</creation_ts>
          <short_desc>Add methods to CounterDirectives to clean up StyleBuilder and RenderCounter.</short_desc>
          <delta_ts>2012-09-06 22:21:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          
          <blocked>94642</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>700610</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-21 04:18:42 -0700</bug_when>
    <thetext>Add methods to CounterDirectives to clean up StyleBuilder and RenderCounter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700613</commentid>
    <comment_count>1</comment_count>
      <attachid>159653</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-21 04:27:48 -0700</bug_when>
    <thetext>Created attachment 159653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701217</commentid>
    <comment_count>2</comment_count>
      <attachid>159653</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-08-21 15:53:13 -0700</bug_when>
    <thetext>Comment on attachment 159653
Patch

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

&gt; Source/WebCore/rendering/style/CounterDirectives.h:40
&gt;          : m_reset(false)
&gt;          , m_increment(false)

This naming should be improved while we are touching this code. Some better names:
* m_isResetCounter / m_hasCounterResetSet
* m_isIncrementCounter / m_hasCounterIncrementSet

&gt; Source/WebCore/rendering/style/CounterDirectives.h:86
&gt; +    int value() const

This value name is dangerous as you have lost the information whether you actually reset. I would have anticipated that value would return something I could just add to the current value.

Maybe valueForResetOrIncrement would better convey this idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713951</commentid>
    <comment_count>3</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-09-06 18:10:26 -0700</bug_when>
    <thetext>This fixes 94642 because it&apos;s more careful about initializing the values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713961</commentid>
    <comment_count>4</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-09-06 18:25:58 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 159653 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159653&amp;action=review
&gt; ...
&gt; 
&gt; &gt; Source/WebCore/rendering/style/CounterDirectives.h:86
&gt; &gt; +    int value() const
&gt; 
&gt; This value name is dangerous as you have lost the information whether you actually reset. I would have anticipated that value would return something I could just add to the current value.
&gt; 
&gt; Maybe valueForResetOrIncrement would better convey this idea.

Indeed it is something you can just add to the &quot;current value&quot;, the catch being that on a reset CounterNode the current value is 0, while on other nodes the current value is the value of our ancestor node.

I changed this to combinedValue(). Overall it would be nice to get rid of CounterDirectives entirely, it&apos;s a confusing container for what should just be two maps and RenderStyle should have something like getCounterReset(String&amp; identifier) and getCounterIncrement(String&amp; identifier) that return a struct CounterValue() { bool isDefined(); int value(); } or something like that that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713977</commentid>
    <comment_count>5</comment_count>
      <attachid>162643</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-09-06 18:36:52 -0700</bug_when>
    <thetext>Created attachment 162643
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714108</commentid>
    <comment_count>6</comment_count>
      <attachid>162643</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 22:21:47 -0700</bug_when>
    <thetext>Comment on attachment 162643
Patch for landing

Clearing flags on attachment: 162643

Committed r127826: &lt;http://trac.webkit.org/changeset/127826&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714109</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 22:21:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159653</attachid>
            <date>2012-08-21 04:27:48 -0700</date>
            <delta_ts>2012-09-06 18:36:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94587-20120821042708.patch</filename>
            <type>text/plain</type>
            <size>21688</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmUyM2ZiMDkxMDYzNWFh
MzMwNzA0ZjhlMTY1ZDY0NDBiZmVlYWU1ZC4uYjc2YjI1NWNhNzkxNzUzMGJkMWQ3MGU1YzFlNzM4
NTkxODQzMTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTIxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBtZXRob2Rz
IHRvIENvdW50ZXJEaXJlY3RpdmVzIHRvIGNsZWFuIHVwIFN0eWxlQnVpbGRlciBhbmQgUmVuZGVy
Q291bnRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk0NTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkcyBzZXZlcmFsIG1ldGhvZHMgdG8gQ291bnRlckRpcmVjdGl2ZXMgYW5kIGFuIGFjY2Vzc29y
IG1ldGhvZCB0byBSZW5kZXJTdHlsZSBmb3IKKyAgICAgICAgZ2V0dGluZyB0aGUgQ291bnRlckRp
cmVjdGl2ZXMgYnkgaWRlbmZpdGllciBhbmQgdXNlcyB0aG9zZSBtZXRob2RzIHRvIGNsZWFuIHVw
CisgICAgICAgIHRoZSBjb2RlIGluIFN0eWxlQnVpbGRlciBhbmQgUmVuZGVyQ291bnRlci4gVGhp
cyBhbHNvIHN3aXRjaGVzIHRvIHVzaW5nIEF0b21pY1N0cmluZworICAgICAgICBkaXJlY3RseSBp
bnN0ZWFkIG9mIEF0b21pY1N0cmluZ0ltcGwgYW5kIGNhbGxpbmcgZ2V0KCkgZXZlcnl3aGVyZS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgc2luY2UgdGhpcyBpcyBqdXN0IHJlZmFjdG9yaW5nLgor
CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjb3VudGVyVG9DU1NWYWx1ZSk6IFVzZSBuZXcgYWNjZXNzb3JzLgorICAgICAg
ICAqIGNzcy9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5SW5oZXJpdFZhbHVlKTogVXNlIG5ldyBpbmhlcml0IG1ldGhvZHMuCisg
ICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5Q291bnRlcjo6YXBwbHlWYWx1ZSk6IFVzZSBu
ZXcgc2V0dGVycy4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnBsYW5Db3VudGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Om1ha2VDb3VudGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpkZXN0cm95Q291
bnRlck5vZGVXaXRob3V0TWFwUmVtb3ZhbCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3Vu
dGVyOjpkZXN0cm95Q291bnRlck5vZGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckNvdW50
ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVDb3VudGVy
cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdl
ZCk6CisgICAgICAgIChzaG93Q291bnRlclJlbmRlcmVyVHJlZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oOiBB
ZGRlZCBuZXcgYWNjZXNzb3JzIGFuZCBzd2l0Y2hlZCB0byB1c2luZyBBdG9taWNTdHJpbmcgZGly
ZWN0bHkuCisgICAgICAgIChDb3VudGVyRGlyZWN0aXZlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
b3VudGVyRGlyZWN0aXZlczo6Q291bnRlckRpcmVjdGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6
Q291bnRlckRpcmVjdGl2ZXM6OmlzUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRp
cmVjdGl2ZXM6OnJlc2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2
ZXM6OnNldFJlc2V0VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6
OmNsZWFyUmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmluaGVy
aXRSZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6aXNJbmNyZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmluY3JlbWVudFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjphZGRJbmNyZW1lbnRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6Y2xlYXJJbmNyZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmluaGVyaXRJbmNyZW1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OmlzRGVmaW5lZCk6IElmIGVp
dGhlciByZXNldCBvciBpbmNyZW1lbnQgaXMgdXNlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvdW50
ZXJEaXJlY3RpdmVzOjp2YWx1ZSk6IFRvdGFsIHZhbHVlIG9mIHJlc2V0ICsgaW5jcmVtZW50Lgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpnZXRDb3VudGVyRGlyZWN0aXZl
cyk6IE5ldyBtZXRob2Qgd2hpY2ggYWx3YXlzIHJldHVybnMgYSBDb3VudGVyRGlyZWN0aXZlcyBp
bnN0YW5jZSBieSBpZGVudGlmaWVyLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTItMDgtMjAgIEtlbnRhcm8gSGFyYSAg
PGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTW92ZSBoYW5kbGVPdXRPZk1l
bW9yeSgpIGZyb20gVjhQcm94eSB0byBWOEJpbmRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggOTAyNTM2NzYyY2JmMGJm
ZmIxNDBlMGU0MzUyYmI2ZjhmY2UwM2IwNy4uOGJlNTcxMWQ0OTU4ODhlNTE1ZTA2MjM3YjExY2Zk
YTdhMmFjNDU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTEyNzksOCArMTI3OSw4IEBAIHN0YXRpYyBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBjb3VudGVyVG9DU1NWYWx1ZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIENT
U1Byb3BlCiAKICAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgIGZvciAoQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IG1hcC0+ZW5kKCk7ICsraXQpIHsK
LSAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGl0LT5maXJz
dC5nZXQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKLSAgICAgICAgc2hvcnQg
bnVtYmVyID0gcHJvcGVydHlJRCA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQgPyBpdC0+
c2Vjb25kLm1faW5jcmVtZW50VmFsdWUgOiBpdC0+c2Vjb25kLm1fcmVzZXRWYWx1ZTsKKyAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGl0LT5maXJzdCwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgc2hvcnQgbnVtYmVyID0gcHJv
cGVydHlJRCA9PSBDU1NQcm9wZXJ0eUNvdW50ZXJJbmNyZW1lbnQgPyBpdC0+c2Vjb25kLmluY3Jl
bWVudFZhbHVlKCkgOiBpdC0+c2Vjb25kLnJlc2V0VmFsdWUoKTsKICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKChkb3VibGUpbnVtYmVyLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikpOwogICAgIH0KICAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCmluZGV4IDQ4NmE0ZGJiODFjMWM1ZGNmOTlh
M2RhYjBkNjkyYzQwODYwMWNjYzEuLjI1ZDcwZTVkYTYwY2Q2ZmVmYTViNjRkYjJmOWY3NTcxZjNm
ZWJmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXIuY3BwCkBAIC0xMDE2LDIwICsxMDE2
LDkgQEAgcHVibGljOgogICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0gcGFyZW50TWFwLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRp
cmVjdGl2ZXMgPSBtYXAuYWRkKGl0LT5maXJzdCwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlcmF0
b3ItPnNlY29uZDsKICAgICAgICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpIHsK
LSAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1fcmVzZXQgPSBpdC0+c2Vjb25kLm1fcmVzZXQ7
Ci0gICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWUgPSBpdC0+c2Vjb25kLm1f
cmVzZXRWYWx1ZTsKKyAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLmluaGVyaXRSZXNldChpdC0+
c2Vjb25kKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5oZXJp
dGluZyBhIGNvdW50ZXItaW5jcmVtZW50IG1lYW5zIHRha2luZyB0aGUgcGFyZW50J3MgY3VycmVu
dCB2YWx1ZSBmb3IgdGhlIGNvdW50ZXIKLSAgICAgICAgICAgICAgICAvLyBhbmQgYWRkaW5nIGl0
IHRvIGl0c2VsZi4KLSAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50ID0gaXQt
PnNlY29uZC5tX2luY3JlbWVudDsKLSAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVt
ZW50VmFsdWUgPSAwOwotICAgICAgICAgICAgICAgIGlmIChkaXJlY3RpdmVzLm1faW5jcmVtZW50
KSB7Ci0gICAgICAgICAgICAgICAgICAgIGZsb2F0IGluY3JlbWVudFZhbHVlID0gZGlyZWN0aXZl
cy5tX2luY3JlbWVudFZhbHVlOwotICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5j
cmVtZW50VmFsdWUgPSBjbGFtcFRvSW50ZWdlcihpbmNyZW1lbnRWYWx1ZSArIGl0LT5zZWNvbmQu
bV9pbmNyZW1lbnRWYWx1ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3JlbWVudCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IGl0LT5zZWNvbmQubV9pbmNyZW1lbnRW
YWx1ZTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5pbmhl
cml0SW5jcmVtZW50KGl0LT5zZWNvbmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtMTA0Niw5ICsxMDM1LDkgQEAgcHVibGljOgogICAgICAgICBJdGVyYXRvciBlbmQgPSBt
YXAuZW5kKCk7CiAgICAgICAgIGZvciAoSXRlcmF0b3IgaXQgPSBtYXAuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KQogICAgICAgICAgICAgaWYgKGNvdW50ZXJCZWhhdmlvciA9PSBSZXNldCkKLSAg
ICAgICAgICAgICAgICBpdC0+c2Vjb25kLm1fcmVzZXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpdC0+c2Vjb25kLmNsZWFyUmVzZXQoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBpdC0+c2Vjb25kLm1faW5jcmVtZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaXQt
PnNlY29uZC5jbGVhckluY3JlbWVudCgpOwogCiAgICAgICAgIGludCBsZW5ndGggPSBsaXN0ID8g
bGlzdC0+bGVuZ3RoKCkgOiAwOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsg
KytpKSB7CkBAIC0xMDYyLDIwICsxMDUxLDEyIEBAIHB1YmxpYzoKIAogICAgICAgICAgICAgQXRv
bWljU3RyaW5nIGlkZW50aWZpZXIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHBh
aXItPmZpcnN0KCkpLT5nZXRTdHJpbmdWYWx1ZSgpOwogICAgICAgICAgICAgaW50IHZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihwYWlyLT5zZWNvbmQoKSktPmdldEludFZh
bHVlKCk7Ci0gICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5h
ZGQoaWRlbnRpZmllci5pbXBsKCksIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNv
bmQ7CisgICAgICAgICAgICBDb3VudGVyRGlyZWN0aXZlcyYgZGlyZWN0aXZlcyA9IG1hcC5hZGQo
aWRlbnRpZmllciwgQ291bnRlckRpcmVjdGl2ZXMoKSkuaXRlcmF0b3ItPnNlY29uZDsKICAgICAg
ICAgICAgIGlmIChjb3VudGVyQmVoYXZpb3IgPT0gUmVzZXQpIHsKLSAgICAgICAgICAgICAgICBk
aXJlY3RpdmVzLm1fcmVzZXQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9y
ZXNldFZhbHVlID0gdmFsdWU7CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5zZXRSZXNldFZh
bHVlKHZhbHVlKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGRp
cmVjdGl2ZXMubV9pbmNyZW1lbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgZmxvYXQgaW5jcmVt
ZW50VmFsdWUgPSBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZSA9IGNsYW1wVG9JbnRlZ2VyKGluY3JlbWVu
dFZhbHVlICsgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5hZGRJbmNyZW1lbnRWYWx1ZSh2YWx1ZSk7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAgfQogICAgIH0KICAgICBzdGF0aWMg
UHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIo
JmFwcGx5SW5oZXJpdFZhbHVlLCAmZW1wdHlGdW5jdGlvbiwgJmFwcGx5VmFsdWUpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKaW5kZXggZGU0NWQ4OTVlMTdl
MDlhNzFiNjM5MWRkOThlODIzMDc3YjIxZDEwNy4uZjM4NGFmNTc4MmFkNDE3MTQ2NzFjYjA4MGFk
OGQ4NTdjYjkyMWY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVy
LmNwcApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CiAKLXR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8QXRvbWljU3RyaW5nSW1w
bD4sIFJlZlB0cjxDb3VudGVyTm9kZT4gPiBDb3VudGVyTWFwOwordHlwZWRlZiBIYXNoTWFwPEF0
b21pY1N0cmluZywgUmVmUHRyPENvdW50ZXJOb2RlPiA+IENvdW50ZXJNYXA7CiB0eXBlZGVmIEhh
c2hNYXA8Y29uc3QgUmVuZGVyT2JqZWN0KiwgT3duUHRyPENvdW50ZXJNYXA+ID4gQ291bnRlck1h
cHM7CiAKIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCos
IGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllciwgYm9vbCBhbHdheXNDcmVhdGVDb3VudGVy
KTsKQEAgLTI0MSwyMCArMjQxLDExIEBAIHN0YXRpYyBib29sIHBsYW5Db3VudGVyKFJlbmRlck9i
amVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvCiAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gQ291bnRlcnMgYXJlIGZvcmJpZGRlbiBmcm9tIGFsbCBvdGhlciBw
c2V1ZG8gZWxlbWVudHMuCiAgICAgfQogCi0gICAgaWYgKGNvbnN0IENvdW50ZXJEaXJlY3RpdmVN
YXAqIGRpcmVjdGl2ZXNNYXAgPSBzdHlsZS0+Y291bnRlckRpcmVjdGl2ZXMoKSkgewotICAgICAg
ICBDb3VudGVyRGlyZWN0aXZlcyBkaXJlY3RpdmVzID0gZGlyZWN0aXZlc01hcC0+Z2V0KGlkZW50
aWZpZXIuaW1wbCgpKTsKLSAgICAgICAgaWYgKGRpcmVjdGl2ZXMubV9yZXNldCkgewotICAgICAg
ICAgICAgdmFsdWUgPSBkaXJlY3RpdmVzLm1fcmVzZXRWYWx1ZTsKLSAgICAgICAgICAgIGlmIChk
aXJlY3RpdmVzLm1faW5jcmVtZW50KQotICAgICAgICAgICAgICAgIHZhbHVlICs9IGRpcmVjdGl2
ZXMubV9pbmNyZW1lbnRWYWx1ZTsKLSAgICAgICAgICAgIGlzUmVzZXQgPSB0cnVlOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGRpcmVjdGl2ZXMubV9p
bmNyZW1lbnQpIHsKLSAgICAgICAgICAgIHZhbHVlID0gZGlyZWN0aXZlcy5tX2luY3JlbWVudFZh
bHVlOwotICAgICAgICAgICAgaXNSZXNldCA9IGZhbHNlOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KKyAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyBkaXJlY3RpdmVzID0g
c3R5bGUtPmdldENvdW50ZXJEaXJlY3RpdmVzKGlkZW50aWZpZXIpOworICAgIGlmIChkaXJlY3Rp
dmVzLmlzRGVmaW5lZCgpKSB7CisgICAgICAgIHZhbHVlID0gZGlyZWN0aXZlcy52YWx1ZSgpOwor
ICAgICAgICBpc1Jlc2V0ID0gZGlyZWN0aXZlcy5pc1Jlc2V0KCk7CisgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAogICAgIGlmIChpZGVudGlmaWVyID09ICJsaXN0LWl0ZW0iKSB7CkBAIC00
MjAsNyArNDExLDcgQEAgc3RhdGljIENvdW50ZXJOb2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVy
T2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0cmluZyYgaWQKIAogICAgIGlmIChvYmplY3Qt
Pmhhc0NvdW50ZXJOb2RlTWFwKCkpIHsKICAgICAgICAgaWYgKENvdW50ZXJNYXAqIG5vZGVNYXAg
PSBjb3VudGVyTWFwcygpLmdldChvYmplY3QpKSB7Ci0gICAgICAgICAgICBpZiAoQ291bnRlck5v
ZGUqIG5vZGUgPSBub2RlTWFwLT5nZXQoaWRlbnRpZmllci5pbXBsKCkpLmdldCgpKQorICAgICAg
ICAgICAgaWYgKENvdW50ZXJOb2RlKiBub2RlID0gbm9kZU1hcC0+Z2V0KGlkZW50aWZpZXIpLmdl
dCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBub2RlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NDQzLDcgKzQzNCw3IEBAIHN0YXRpYyBDb3VudGVyTm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRl
ck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNTdHJpbmcmIGlkCiAgICAgICAgIGNvdW50ZXJN
YXBzKCkuc2V0KG9iamVjdCwgYWRvcHRQdHIobm9kZU1hcCkpOwogICAgICAgICBvYmplY3QtPnNl
dEhhc0NvdW50ZXJOb2RlTWFwKHRydWUpOwogICAgIH0KLSAgICBub2RlTWFwLT5zZXQoaWRlbnRp
Zmllci5pbXBsKCksIG5ld05vZGUpOworICAgIG5vZGVNYXAtPnNldChpZGVudGlmaWVyLCBuZXdO
b2RlKTsKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50KCkpCiAgICAgICAgIHJldHVybiBuZXdOb2Rl
LmdldCgpOwogICAgIC8vIENoZWNraW5nIGlmIHNvbWUgbm9kZXMgdGhhdCB3ZXJlIHByZXZpb3Vz
bHkgY291bnRlciB0cmVlIHJvb3Qgbm9kZXMKQEAgLTQ1NSw3ICs0NDYsNyBAQCBzdGF0aWMgQ291
bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRv
bWljU3RyaW5nJiBpZAogICAgICAgICBza2lwRGVzY2VuZGFudHMgPSBmYWxzZTsKICAgICAgICAg
aWYgKCFjdXJyZW50UmVuZGVyZXItPmhhc0NvdW50ZXJOb2RlTWFwKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgQ291bnRlck5vZGUqIGN1cnJlbnRDb3VudGVyID0gbWFwcy5nZXQo
Y3VycmVudFJlbmRlcmVyKS0+Z2V0KGlkZW50aWZpZXIuaW1wbCgpKS5nZXQoKTsKKyAgICAgICAg
Q291bnRlck5vZGUqIGN1cnJlbnRDb3VudGVyID0gbWFwcy5nZXQoY3VycmVudFJlbmRlcmVyKS0+
Z2V0KGlkZW50aWZpZXIpLmdldCgpOwogICAgICAgICBpZiAoIWN1cnJlbnRDb3VudGVyKQogICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgIHNraXBEZXNjZW5kYW50cyA9IHRydWU7CkBAIC01
NTgsOCArNTQ5LDggQEAgc3RhdGljIHZvaWQgZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJl
bW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZGVudGlmaWVyLAogICAgIGZvciAoUmVmUHRyPENv
dW50ZXJOb2RlPiBjaGlsZCA9IG5vZGUtPmxhc3REZXNjZW5kYW50KCk7IGNoaWxkICYmIGNoaWxk
ICE9IG5vZGU7IGNoaWxkID0gcHJldmlvdXMpIHsKICAgICAgICAgcHJldmlvdXMgPSBjaGlsZC0+
cHJldmlvdXNJblByZU9yZGVyKCk7CiAgICAgICAgIGNoaWxkLT5wYXJlbnQoKS0+cmVtb3ZlQ2hp
bGQoY2hpbGQuZ2V0KCkpOwotICAgICAgICBBU1NFUlQoY291bnRlck1hcHMoKS5nZXQoY2hpbGQt
Pm93bmVyKCkpLT5nZXQoaWRlbnRpZmllci5pbXBsKCkpID09IGNoaWxkKTsKLSAgICAgICAgY291
bnRlck1hcHMoKS5nZXQoY2hpbGQtPm93bmVyKCkpLT5yZW1vdmUoaWRlbnRpZmllci5pbXBsKCkp
OworICAgICAgICBBU1NFUlQoY291bnRlck1hcHMoKS5nZXQoY2hpbGQtPm93bmVyKCkpLT5nZXQo
aWRlbnRpZmllcikgPT0gY2hpbGQpOworICAgICAgICBjb3VudGVyTWFwcygpLmdldChjaGlsZC0+
b3duZXIoKSktPnJlbW92ZShpZGVudGlmaWVyKTsKICAgICB9CiAgICAgaWYgKENvdW50ZXJOb2Rl
KiBwYXJlbnQgPSBub2RlLT5wYXJlbnQoKSkKICAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZChu
b2RlKTsKQEAgLTU3NCw4ICs1NjUsNyBAQCB2b2lkIFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3Vu
dGVyTm9kZXMoUmVuZGVyT2JqZWN0KiBvd25lcikKICAgICBDb3VudGVyTWFwKiBtYXAgPSBtYXBz
SXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICBDb3VudGVyTWFwOjpjb25zdF9pdGVyYXRvciBl
bmQgPSBtYXAtPmVuZCgpOwogICAgIGZvciAoQ291bnRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBBdG9taWNTdHJpbmcg
aWRlbnRpZmllcihpdC0+Zmlyc3QuZ2V0KCkpOwotICAgICAgICBkZXN0cm95Q291bnRlck5vZGVX
aXRob3V0TWFwUmVtb3ZhbChpZGVudGlmaWVyLCBpdC0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAg
ZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92YWwoaXQtPmZpcnN0LCBpdC0+c2Vjb25k
LmdldCgpKTsKICAgICB9CiAgICAgbWFwcy5yZW1vdmUobWFwc0l0ZXJhdG9yKTsKICAgICBvd25l
ci0+c2V0SGFzQ291bnRlck5vZGVNYXAoZmFsc2UpOwpAQCAtNTg2LDcgKzU3Niw3IEBAIHZvaWQg
UmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCogb3duZXIsIGNv
bnN0IEF0b21pY1N0cmluZyYKICAgICBDb3VudGVyTWFwKiBtYXAgPSBjb3VudGVyTWFwcygpLmdl
dChvd25lcik7CiAgICAgaWYgKCFtYXApCiAgICAgICAgIHJldHVybjsKLSAgICBDb3VudGVyTWFw
OjppdGVyYXRvciBtYXBJdGVyYXRvciA9IG1hcC0+ZmluZChpZGVudGlmaWVyLmltcGwoKSk7Cisg
ICAgQ291bnRlck1hcDo6aXRlcmF0b3IgbWFwSXRlcmF0b3IgPSBtYXAtPmZpbmQoaWRlbnRpZmll
cik7CiAgICAgaWYgKG1hcEl0ZXJhdG9yID09IG1hcC0+ZW5kKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBkZXN0cm95Q291bnRlck5vZGVXaXRob3V0TWFwUmVtb3ZhbChpZGVudGlmaWVyLCBtYXBJ
dGVyYXRvci0+c2Vjb25kLmdldCgpKTsKQEAgLTYyOSwyMiArNjE5LDIyIEBAIHN0YXRpYyB2b2lk
IHVwZGF0ZUNvdW50ZXJzKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgQ291bnRlckRpcmVj
dGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGlyZWN0aXZlTWFwLT5lbmQoKTsKICAgICBp
ZiAoIXJlbmRlcmVyLT5oYXNDb3VudGVyTm9kZU1hcCgpKSB7CiAgICAgICAgIGZvciAoQ291bnRl
ckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkaXJlY3RpdmVNYXAtPmJlZ2luKCk7
IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwg
QXRvbWljU3RyaW5nKGl0LT5maXJzdC5nZXQoKSksIGZhbHNlKTsKKyAgICAgICAgICAgIG1ha2VD
b3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmZpcnN0LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgQ291bnRlck1hcCogY291bnRlck1hcCA9IGNvdW50ZXJNYXBzKCkuZ2V0KHJl
bmRlcmVyKTsKICAgICBBU1NFUlQoY291bnRlck1hcCk7CiAgICAgZm9yIChDb3VudGVyRGlyZWN0
aXZlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGRpcmVjdGl2ZU1hcC0+YmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxDb3VudGVyTm9kZT4gbm9kZSA9IGNvdW50ZXJN
YXAtPmdldChpdC0+Zmlyc3QuZ2V0KCkpOworICAgICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5v
ZGUgPSBjb3VudGVyTWFwLT5nZXQoaXQtPmZpcnN0KTsKICAgICAgICAgaWYgKCFub2RlKSB7Ci0g
ICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIsIEF0b21pY1N0cmluZyhpdC0+Zmly
c3QuZ2V0KCkpLCBmYWxzZSk7CisgICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIs
IGl0LT5maXJzdCwgZmFsc2UpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAg
ICAgICAgUmVmUHRyPENvdW50ZXJOb2RlPiBuZXdQYXJlbnQgPSAwOwogICAgICAgICBSZWZQdHI8
Q291bnRlck5vZGU+IG5ld1ByZXZpb3VzU2libGluZyA9IDA7CiAgICAgICAgIAotICAgICAgICBm
aW5kUGxhY2VGb3JDb3VudGVyKHJlbmRlcmVyLCBBdG9taWNTdHJpbmcoaXQtPmZpcnN0LmdldCgp
KSwgbm9kZS0+aGFzUmVzZXRUeXBlKCksIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5nKTsK
LSAgICAgICAgaWYgKG5vZGUgIT0gY291bnRlck1hcC0+Z2V0KGl0LT5maXJzdC5nZXQoKSkpCisg
ICAgICAgIGZpbmRQbGFjZUZvckNvdW50ZXIocmVuZGVyZXIsIGl0LT5maXJzdCwgbm9kZS0+aGFz
UmVzZXRUeXBlKCksIG5ld1BhcmVudCwgbmV3UHJldmlvdXNTaWJsaW5nKTsKKyAgICAgICAgaWYg
KG5vZGUgIT0gY291bnRlck1hcC0+Z2V0KGl0LT5maXJzdCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgQ291bnRlck5vZGUqIHBhcmVudCA9IG5vZGUtPnBhcmVudCgpOwogICAgICAg
ICBpZiAobmV3UGFyZW50ID09IHBhcmVudCAmJiBuZXdQcmV2aW91c1NpYmxpbmcgPT0gbm9kZS0+
cHJldmlvdXNTaWJsaW5nKCkpCkBAIC02NTIsNyArNjQyLDcgQEAgc3RhdGljIHZvaWQgdXBkYXRl
Q291bnRlcnMoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICAgICAgaWYgKHBhcmVudCkKICAg
ICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQobm9kZS5nZXQoKSk7CiAgICAgICAgIGlmIChu
ZXdQYXJlbnQpCi0gICAgICAgICAgICBuZXdQYXJlbnQtPmluc2VydEFmdGVyKG5vZGUuZ2V0KCks
IG5ld1ByZXZpb3VzU2libGluZy5nZXQoKSwgaXQtPmZpcnN0LmdldCgpKTsKKyAgICAgICAgICAg
IG5ld1BhcmVudC0+aW5zZXJ0QWZ0ZXIobm9kZS5nZXQoKSwgbmV3UHJldmlvdXNTaWJsaW5nLmdl
dCgpLCBpdC0+Zmlyc3QpOwogICAgIH0KIH0KIApAQCAtNjg4LDE3ICs2NzgsMTcgQEAgdm9pZCBS
ZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAgICAgICBpZiAob2xkTWFwSXQgIT0gb2xkTWFw
RW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvbGRNYXBJdC0+c2Vjb25kID09IGl0LT5z
ZWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmly
c3QuZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBSZW5kZXJDb3VudGVyOjpkZXN0cm95Q291
bnRlck5vZGUocmVuZGVyZXIsIGl0LT5maXJzdCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIC8vIFdlIG11c3QgY3JlYXRlIHRoaXMgbm9kZSBoZXJlLCBiZWNhdXNlIHRoZSBj
aGFuZ2VkIG5vZGUgbWF5IGJlIGEgbm9kZSB3aXRoIG5vIGRpc3BsYXkgc3VjaCBhcwogICAgICAg
ICAgICAgICAgIC8vIGFzIHRob3NlIGNyZWF0ZWQgYnkgdGhlIGluY3JlbWVudCBvciByZXNldCBk
aXJlY3RpdmVzIGFuZCB0aGUgcmUtbGF5b3V0IHRoYXQgd2lsbCBoYXBwZW4gd2lsbAogICAgICAg
ICAgICAgICAgIC8vIG5vdCBjYXRjaCB0aGUgY2hhbmdlIGlmIHRoZSBub2RlIGhhZCBubyBjaGls
ZHJlbi4KLSAgICAgICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIsIGl0LT5maXJz
dC5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJl
ciwgaXQtPmZpcnN0LCBmYWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBEZXN0
cm95aW5nIG9sZCBjb3VudGVycyB0aGF0IGRvIG5vdCBleGlzdCBpbiB0aGUgbmV3IGNvdW50ZXJE
aXJlY3RpdmUgbWFwLgogICAgICAgICAgICAgZm9yIChDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25z
dF9pdGVyYXRvciBpdCA9IG9sZENvdW50ZXJEaXJlY3RpdmVzLT5iZWdpbigpOyBpdCAhPW9sZE1h
cEVuZDsgKytpdCkgewogICAgICAgICAgICAgICAgIGlmICghbmV3Q291bnRlckRpcmVjdGl2ZXMt
PmNvbnRhaW5zKGl0LT5maXJzdCkpCi0gICAgICAgICAgICAgICAgICAgIFJlbmRlckNvdW50ZXI6
OmRlc3Ryb3lDb3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmZpcnN0LmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBp
dC0+Zmlyc3QpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
aWYgKHJlbmRlcmVyLT5oYXNDb3VudGVyTm9kZU1hcCgpKQpAQCAtNzEwLDcgKzcwMCw3IEBAIHZv
aWQgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciwgY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICAvLyBXZSBtdXN0IGNyZWF0ZSB0aGlz
IG5vZGUgaGVyZSwgYmVjYXVzZSB0aGUgYWRkZWQgbm9kZSBtYXkgYmUgYSBub2RlIHdpdGggbm8g
ZGlzcGxheSBzdWNoIGFzCiAgICAgICAgICAgICAvLyBhcyB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBp
bmNyZW1lbnQgb3IgcmVzZXQgZGlyZWN0aXZlcyBhbmQgdGhlIHJlLWxheW91dCB0aGF0IHdpbGwg
aGFwcGVuIHdpbGwKICAgICAgICAgICAgIC8vIG5vdCBjYXRjaCB0aGUgY2hhbmdlIGlmIHRoZSBu
b2RlIGhhZCBubyBjaGlsZHJlbi4KLSAgICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJl
ciwgaXQtPmZpcnN0LmdldCgpLCBmYWxzZSk7CisgICAgICAgICAgICBtYWtlQ291bnRlck5vZGUo
cmVuZGVyZXIsIGl0LT5maXJzdCwgZmFsc2UpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtNzM1
LDcgKzcyNSw3IEBAIHZvaWQgc2hvd0NvdW50ZXJSZW5kZXJlclRyZWUoY29uc3QgV2ViQ29yZTo6
UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgY2hhcioKICAgICAgICAgZnByaW50ZihzdGRl
cnIsICIlcCBOOiVwIFA6JXAgUFM6JXAgTlM6JXAgQzolcFxuIiwKICAgICAgICAgICAgIGN1cnJl
bnQsIGN1cnJlbnQtPm5vZGUoKSwgY3VycmVudC0+cGFyZW50KCksIGN1cnJlbnQtPnByZXZpb3Vz
U2libGluZygpLAogICAgICAgICAgICAgY3VycmVudC0+bmV4dFNpYmxpbmcoKSwgY3VycmVudC0+
aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAgICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6
OmNvdW50ZXJNYXBzKCkuZ2V0KGN1cnJlbnQpLT5nZXQoaWRlbnRpZmllci5pbXBsKCkpLmdldCgp
IDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikxIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsK
KyAgICAgICAgICAgIGNvdW50ZXJOYW1lID8gV2ViQ29yZTo6Y291bnRlck1hcHMoKS5nZXQoY3Vy
cmVudCktPmdldChpZGVudGlmaWVyKS5nZXQoKSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6
IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMCk7CiAgICAgfQogICAgIGZmbHVzaChzdGRlcnIpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJl
Y3RpdmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0
aXZlcy5jcHAKaW5kZXggMzRiZWNiYTk4MDk0MTQzYmE5YzczNzU0M2RhMTJkOWI4MThiMGI5Yi4u
Y2EzNzkzMzVlOWMyM2EzOTQwMGJmMmVlZmUwZGI2ZGNkMDhlM2NlNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuY3BwCkBAIC0y
NywxMyArMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIG9wZXJhdG9yPT0oY29u
c3QgQ291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVzJiBiKQogewot
ICAgIGlmIChhLm1fcmVzZXQgIT0gYi5tX3Jlc2V0IHx8IGEubV9pbmNyZW1lbnQgIT0gYi5tX2lu
Y3JlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChhLm1fcmVzZXQgJiYgYS5t
X3Jlc2V0VmFsdWUgIT0gYi5tX3Jlc2V0VmFsdWUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBpZiAoYS5tX2luY3JlbWVudCAmJiBhLm1faW5jcmVtZW50VmFsdWUgIT0gYi5tX2luY3JlbWVu
dFZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0
dXJuIGEuaXNJbmNyZW1lbnQoKSA9PSBiLmlzSW5jcmVtZW50KCkKKyAgICAgICYmIGEuaW5jcmVt
ZW50VmFsdWUoKSA9PSBiLmluY3JlbWVudFZhbHVlKCkgCisgICAgICAmJiBhLmlzUmVzZXQoKSA9
PSBiLmlzUmVzZXQoKQorICAgICAgJiYgYS5yZXNldFZhbHVlKCkgPT0gYi5yZXNldFZhbHVlKCk7
CiB9CiAKIFBhc3NPd25QdHI8Q291bnRlckRpcmVjdGl2ZU1hcD4gY2xvbmUoY29uc3QgQ291bnRl
ckRpcmVjdGl2ZU1hcCYgY291bnRlckRpcmVjdGl2ZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5oCmluZGV4IDFiZGNiOTA2MTUzZGYz
ZmQ1YWI3OGEyNjE1MGU2YmM1YjhlZmQwMDUuLjI4NDhjNDQxOWVjZTFjOTJhZmJhOTBhN2EzMDE0
NWQyMDllZTIzZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b3VudGVyRGlyZWN0aXZlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9D
b3VudGVyRGlyZWN0aXZlcy5oCkBAIC0yNiwxOCArMjYsNzIgQEAKICNkZWZpbmUgQ291bnRlckRp
cmVjdGl2ZXNfaAogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWF0
aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9taWNTdHJpbmdJbXBsLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nSGFzaC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0cnVjdCBDb3VudGVyRGlyZWN0aXZlcyB7CitjbGFzcyBDb3VudGVyRGlyZWN0aXZl
cyB7CitwdWJsaWM6CiAgICAgQ291bnRlckRpcmVjdGl2ZXMoKQogICAgICAgICA6IG1fcmVzZXQo
ZmFsc2UpCiAgICAgICAgICwgbV9pbmNyZW1lbnQoZmFsc2UpCisgICAgICAgICwgbV9yZXNldFZh
bHVlKDApCisgICAgICAgICwgbV9pbmNyZW1lbnRWYWx1ZSgwKQogICAgIHsKICAgICB9CiAKKyAg
ICAvLyBGSVhNRTogVGhlIGNvZGUgZHVwbGljYXRpb24gaGVyZSBjb3VsZCBwb3NzaWJseSBiZSBy
ZXBsYWNlZCBieSB1c2luZyB0d28KKyAgICAvLyBtYXBzLCBvciBieSB1c2luZyBhIGNvbnRhaW5l
ciB0aGF0IGhlbGQgdHdvIGdlbmVyaWMgRGlyZWN0aXZlIG9iamVjdHMuCisKKyAgICBib29sIGlz
UmVzZXQoKSBjb25zdCB7IHJldHVybiBtX3Jlc2V0OyB9CisgICAgaW50IHJlc2V0VmFsdWUoKSBj
b25zdCB7IHJldHVybiBtX3Jlc2V0VmFsdWU7IH0KKyAgICB2b2lkIHNldFJlc2V0VmFsdWUoaW50
IHZhbHVlKQorICAgIHsKKyAgICAgICAgbV9yZXNldFZhbHVlID0gdmFsdWU7CisgICAgICAgIG1f
cmVzZXQgPSB0cnVlOworICAgIH0KKyAgICB2b2lkIGNsZWFyUmVzZXQoKQorICAgIHsKKyAgICAg
ICAgbV9yZXNldCA9IGZhbHNlOworICAgICAgICBtX3Jlc2V0VmFsdWUgPSAwOworICAgIH0KKyAg
ICB2b2lkIGluaGVyaXRSZXNldChDb3VudGVyRGlyZWN0aXZlcyYgcGFyZW50KQorICAgIHsKKyAg
ICAgICAgbV9yZXNldCA9IHBhcmVudC5tX3Jlc2V0OworICAgICAgICBtX3Jlc2V0VmFsdWUgPSBw
YXJlbnQubV9yZXNldFZhbHVlOworICAgIH0KKworICAgIGJvb2wgaXNJbmNyZW1lbnQoKSBjb25z
dCB7IHJldHVybiBtX2luY3JlbWVudDsgfQorICAgIGludCBpbmNyZW1lbnRWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1faW5jcmVtZW50VmFsdWU7IH0KKyAgICB2b2lkIGFkZEluY3JlbWVudFZhbHVl
KGludCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1faW5jcmVtZW50ID0gdHJ1ZTsKKyAgICAgICAg
bV9pbmNyZW1lbnRWYWx1ZSA9IGNsYW1wVG9JbnRlZ2VyKChkb3VibGUpbV9pbmNyZW1lbnRWYWx1
ZSArIHZhbHVlKTsKKyAgICB9CisgICAgdm9pZCBjbGVhckluY3JlbWVudCgpCisgICAgeworICAg
ICAgICBtX2luY3JlbWVudCA9IGZhbHNlOworICAgICAgICBtX2luY3JlbWVudFZhbHVlID0gMDsK
KyAgICB9CisgICAgdm9pZCBpbmhlcml0SW5jcmVtZW50KENvdW50ZXJEaXJlY3RpdmVzJiBwYXJl
bnQpCisgICAgeworICAgICAgICBtX2luY3JlbWVudCA9IHBhcmVudC5tX2luY3JlbWVudDsKKyAg
ICAgICAgbV9pbmNyZW1lbnRWYWx1ZSA9IHBhcmVudC5tX2luY3JlbWVudFZhbHVlOworICAgIH0K
KworICAgIGJvb2wgaXNEZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldCB8fCBtX2luY3Jl
bWVudDsgfQorICAgIGludCB2YWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQobV9y
ZXNldCB8fCAhbV9yZXNldFZhbHVlKTsKKyAgICAgICAgQVNTRVJUKG1faW5jcmVtZW50IHx8ICFt
X2luY3JlbWVudFZhbHVlKTsKKyAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCBhbGxvdyBvdmVy
ZmxvdyBoZXJlIGVpdGhlci4KKyAgICAgICAgcmV0dXJuIG1fcmVzZXRWYWx1ZSArIG1faW5jcmVt
ZW50VmFsdWU7CisgICAgfQorCitwcml2YXRlOgogICAgIGJvb2wgbV9yZXNldDsKICAgICBib29s
IG1faW5jcmVtZW50OwogICAgIGludCBtX3Jlc2V0VmFsdWU7CkBAIC00Nyw3ICsxMDEsNyBAQCBz
dHJ1Y3QgQ291bnRlckRpcmVjdGl2ZXMgewogYm9vbCBvcGVyYXRvcj09KGNvbnN0IENvdW50ZXJE
aXJlY3RpdmVzJiwgY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmKTsKIGlubGluZSBib29sIG9wZXJh
dG9yIT0oY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0IENvdW50ZXJEaXJlY3RpdmVz
JiBiKSB7IHJldHVybiAhKGEgPT0gYik7IH0KIAotdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxBdG9t
aWNTdHJpbmdJbXBsPiwgQ291bnRlckRpcmVjdGl2ZXM+IENvdW50ZXJEaXJlY3RpdmVNYXA7Cit0
eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBDb3VudGVyRGlyZWN0aXZlcz4gQ291bnRlckRp
cmVjdGl2ZU1hcDsKIAogUGFzc093blB0cjxDb3VudGVyRGlyZWN0aXZlTWFwPiBjbG9uZShjb25z
dCBDb3VudGVyRGlyZWN0aXZlTWFwJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDcyYTQzODk2MTFjOGY1ZGFhNDA3MjlmZGUyMzE3
YjBkMTI0ODhjMDguLmE5YzEzZGM1OTMyODhjMzAyNmNkZWJmZDdlYmQ0MmE5MzkyNmNlZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcApAQCAt
MTAyNCw2ICsxMDI0LDEzIEBAIENvdW50ZXJEaXJlY3RpdmVNYXAmIFJlbmRlclN0eWxlOjphY2Nl
c3NDb3VudGVyRGlyZWN0aXZlcygpCiAgICAgcmV0dXJuICptYXA7CiB9CiAKK2NvbnN0IENvdW50
ZXJEaXJlY3RpdmVzIFJlbmRlclN0eWxlOjpnZXRDb3VudGVyRGlyZWN0aXZlcyhjb25zdCBBdG9t
aWNTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0Cit7CisgICAgaWYgKGNvbnN0IENvdW50ZXJEaXJl
Y3RpdmVNYXAqIGRpcmVjdGl2ZXMgPSBjb3VudGVyRGlyZWN0aXZlcygpKQorICAgICAgICByZXR1
cm4gZGlyZWN0aXZlcy0+Z2V0KGlkZW50aWZpZXIpOworICAgIHJldHVybiBDb3VudGVyRGlyZWN0
aXZlcygpOworfQorCiBjb25zdCBBdG9taWNTdHJpbmcmIFJlbmRlclN0eWxlOjpoeXBoZW5TdHJp
bmcoKSBjb25zdAogewogICAgIEFTU0VSVChoeXBoZW5zKCkgIT0gSHlwaGVuc05vbmUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwOTI1Zjgw
YjdjNGJmYmVmMGNmNThhMmNkNTMwZWVkZTc3ZTczYTQ3Li41MmU3ZDdlNTAwNWYxZDcyM2FmMDdm
NzZhYTRlZTZlMTYyZGJmNTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaApAQCAtMTQ3NCw2ICsxNDc0LDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
Q291bnRlckRpcmVjdGl2ZU1hcCogY291bnRlckRpcmVjdGl2ZXMoKSBjb25zdDsKICAgICBDb3Vu
dGVyRGlyZWN0aXZlTWFwJiBhY2Nlc3NDb3VudGVyRGlyZWN0aXZlcygpOworICAgIGNvbnN0IENv
dW50ZXJEaXJlY3RpdmVzIGdldENvdW50ZXJEaXJlY3RpdmVzKGNvbnN0IEF0b21pY1N0cmluZyYg
aWRlbnRpZmllcikgY29uc3Q7CiAKICAgICBRdW90ZXNEYXRhKiBxdW90ZXMoKSBjb25zdCB7IHJl
dHVybiByYXJlSW5oZXJpdGVkRGF0YS0+cXVvdGVzLmdldCgpOyB9CiAgICAgdm9pZCBzZXRRdW90
ZXMoUGFzc1JlZlB0cjxRdW90ZXNEYXRhPik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162643</attachid>
            <date>2012-09-06 18:36:52 -0700</date>
            <delta_ts>2012-09-06 22:21:47 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-94587-20120906183633.patch</filename>
            <type>text/plain</type>
            <size>23826</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDU4MTk5OWU5ZDg4NmJm
NTUzYmMwMmNhMTA2NTY4YTgxN2M2ZmZkNC4uMmE4NWNmYTBmNjcwYmJjZjAxNzE5ZWQ2NDk2OTk2
YTc2YTk5NGZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEyLTA5LTA2ICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBtZXRob2Rz
IHRvIENvdW50ZXJEaXJlY3RpdmVzIHRvIGNsZWFuIHVwIFN0eWxlQnVpbGRlciBhbmQgUmVuZGVy
Q291bnRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk0NTg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSnVsaWVuIENoYWZmcmFpeC4KKworICAgICAg
ICBBZGRzIHNldmVyYWwgbWV0aG9kcyB0byBDb3VudGVyRGlyZWN0aXZlcyBhbmQgYW4gYWNjZXNz
b3IgbWV0aG9kIHRvIFJlbmRlclN0eWxlIGZvcgorICAgICAgICBnZXR0aW5nIHRoZSBDb3VudGVy
RGlyZWN0aXZlcyBieSBpZGVuZml0aWVyIGFuZCB1c2VzIHRob3NlIG1ldGhvZHMgdG8gY2xlYW4g
dXAKKyAgICAgICAgdGhlIGNvZGUgaW4gU3R5bGVCdWlsZGVyIGFuZCBSZW5kZXJDb3VudGVyLiBU
aGlzIGFsc28gc3dpdGNoZXMgdG8gdXNpbmcgQXRvbWljU3RyaW5nCisgICAgICAgIGRpcmVjdGx5
IGluc3RlYWQgb2YgQXRvbWljU3RyaW5nSW1wbCBhbmQgY2FsbGluZyBnZXQoKSBldmVyeXdoZXJl
LgorCisgICAgICAgIFRoZSByZWZhY3RvciBmaXhlcyB0aGUgdW5pdGlhbGl6ZWQgcmVhZCBpbiBX
S0J1ZyA5NDY0Mi4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXJl
c2V0LWluaGVyaXQtYnVnLTk0NjQyLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291bnRlclRvQ1NTVmFsdWUp
OiBVc2UgbmV3IGFjY2Vzc29ycy4KKyAgICAgICAgKiBjc3MvU3R5bGVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGx5UHJvcGVydHlDb3VudGVyOjphcHBseUluaGVyaXRWYWx1ZSk6
IFVzZSBuZXcgaW5oZXJpdCBtZXRob2RzLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0
eUNvdW50ZXI6OmFwcGx5VmFsdWUpOiBVc2UgbmV3IHNldHRlcnMuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckNvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpwbGFuQ291bnRlcik6CisgICAgICAgIChXZWJDb3JlOjptYWtlQ291bnRlck5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6ZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92YWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJOb2Rlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJDb3VudGVyOjpkZXN0cm95Q291bnRlck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6dXBkYXRlQ291bnRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
Q291bnRlcjo6cmVuZGVyZXJTdHlsZUNoYW5nZWQpOgorICAgICAgICAoc2hvd0NvdW50ZXJSZW5k
ZXJlclRyZWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3R5bGUvQ291bnRlckRpcmVjdGl2ZXMuaDogQWRkZWQgbmV3IGFjY2Vzc29ycyBhbmQgc3dpdGNo
ZWQgdG8gdXNpbmcgQXRvbWljU3RyaW5nIGRpcmVjdGx5LgorICAgICAgICAoQ291bnRlckRpcmVj
dGl2ZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRlckRpcmVjdGl2ZXM6OkNvdW50ZXJEaXJl
Y3RpdmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjppc1Jlc2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjpyZXNldFZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjpzZXRSZXNldFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNvdW50ZXJEaXJlY3RpdmVzOjpjbGVhclJlc2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNvdW50ZXJEaXJlY3RpdmVzOjppbmhlcml0UmVzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q291bnRlckRpcmVjdGl2ZXM6OmlzSW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50
ZXJEaXJlY3RpdmVzOjppbmNyZW1lbnRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb3VudGVy
RGlyZWN0aXZlczo6YWRkSW5jcmVtZW50VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6Q291bnRl
ckRpcmVjdGl2ZXM6OmNsZWFySW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJE
aXJlY3RpdmVzOjppbmhlcml0SW5jcmVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNvdW50ZXJE
aXJlY3RpdmVzOjppc0RlZmluZWQpOiBJZiBlaXRoZXIgcmVzZXQgb3IgaW5jcmVtZW50IGlzIHVz
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb3VudGVyRGlyZWN0aXZlczo6Y29tYmluZWRWYWx1ZSk6
IENvbWJpbmVkIGxvY2FsIHZhbHVlIG9mIHRoZSBjb3VudGVyLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN0eWxlOjpnZXRDb3VudGVyRGlyZWN0aXZlcyk6IE5ldyBtZXRob2Qgd2hp
Y2ggYWx3YXlzIHJldHVybnMgYSBDb3VudGVyRGlyZWN0aXZlcyBpbnN0YW5jZSBieSBpZGVudGlm
aWVyLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRl
clN0eWxlLmg6CisKIDIwMTItMDktMDYgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3Nz
YS5vcmc+CiAKICAgICAgICAgW1F0XSBEZXByZWNhdGUgU3RyaW5nICs9IG9wZXJhdG9yCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDMxY2U2Y2JiY2NhYWY3NDA3NGRkOTE0ZTlhYzE4NzZiNTc3MDc3ZTUuLmFhYjUwMGYwNWJi
NDlkZjc2MzNhY2U2YjMzYTY2NTEwZGZlZjQwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xMjg3LDggKzEyODcsOCBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVu
ZGVyU3R5bGUqIHN0eWxlLCBDU1NQcm9wZQogCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlz
dCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3BhY2VTZXBhcmF0ZWQoKTsKICAgICBmb3IgKENvdW50
ZXJEaXJlY3RpdmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbWFwLT5iZWdpbigpOyBpdCAhPSBt
YXAtPmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5j
cmVhdGVWYWx1ZShpdC0+Zmlyc3QuZ2V0KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
KSk7Ci0gICAgICAgIHNob3J0IG51bWJlciA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDb3Vu
dGVySW5jcmVtZW50ID8gaXQtPnNlY29uZC5tX2luY3JlbWVudFZhbHVlIDogaXQtPnNlY29uZC5t
X3Jlc2V0VmFsdWU7CisgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZShpdC0+Zmlyc3QsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CisgICAgICAg
IHNob3J0IG51bWJlciA9IHByb3BlcnR5SUQgPT0gQ1NTUHJvcGVydHlDb3VudGVySW5jcmVtZW50
ID8gaXQtPnNlY29uZC5pbmNyZW1lbnRWYWx1ZSgpIDogaXQtPnNlY29uZC5yZXNldFZhbHVlKCk7
CiAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZSgoZG91Ymxl
KW51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICB9CiAgICAgcmV0
dXJuIGxpc3QucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNwcAppbmRleCAx
MmVlY2RlODZlNDk4ODUwZTQ1ZGI1YjExNjUzMDBiZmE5YzM0Y2I2Li5lZDBhMTVmYmMzZmQwZjJh
NTFiYjc5NzcyYzA3YjlmNDQ2NWRkNDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyLmNw
cApAQCAtMTAxMywyMCArMTAxMyw5IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChJdGVyYXRvciBp
dCA9IHBhcmVudE1hcC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgICAgIENv
dW50ZXJEaXJlY3RpdmVzJiBkaXJlY3RpdmVzID0gbWFwLmFkZChpdC0+Zmlyc3QsIENvdW50ZXJE
aXJlY3RpdmVzKCkpLml0ZXJhdG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJl
aGF2aW9yID09IFJlc2V0KSB7Ci0gICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0g
aXQtPnNlY29uZC5tX3Jlc2V0OwotICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9yZXNldFZh
bHVlID0gaXQtPnNlY29uZC5tX3Jlc2V0VmFsdWU7CisgICAgICAgICAgICAgICAgZGlyZWN0aXZl
cy5pbmhlcml0UmVzZXQoaXQtPnNlY29uZCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgICAgIC8vIEluaGVyaXRpbmcgYSBjb3VudGVyLWluY3JlbWVudCBtZWFucyB0YWtpbmcg
dGhlIHBhcmVudCdzIGN1cnJlbnQgdmFsdWUgZm9yIHRoZSBjb3VudGVyCi0gICAgICAgICAgICAg
ICAgLy8gYW5kIGFkZGluZyBpdCB0byBpdHNlbGYuCi0gICAgICAgICAgICAgICAgZGlyZWN0aXZl
cy5tX2luY3JlbWVudCA9IGl0LT5zZWNvbmQubV9pbmNyZW1lbnQ7Ci0gICAgICAgICAgICAgICAg
ZGlyZWN0aXZlcy5tX2luY3JlbWVudFZhbHVlID0gMDsKLSAgICAgICAgICAgICAgICBpZiAoZGly
ZWN0aXZlcy5tX2luY3JlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBmbG9hdCBpbmNyZW1l
bnRWYWx1ZSA9IGRpcmVjdGl2ZXMubV9pbmNyZW1lbnRWYWx1ZTsKLSAgICAgICAgICAgICAgICAg
ICAgZGlyZWN0aXZlcy5tX2luY3JlbWVudFZhbHVlID0gY2xhbXBUb0ludGVnZXIoaW5jcmVtZW50
VmFsdWUgKyBpdC0+c2Vjb25kLm1faW5jcmVtZW50VmFsdWUpOwotICAgICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMubV9pbmNyZW1lbnQgPSB0cnVl
OwotICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBpdC0+
c2Vjb25kLm1faW5jcmVtZW50VmFsdWU7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGRpcmVjdGl2ZXMuaW5oZXJpdEluY3JlbWVudChpdC0+c2Vjb25kKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTEwNDMsOSArMTAzMiw5IEBAIHB1YmxpYzoKICAgICAg
ICAgSXRlcmF0b3IgZW5kID0gbWFwLmVuZCgpOwogICAgICAgICBmb3IgKEl0ZXJhdG9yIGl0ID0g
bWFwLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgICAgIGlmIChjb3VudGVyQmVo
YXZpb3IgPT0gUmVzZXQpCi0gICAgICAgICAgICAgICAgaXQtPnNlY29uZC5tX3Jlc2V0ID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgaXQtPnNlY29uZC5jbGVhclJlc2V0KCk7CiAgICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgaXQtPnNlY29uZC5tX2luY3JlbWVudCA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQuY2xlYXJJbmNyZW1lbnQoKTsKIAogICAgICAgICBp
bnQgbGVuZ3RoID0gbGlzdCA/IGxpc3QtPmxlbmd0aCgpIDogMDsKICAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewpAQCAtMTA1OSwyMCArMTA0OCwxMiBAQCBwdWJsaWM6
CiAKICAgICAgICAgICAgIEF0b21pY1N0cmluZyBpZGVudGlmaWVyID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPihwYWlyLT5maXJzdCgpKS0+Z2V0U3RyaW5nVmFsdWUoKTsKICAgICAg
ICAgICAgIGludCB2YWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4ocGFpci0+
c2Vjb25kKCkpLT5nZXRJbnRWYWx1ZSgpOwotICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMm
IGRpcmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIuaW1wbCgpLCBDb3VudGVyRGlyZWN0aXZl
cygpKS5pdGVyYXRvci0+c2Vjb25kOworICAgICAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMmIGRp
cmVjdGl2ZXMgPSBtYXAuYWRkKGlkZW50aWZpZXIsIENvdW50ZXJEaXJlY3RpdmVzKCkpLml0ZXJh
dG9yLT5zZWNvbmQ7CiAgICAgICAgICAgICBpZiAoY291bnRlckJlaGF2aW9yID09IFJlc2V0KSB7
Ci0gICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX3Jlc2V0ID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICBkaXJlY3RpdmVzLm1fcmVzZXRWYWx1ZSA9IHZhbHVlOworICAgICAgICAgICAgICAgIGRp
cmVjdGl2ZXMuc2V0UmVzZXRWYWx1ZSh2YWx1ZSk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChkaXJlY3RpdmVzLm1faW5jcmVtZW50KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGZsb2F0IGluY3JlbWVudFZhbHVlID0gZGlyZWN0aXZlcy5tX2luY3JlbWVudFZhbHVl
OwotICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWUgPSBjbGFt
cFRvSW50ZWdlcihpbmNyZW1lbnRWYWx1ZSArIHZhbHVlKTsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgewotICAgICAgICAgICAgICAgICAgICBkaXJlY3RpdmVzLm1faW5jcmVtZW50ID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgZGlyZWN0aXZlcy5tX2luY3JlbWVudFZhbHVlID0gdmFsdWU7
Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXMuYWRkSW5jcmVt
ZW50VmFsdWUodmFsdWUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAgIH0K
ICAgICB9CiAgICAgc3RhdGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkgeyByZXR1
cm4gUHJvcGVydHlIYW5kbGVyKCZhcHBseUluaGVyaXRWYWx1ZSwgJmVtcHR5RnVuY3Rpb24sICZh
cHBseVZhbHVlKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckNvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckNvdW50ZXIuY3Bw
CmluZGV4IGJjMGJhMTEyM2VjNDM3ZTBmZTBmNzFjZDQwNzI0MDhhYTUwYWQ1ZGUuLmUzNDk2YjEz
NjU2MmExYTFjN2IwMmVlMTdiN2MxMGM0NGIxYTRjMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQ291bnRlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi10eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPEF0b21pY1N0cmluZ0ltcGw+LCBSZWZQdHI8Q291bnRlck5vZGU+ID4gQ291bnRlck1hcDsK
K3R5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIFJlZlB0cjxDb3VudGVyTm9kZT4gPiBDb3Vu
dGVyTWFwOwogdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFJlbmRlck9iamVjdCosIE93blB0cjxDb3Vu
dGVyTWFwPiA+IENvdW50ZXJNYXBzOwogCiBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVy
Tm9kZShSZW5kZXJPYmplY3QqLCBjb25zdCBBdG9taWNTdHJpbmcmIGlkZW50aWZpZXIsIGJvb2wg
YWx3YXlzQ3JlYXRlQ291bnRlcik7CkBAIC0yNDIsMjAgKzI0MiwxMSBAQCBzdGF0aWMgYm9vbCBw
bGFuQ291bnRlcihSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZGVu
dGlmaWVyLCBibwogICAgICAgICByZXR1cm4gZmFsc2U7IC8vIENvdW50ZXJzIGFyZSBmb3JiaWRk
ZW4gZnJvbSBhbGwgb3RoZXIgcHNldWRvIGVsZW1lbnRzLgogICAgIH0KIAotICAgIGlmIChjb25z
dCBDb3VudGVyRGlyZWN0aXZlTWFwKiBkaXJlY3RpdmVzTWFwID0gc3R5bGUtPmNvdW50ZXJEaXJl
Y3RpdmVzKCkpIHsKLSAgICAgICAgQ291bnRlckRpcmVjdGl2ZXMgZGlyZWN0aXZlcyA9IGRpcmVj
dGl2ZXNNYXAtPmdldChpZGVudGlmaWVyLmltcGwoKSk7Ci0gICAgICAgIGlmIChkaXJlY3RpdmVz
Lm1fcmVzZXQpIHsKLSAgICAgICAgICAgIHZhbHVlID0gZGlyZWN0aXZlcy5tX3Jlc2V0VmFsdWU7
Ci0gICAgICAgICAgICBpZiAoZGlyZWN0aXZlcy5tX2luY3JlbWVudCkKLSAgICAgICAgICAgICAg
ICB2YWx1ZSArPSBkaXJlY3RpdmVzLm1faW5jcmVtZW50VmFsdWU7Ci0gICAgICAgICAgICBpc1Jl
c2V0ID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGlmIChkaXJlY3RpdmVzLm1faW5jcmVtZW50KSB7Ci0gICAgICAgICAgICB2YWx1ZSA9IGRpcmVj
dGl2ZXMubV9pbmNyZW1lbnRWYWx1ZTsKLSAgICAgICAgICAgIGlzUmVzZXQgPSBmYWxzZTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9CisgICAgY29uc3QgQ291bnRlckRpcmVj
dGl2ZXMgZGlyZWN0aXZlcyA9IHN0eWxlLT5nZXRDb3VudGVyRGlyZWN0aXZlcyhpZGVudGlmaWVy
KTsKKyAgICBpZiAoZGlyZWN0aXZlcy5pc0RlZmluZWQoKSkgeworICAgICAgICB2YWx1ZSA9IGRp
cmVjdGl2ZXMuY29tYmluZWRWYWx1ZSgpOworICAgICAgICBpc1Jlc2V0ID0gZGlyZWN0aXZlcy5p
c1Jlc2V0KCk7CisgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIGlmIChpZGVudGlm
aWVyID09ICJsaXN0LWl0ZW0iKSB7CkBAIC00MjEsNyArNDEyLDcgQEAgc3RhdGljIENvdW50ZXJO
b2RlKiBtYWtlQ291bnRlck5vZGUoUmVuZGVyT2JqZWN0KiBvYmplY3QsIGNvbnN0IEF0b21pY1N0
cmluZyYgaWQKIAogICAgIGlmIChvYmplY3QtPmhhc0NvdW50ZXJOb2RlTWFwKCkpIHsKICAgICAg
ICAgaWYgKENvdW50ZXJNYXAqIG5vZGVNYXAgPSBjb3VudGVyTWFwcygpLmdldChvYmplY3QpKSB7
Ci0gICAgICAgICAgICBpZiAoQ291bnRlck5vZGUqIG5vZGUgPSBub2RlTWFwLT5nZXQoaWRlbnRp
Zmllci5pbXBsKCkpLmdldCgpKQorICAgICAgICAgICAgaWYgKENvdW50ZXJOb2RlKiBub2RlID0g
bm9kZU1hcC0+Z2V0KGlkZW50aWZpZXIpLmdldCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBu
b2RlOwogICAgICAgICB9CiAgICAgfQpAQCAtNDQ0LDcgKzQzNSw3IEBAIHN0YXRpYyBDb3VudGVy
Tm9kZSogbWFrZUNvdW50ZXJOb2RlKFJlbmRlck9iamVjdCogb2JqZWN0LCBjb25zdCBBdG9taWNT
dHJpbmcmIGlkCiAgICAgICAgIGNvdW50ZXJNYXBzKCkuc2V0KG9iamVjdCwgYWRvcHRQdHIobm9k
ZU1hcCkpOwogICAgICAgICBvYmplY3QtPnNldEhhc0NvdW50ZXJOb2RlTWFwKHRydWUpOwogICAg
IH0KLSAgICBub2RlTWFwLT5zZXQoaWRlbnRpZmllci5pbXBsKCksIG5ld05vZGUpOworICAgIG5v
ZGVNYXAtPnNldChpZGVudGlmaWVyLCBuZXdOb2RlKTsKICAgICBpZiAobmV3Tm9kZS0+cGFyZW50
KCkpCiAgICAgICAgIHJldHVybiBuZXdOb2RlLmdldCgpOwogICAgIC8vIENoZWNraW5nIGlmIHNv
bWUgbm9kZXMgdGhhdCB3ZXJlIHByZXZpb3VzbHkgY291bnRlciB0cmVlIHJvb3Qgbm9kZXMKQEAg
LTQ1Niw3ICs0NDcsNyBAQCBzdGF0aWMgQ291bnRlck5vZGUqIG1ha2VDb3VudGVyTm9kZShSZW5k
ZXJPYmplY3QqIG9iamVjdCwgY29uc3QgQXRvbWljU3RyaW5nJiBpZAogICAgICAgICBza2lwRGVz
Y2VuZGFudHMgPSBmYWxzZTsKICAgICAgICAgaWYgKCFjdXJyZW50UmVuZGVyZXItPmhhc0NvdW50
ZXJOb2RlTWFwKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgQ291bnRlck5vZGUq
IGN1cnJlbnRDb3VudGVyID0gbWFwcy5nZXQoY3VycmVudFJlbmRlcmVyKS0+Z2V0KGlkZW50aWZp
ZXIuaW1wbCgpKS5nZXQoKTsKKyAgICAgICAgQ291bnRlck5vZGUqIGN1cnJlbnRDb3VudGVyID0g
bWFwcy5nZXQoY3VycmVudFJlbmRlcmVyKS0+Z2V0KGlkZW50aWZpZXIpLmdldCgpOwogICAgICAg
ICBpZiAoIWN1cnJlbnRDb3VudGVyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHNr
aXBEZXNjZW5kYW50cyA9IHRydWU7CkBAIC01NjQsOCArNTU1LDggQEAgc3RhdGljIHZvaWQgZGVz
dHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJlbW92YWwoY29uc3QgQXRvbWljU3RyaW5nJiBpZGVu
dGlmaWVyLAogICAgIGZvciAoUmVmUHRyPENvdW50ZXJOb2RlPiBjaGlsZCA9IG5vZGUtPmxhc3RE
ZXNjZW5kYW50KCk7IGNoaWxkICYmIGNoaWxkICE9IG5vZGU7IGNoaWxkID0gcHJldmlvdXMpIHsK
ICAgICAgICAgcHJldmlvdXMgPSBjaGlsZC0+cHJldmlvdXNJblByZU9yZGVyKCk7CiAgICAgICAg
IGNoaWxkLT5wYXJlbnQoKS0+cmVtb3ZlQ2hpbGQoY2hpbGQuZ2V0KCkpOwotICAgICAgICBBU1NF
UlQoY291bnRlck1hcHMoKS5nZXQoY2hpbGQtPm93bmVyKCkpLT5nZXQoaWRlbnRpZmllci5pbXBs
KCkpID09IGNoaWxkKTsKLSAgICAgICAgY291bnRlck1hcHMoKS5nZXQoY2hpbGQtPm93bmVyKCkp
LT5yZW1vdmUoaWRlbnRpZmllci5pbXBsKCkpOworICAgICAgICBBU1NFUlQoY291bnRlck1hcHMo
KS5nZXQoY2hpbGQtPm93bmVyKCkpLT5nZXQoaWRlbnRpZmllcikgPT0gY2hpbGQpOworICAgICAg
ICBjb3VudGVyTWFwcygpLmdldChjaGlsZC0+b3duZXIoKSktPnJlbW92ZShpZGVudGlmaWVyKTsK
ICAgICB9CiAgICAgaWYgKENvdW50ZXJOb2RlKiBwYXJlbnQgPSBub2RlLT5wYXJlbnQoKSkKICAg
ICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZChub2RlKTsKQEAgLTU4MCw4ICs1NzEsNyBAQCB2b2lk
IFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZXMoUmVuZGVyT2JqZWN0KiBvd25lcikK
ICAgICBDb3VudGVyTWFwKiBtYXAgPSBtYXBzSXRlcmF0b3ItPnNlY29uZC5nZXQoKTsKICAgICBD
b3VudGVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtYXAtPmVuZCgpOwogICAgIGZvciAoQ291
bnRlck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBBdG9taWNTdHJpbmcgaWRlbnRpZmllcihpdC0+Zmlyc3QuZ2V0KCkpOwot
ICAgICAgICBkZXN0cm95Q291bnRlck5vZGVXaXRob3V0TWFwUmVtb3ZhbChpZGVudGlmaWVyLCBp
dC0+c2Vjb25kLmdldCgpKTsKKyAgICAgICAgZGVzdHJveUNvdW50ZXJOb2RlV2l0aG91dE1hcFJl
bW92YWwoaXQtPmZpcnN0LCBpdC0+c2Vjb25kLmdldCgpKTsKICAgICB9CiAgICAgbWFwcy5yZW1v
dmUobWFwc0l0ZXJhdG9yKTsKICAgICBvd25lci0+c2V0SGFzQ291bnRlck5vZGVNYXAoZmFsc2Up
OwpAQCAtNTkyLDcgKzU4Miw3IEBAIHZvaWQgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNvdW50ZXJO
b2RlKFJlbmRlck9iamVjdCogb3duZXIsIGNvbnN0IEF0b21pY1N0cmluZyYKICAgICBDb3VudGVy
TWFwKiBtYXAgPSBjb3VudGVyTWFwcygpLmdldChvd25lcik7CiAgICAgaWYgKCFtYXApCiAgICAg
ICAgIHJldHVybjsKLSAgICBDb3VudGVyTWFwOjppdGVyYXRvciBtYXBJdGVyYXRvciA9IG1hcC0+
ZmluZChpZGVudGlmaWVyLmltcGwoKSk7CisgICAgQ291bnRlck1hcDo6aXRlcmF0b3IgbWFwSXRl
cmF0b3IgPSBtYXAtPmZpbmQoaWRlbnRpZmllcik7CiAgICAgaWYgKG1hcEl0ZXJhdG9yID09IG1h
cC0+ZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBkZXN0cm95Q291bnRlck5vZGVXaXRob3V0
TWFwUmVtb3ZhbChpZGVudGlmaWVyLCBtYXBJdGVyYXRvci0+c2Vjb25kLmdldCgpKTsKQEAgLTYz
NSwyMiArNjI1LDIyIEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUNvdW50ZXJzKFJlbmRlck9iamVjdCog
cmVuZGVyZXIpCiAgICAgQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
ZGlyZWN0aXZlTWFwLT5lbmQoKTsKICAgICBpZiAoIXJlbmRlcmVyLT5oYXNDb3VudGVyTm9kZU1h
cCgpKSB7CiAgICAgICAgIGZvciAoQ291bnRlckRpcmVjdGl2ZU1hcDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBkaXJlY3RpdmVNYXAtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgICAg
IG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwgQXRvbWljU3RyaW5nKGl0LT5maXJzdC5nZXQoKSks
IGZhbHNlKTsKKyAgICAgICAgICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmZpcnN0
LCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQ291bnRlck1hcCogY291bnRl
ck1hcCA9IGNvdW50ZXJNYXBzKCkuZ2V0KHJlbmRlcmVyKTsKICAgICBBU1NFUlQoY291bnRlck1h
cCk7CiAgICAgZm9yIChDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IGRp
cmVjdGl2ZU1hcC0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlZlB0cjxD
b3VudGVyTm9kZT4gbm9kZSA9IGNvdW50ZXJNYXAtPmdldChpdC0+Zmlyc3QuZ2V0KCkpOworICAg
ICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5vZGUgPSBjb3VudGVyTWFwLT5nZXQoaXQtPmZpcnN0
KTsKICAgICAgICAgaWYgKCFub2RlKSB7Ci0gICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVu
ZGVyZXIsIEF0b21pY1N0cmluZyhpdC0+Zmlyc3QuZ2V0KCkpLCBmYWxzZSk7CisgICAgICAgICAg
ICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIsIGl0LT5maXJzdCwgZmFsc2UpOwogICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgUmVmUHRyPENvdW50ZXJOb2RlPiBuZXdQ
YXJlbnQgPSAwOwogICAgICAgICBSZWZQdHI8Q291bnRlck5vZGU+IG5ld1ByZXZpb3VzU2libGlu
ZyA9IDA7CiAgICAgICAgIAotICAgICAgICBmaW5kUGxhY2VGb3JDb3VudGVyKHJlbmRlcmVyLCBB
dG9taWNTdHJpbmcoaXQtPmZpcnN0LmdldCgpKSwgbm9kZS0+aGFzUmVzZXRUeXBlKCksIG5ld1Bh
cmVudCwgbmV3UHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgaWYgKG5vZGUgIT0gY291bnRlck1h
cC0+Z2V0KGl0LT5maXJzdC5nZXQoKSkpCisgICAgICAgIGZpbmRQbGFjZUZvckNvdW50ZXIocmVu
ZGVyZXIsIGl0LT5maXJzdCwgbm9kZS0+aGFzUmVzZXRUeXBlKCksIG5ld1BhcmVudCwgbmV3UHJl
dmlvdXNTaWJsaW5nKTsKKyAgICAgICAgaWYgKG5vZGUgIT0gY291bnRlck1hcC0+Z2V0KGl0LT5m
aXJzdCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgQ291bnRlck5vZGUqIHBhcmVu
dCA9IG5vZGUtPnBhcmVudCgpOwogICAgICAgICBpZiAobmV3UGFyZW50ID09IHBhcmVudCAmJiBu
ZXdQcmV2aW91c1NpYmxpbmcgPT0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCkpCkBAIC02NTgsNyAr
NjQ4LDcgQEAgc3RhdGljIHZvaWQgdXBkYXRlQ291bnRlcnMoUmVuZGVyT2JqZWN0KiByZW5kZXJl
cikKICAgICAgICAgaWYgKHBhcmVudCkKICAgICAgICAgICAgIHBhcmVudC0+cmVtb3ZlQ2hpbGQo
bm9kZS5nZXQoKSk7CiAgICAgICAgIGlmIChuZXdQYXJlbnQpCi0gICAgICAgICAgICBuZXdQYXJl
bnQtPmluc2VydEFmdGVyKG5vZGUuZ2V0KCksIG5ld1ByZXZpb3VzU2libGluZy5nZXQoKSwgaXQt
PmZpcnN0LmdldCgpKTsKKyAgICAgICAgICAgIG5ld1BhcmVudC0+aW5zZXJ0QWZ0ZXIobm9kZS5n
ZXQoKSwgbmV3UHJldmlvdXNTaWJsaW5nLmdldCgpLCBpdC0+Zmlyc3QpOwogICAgIH0KIH0KIApA
QCAtNjk0LDE3ICs2ODQsMTcgQEAgdm9pZCBSZW5kZXJDb3VudGVyOjpyZW5kZXJlclN0eWxlQ2hh
bmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHkKICAgICAgICAgICAg
ICAgICBpZiAob2xkTWFwSXQgIT0gb2xkTWFwRW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChvbGRNYXBJdC0+c2Vjb25kID09IGl0LT5zZWNvbmQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgUmVuZGVyQ291bnRlcjo6ZGVzdHJveUNv
dW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QuZ2V0KCkpOworICAgICAgICAgICAgICAgICAg
ICBSZW5kZXJDb3VudGVyOjpkZXN0cm95Q291bnRlck5vZGUocmVuZGVyZXIsIGl0LT5maXJzdCk7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIFdlIG11c3QgY3JlYXRlIHRo
aXMgbm9kZSBoZXJlLCBiZWNhdXNlIHRoZSBjaGFuZ2VkIG5vZGUgbWF5IGJlIGEgbm9kZSB3aXRo
IG5vIGRpc3BsYXkgc3VjaCBhcwogICAgICAgICAgICAgICAgIC8vIGFzIHRob3NlIGNyZWF0ZWQg
YnkgdGhlIGluY3JlbWVudCBvciByZXNldCBkaXJlY3RpdmVzIGFuZCB0aGUgcmUtbGF5b3V0IHRo
YXQgd2lsbCBoYXBwZW4gd2lsbAogICAgICAgICAgICAgICAgIC8vIG5vdCBjYXRjaCB0aGUgY2hh
bmdlIGlmIHRoZSBub2RlIGhhZCBubyBjaGlsZHJlbi4KLSAgICAgICAgICAgICAgICBtYWtlQ291
bnRlck5vZGUocmVuZGVyZXIsIGl0LT5maXJzdC5nZXQoKSwgZmFsc2UpOworICAgICAgICAgICAg
ICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmZpcnN0LCBmYWxzZSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAvLyBEZXN0cm95aW5nIG9sZCBjb3VudGVycyB0aGF0IGRvIG5v
dCBleGlzdCBpbiB0aGUgbmV3IGNvdW50ZXJEaXJlY3RpdmUgbWFwLgogICAgICAgICAgICAgZm9y
IChDb3VudGVyRGlyZWN0aXZlTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG9sZENvdW50ZXJEaXJl
Y3RpdmVzLT5iZWdpbigpOyBpdCAhPW9sZE1hcEVuZDsgKytpdCkgewogICAgICAgICAgICAgICAg
IGlmICghbmV3Q291bnRlckRpcmVjdGl2ZXMtPmNvbnRhaW5zKGl0LT5maXJzdCkpCi0gICAgICAg
ICAgICAgICAgICAgIFJlbmRlckNvdW50ZXI6OmRlc3Ryb3lDb3VudGVyTm9kZShyZW5kZXJlciwg
aXQtPmZpcnN0LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVyQ291bnRlcjo6ZGVz
dHJveUNvdW50ZXJOb2RlKHJlbmRlcmVyLCBpdC0+Zmlyc3QpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYgKHJlbmRlcmVyLT5oYXNDb3VudGVyTm9kZU1h
cCgpKQpAQCAtNzE2LDcgKzcwNiw3IEBAIHZvaWQgUmVuZGVyQ291bnRlcjo6cmVuZGVyZXJTdHls
ZUNoYW5nZWQoUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5CiAgICAgICAg
ICAgICAvLyBXZSBtdXN0IGNyZWF0ZSB0aGlzIG5vZGUgaGVyZSwgYmVjYXVzZSB0aGUgYWRkZWQg
bm9kZSBtYXkgYmUgYSBub2RlIHdpdGggbm8gZGlzcGxheSBzdWNoIGFzCiAgICAgICAgICAgICAv
LyBhcyB0aG9zZSBjcmVhdGVkIGJ5IHRoZSBpbmNyZW1lbnQgb3IgcmVzZXQgZGlyZWN0aXZlcyBh
bmQgdGhlIHJlLWxheW91dCB0aGF0IHdpbGwgaGFwcGVuIHdpbGwKICAgICAgICAgICAgIC8vIG5v
dCBjYXRjaCB0aGUgY2hhbmdlIGlmIHRoZSBub2RlIGhhZCBubyBjaGlsZHJlbi4KLSAgICAgICAg
ICAgIG1ha2VDb3VudGVyTm9kZShyZW5kZXJlciwgaXQtPmZpcnN0LmdldCgpLCBmYWxzZSk7Cisg
ICAgICAgICAgICBtYWtlQ291bnRlck5vZGUocmVuZGVyZXIsIGl0LT5maXJzdCwgZmFsc2UpOwog
ICAgICAgICB9CiAgICAgfQogfQpAQCAtNzQxLDcgKzczMSw3IEBAIHZvaWQgc2hvd0NvdW50ZXJS
ZW5kZXJlclRyZWUoY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3Qg
Y2hhcioKICAgICAgICAgZnByaW50ZihzdGRlcnIsICIlcCBOOiVwIFA6JXAgUFM6JXAgTlM6JXAg
QzolcFxuIiwKICAgICAgICAgICAgIGN1cnJlbnQsIGN1cnJlbnQtPm5vZGUoKSwgY3VycmVudC0+
cGFyZW50KCksIGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpLAogICAgICAgICAgICAgY3VycmVu
dC0+bmV4dFNpYmxpbmcoKSwgY3VycmVudC0+aGFzQ291bnRlck5vZGVNYXAoKSA/Ci0gICAgICAg
ICAgICBjb3VudGVyTmFtZSA/IFdlYkNvcmU6OmNvdW50ZXJNYXBzKCkuZ2V0KGN1cnJlbnQpLT5n
ZXQoaWRlbnRpZmllci5pbXBsKCkpLmdldCgpIDogKFdlYkNvcmU6OkNvdW50ZXJOb2RlKikxIDog
KFdlYkNvcmU6OkNvdW50ZXJOb2RlKikwKTsKKyAgICAgICAgICAgIGNvdW50ZXJOYW1lID8gV2Vi
Q29yZTo6Y291bnRlck1hcHMoKS5nZXQoY3VycmVudCktPmdldChpZGVudGlmaWVyKS5nZXQoKSA6
IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMSA6IChXZWJDb3JlOjpDb3VudGVyTm9kZSopMCk7CiAg
ICAgfQogICAgIGZmbHVzaChzdGRlcnIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9Db3VudGVyRGlyZWN0aXZlcy5jcHAKaW5kZXggMzRiZWNiYTk4MDk0MTQz
YmE5YzczNzU0M2RhMTJkOWI4MThiMGI5Yi4uMDZkNDRkZGY2ZjNmNmUwYjkxODEyNzMyZTQ5MTEz
ODUwN2ZhYzhmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Nv
dW50ZXJEaXJlY3RpdmVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
Q291bnRlckRpcmVjdGl2ZXMuY3BwCkBAIC0yNywxMyArMjcsMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBib29sIG9wZXJhdG9yPT0oY29uc3QgQ291bnRlckRpcmVjdGl2ZXMmIGEsIGNvbnN0
IENvdW50ZXJEaXJlY3RpdmVzJiBiKQogewotICAgIGlmIChhLm1fcmVzZXQgIT0gYi5tX3Jlc2V0
IHx8IGEubV9pbmNyZW1lbnQgIT0gYi5tX2luY3JlbWVudCkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIGlmIChhLm1fcmVzZXQgJiYgYS5tX3Jlc2V0VmFsdWUgIT0gYi5tX3Jlc2V0VmFsdWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoYS5tX2luY3JlbWVudCAmJiBhLm1faW5j
cmVtZW50VmFsdWUgIT0gYi5tX2luY3JlbWVudFZhbHVlKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGEuaXNJbmNyZW1lbnQoKSA9PSBiLmlzSW5j
cmVtZW50KCkKKyAgICAgICYmIGEuaW5jcmVtZW50VmFsdWUoKSA9PSBiLmluY3JlbWVudFZhbHVl
KCkKKyAgICAgICYmIGEuaXNSZXNldCgpID09IGIuaXNSZXNldCgpCisgICAgICAmJiBhLnJlc2V0
VmFsdWUoKSA9PSBiLnJlc2V0VmFsdWUoKTsKIH0KIAogUGFzc093blB0cjxDb3VudGVyRGlyZWN0
aXZlTWFwPiBjbG9uZShjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwJiBjb3VudGVyRGlyZWN0aXZl
cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Db3VudGVyRGly
ZWN0aXZlcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3Rp
dmVzLmgKaW5kZXggMWJkY2I5MDYxNTNkZjNmZDVhYjc4YTI2MTUwZTZiYzViOGVmZDAwNS4uY2Y3
OTNiYjhmMDkzNWM1NDQ3ZDg3NGQ0YTM1ZWZhMGI5OGU3ZjAzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0NvdW50ZXJEaXJlY3RpdmVzLmgKQEAgLTI2LDIwICsy
Niw3NSBAQAogI2RlZmluZSBDb3VudGVyRGlyZWN0aXZlc19oCiAKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZ0ltcGwuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmdI
YXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENvdW50ZXJEaXJlY3RpdmVz
IHsKK2NsYXNzIENvdW50ZXJEaXJlY3RpdmVzIHsKK3B1YmxpYzoKICAgICBDb3VudGVyRGlyZWN0
aXZlcygpCi0gICAgICAgIDogbV9yZXNldChmYWxzZSkKLSAgICAgICAgLCBtX2luY3JlbWVudChm
YWxzZSkKKyAgICAgICAgOiBtX2lzUmVzZXRTZXQoZmFsc2UpCisgICAgICAgICwgbV9pc0luY3Jl
bWVudFNldChmYWxzZSkKKyAgICAgICAgLCBtX3Jlc2V0VmFsdWUoMCkKKyAgICAgICAgLCBtX2lu
Y3JlbWVudFZhbHVlKDApCiAgICAgewogICAgIH0KIAotICAgIGJvb2wgbV9yZXNldDsKLSAgICBi
b29sIG1faW5jcmVtZW50OworICAgIC8vIEZJWE1FOiBUaGUgY29kZSBkdXBsaWNhdGlvbiBoZXJl
IGNvdWxkIHBvc3NpYmx5IGJlIHJlcGxhY2VkIGJ5IHVzaW5nIHR3bworICAgIC8vIG1hcHMsIG9y
IGJ5IHVzaW5nIGEgY29udGFpbmVyIHRoYXQgaGVsZCB0d28gZ2VuZXJpYyBEaXJlY3RpdmUgb2Jq
ZWN0cy4KKworICAgIGJvb2wgaXNSZXNldCgpIGNvbnN0IHsgcmV0dXJuIG1faXNSZXNldFNldDsg
fQorICAgIGludCByZXNldFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9yZXNldFZhbHVlOyB9Cisg
ICAgdm9pZCBzZXRSZXNldFZhbHVlKGludCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fcmVzZXRW
YWx1ZSA9IHZhbHVlOworICAgICAgICBtX2lzUmVzZXRTZXQgPSB0cnVlOworICAgIH0KKyAgICB2
b2lkIGNsZWFyUmVzZXQoKQorICAgIHsKKyAgICAgICAgbV9yZXNldFZhbHVlID0gMDsKKyAgICAg
ICAgbV9pc1Jlc2V0U2V0ID0gZmFsc2U7CisgICAgfQorICAgIHZvaWQgaW5oZXJpdFJlc2V0KENv
dW50ZXJEaXJlY3RpdmVzJiBwYXJlbnQpCisgICAgeworICAgICAgICBtX3Jlc2V0VmFsdWUgPSBw
YXJlbnQubV9yZXNldFZhbHVlOworICAgICAgICBtX2lzUmVzZXRTZXQgPSBwYXJlbnQubV9pc1Jl
c2V0U2V0OworICAgIH0KKworICAgIGJvb2wgaXNJbmNyZW1lbnQoKSBjb25zdCB7IHJldHVybiBt
X2lzSW5jcmVtZW50U2V0OyB9CisgICAgaW50IGluY3JlbWVudFZhbHVlKCkgY29uc3QgeyByZXR1
cm4gbV9pbmNyZW1lbnRWYWx1ZTsgfQorICAgIHZvaWQgYWRkSW5jcmVtZW50VmFsdWUoaW50IHZh
bHVlKQorICAgIHsKKyAgICAgICAgbV9pbmNyZW1lbnRWYWx1ZSA9IGNsYW1wVG9JbnRlZ2VyKChk
b3VibGUpbV9pbmNyZW1lbnRWYWx1ZSArIHZhbHVlKTsKKyAgICAgICAgbV9pc0luY3JlbWVudFNl
dCA9IHRydWU7CisgICAgfQorICAgIHZvaWQgY2xlYXJJbmNyZW1lbnQoKQorICAgIHsKKyAgICAg
ICAgbV9pbmNyZW1lbnRWYWx1ZSA9IDA7CisgICAgICAgIG1faXNJbmNyZW1lbnRTZXQgPSBmYWxz
ZTsKKyAgICB9CisgICAgdm9pZCBpbmhlcml0SW5jcmVtZW50KENvdW50ZXJEaXJlY3RpdmVzJiBw
YXJlbnQpCisgICAgeworICAgICAgICBtX2luY3JlbWVudFZhbHVlID0gcGFyZW50Lm1faW5jcmVt
ZW50VmFsdWU7CisgICAgICAgIG1faXNJbmNyZW1lbnRTZXQgPSBwYXJlbnQubV9pc0luY3JlbWVu
dFNldDsKKyAgICB9CisKKyAgICBib29sIGlzRGVmaW5lZCgpIGNvbnN0IHsgcmV0dXJuIGlzUmVz
ZXQoKSB8fCBpc0luY3JlbWVudCgpOyB9CisKKyAgICBpbnQgY29tYmluZWRWYWx1ZSgpIGNvbnN0
CisgICAgeworICAgICAgICBBU1NFUlQobV9pc1Jlc2V0U2V0IHx8ICFtX3Jlc2V0VmFsdWUpOwor
ICAgICAgICBBU1NFUlQobV9pc0luY3JlbWVudFNldCB8fCAhbV9pbmNyZW1lbnRWYWx1ZSk7Cisg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGRuJ3QgYWxsb3cgb3ZlcmZsb3cgaGVyZS4KKyAgICAgICAg
cmV0dXJuIG1fcmVzZXRWYWx1ZSArIG1faW5jcmVtZW50VmFsdWU7CisgICAgfQorCitwcml2YXRl
OgorICAgIGJvb2wgbV9pc1Jlc2V0U2V0OworICAgIGJvb2wgbV9pc0luY3JlbWVudFNldDsKICAg
ICBpbnQgbV9yZXNldFZhbHVlOwogICAgIGludCBtX2luY3JlbWVudFZhbHVlOwogfTsKQEAgLTQ3
LDcgKzEwMiw3IEBAIHN0cnVjdCBDb3VudGVyRGlyZWN0aXZlcyB7CiBib29sIG9wZXJhdG9yPT0o
Y29uc3QgQ291bnRlckRpcmVjdGl2ZXMmLCBjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYpOwogaW5s
aW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb3VudGVyRGlyZWN0aXZlcyYgYSwgY29uc3QgQ291
bnRlckRpcmVjdGl2ZXMmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCi10eXBlZGVmIEhhc2hN
YXA8UmVmUHRyPEF0b21pY1N0cmluZ0ltcGw+LCBDb3VudGVyRGlyZWN0aXZlcz4gQ291bnRlckRp
cmVjdGl2ZU1hcDsKK3R5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIENvdW50ZXJEaXJlY3Rp
dmVzPiBDb3VudGVyRGlyZWN0aXZlTWFwOwogCiBQYXNzT3duUHRyPENvdW50ZXJEaXJlY3RpdmVN
YXA+IGNsb25lKGNvbnN0IENvdW50ZXJEaXJlY3RpdmVNYXAmKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggZWU3YWRiZTZhYzlmYjAy
MGJiZTY2NjAzNTEzM2MyYWEzODk3ZGM2YS4uNzUzY2VjODQyMjQyNDQ0NGI1ZDU1MzhkMzIzODU2
M2RiZGE4MTJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0xMDM2LDYgKzEwMzYsMTMgQEAgQ291bnRlckRpcmVjdGl2ZU1hcCYgUmVu
ZGVyU3R5bGU6OmFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCkKICAgICByZXR1cm4gKm1hcDsKIH0K
IAorY29uc3QgQ291bnRlckRpcmVjdGl2ZXMgUmVuZGVyU3R5bGU6OmdldENvdW50ZXJEaXJlY3Rp
dmVzKGNvbnN0IEF0b21pY1N0cmluZyYgaWRlbnRpZmllcikgY29uc3QKK3sKKyAgICBpZiAoY29u
c3QgQ291bnRlckRpcmVjdGl2ZU1hcCogZGlyZWN0aXZlcyA9IGNvdW50ZXJEaXJlY3RpdmVzKCkp
CisgICAgICAgIHJldHVybiBkaXJlY3RpdmVzLT5nZXQoaWRlbnRpZmllcik7CisgICAgcmV0dXJu
IENvdW50ZXJEaXJlY3RpdmVzKCk7Cit9CisKIGNvbnN0IEF0b21pY1N0cmluZyYgUmVuZGVyU3R5
bGU6Omh5cGhlblN0cmluZygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGh5cGhlbnMoKSAhPSBIeXBo
ZW5zTm9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5o
CmluZGV4IDhhMTg0ZTY4ODZkYWYwMDhjZDM3N2VkZTI0NGNlZjhiNDI3OTM1MmIuLmM1MDc4NTI5
NWZmZjk4MzQzZDE2ZmYzMWNmY2MxYjY0OTlmNTQ1NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0xNDk0LDYgKzE0OTQsNyBAQCBwdWJsaWM6
CiAKICAgICBjb25zdCBDb3VudGVyRGlyZWN0aXZlTWFwKiBjb3VudGVyRGlyZWN0aXZlcygpIGNv
bnN0OwogICAgIENvdW50ZXJEaXJlY3RpdmVNYXAmIGFjY2Vzc0NvdW50ZXJEaXJlY3RpdmVzKCk7
CisgICAgY29uc3QgQ291bnRlckRpcmVjdGl2ZXMgZ2V0Q291bnRlckRpcmVjdGl2ZXMoY29uc3Qg
QXRvbWljU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKIAogICAgIFF1b3Rlc0RhdGEqIHF1b3Rl
cygpIGNvbnN0IHsgcmV0dXJuIHJhcmVJbmhlcml0ZWREYXRhLT5xdW90ZXMuZ2V0KCk7IH0KICAg
ICB2b2lkIHNldFF1b3RlcyhQYXNzUmVmUHRyPFF1b3Rlc0RhdGE+KTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NDExYzEz
NjQ3OWNlMzc0ZDZmNGE0MzY3OTA3OTMyYTY3MDcyZjNlLi4xYTc0YWZiN2U0ZWNiNDY2OWRjM2U4
OWRhMDA5NzAxMTZlOGRiYzQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMDYgIEVs
bGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIG1ldGhv
ZHMgdG8gQ291bnRlckRpcmVjdGl2ZXMgdG8gY2xlYW4gdXAgU3R5bGVCdWlsZGVyIGFuZCBSZW5k
ZXJDb3VudGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTQ1ODcKKworICAgICAgICBSZXZpZXdlZCBieSBKdWxpZW4gQ2hhZmZyYWl4LgorCisgICAg
ICAgIFRlc3RzIGZvciBidWcgOTQ2NDIgZXhwb3NpbmcgYW4gdW5pdGlhbGl6ZWQgcmVhZCB3aGVu
IHVzaW5nIGNvdW50ZXItcmVzZXQgYW5kCisgICAgICAgIGNvdW50ZXItaW5jcmVtZW50OiBpbmhl
cml0LgorCisgICAgICAgICogZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1yZXNldC1pbmhlcml0
LWJ1Zy05NDY0Mi1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9jb3Vu
dGVycy9jb3VudGVyLXJlc2V0LWluaGVyaXQtYnVnLTk0NjQyLmh0bWw6IEFkZGVkLgorCiAyMDEy
LTA5LTA2ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ2hyb21p
dW0gTGludXggRVdTIGJvdHMgYW5kIENRIGJvdHMgYXJlIGZsYWt5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXJlc2V0LWluaGVyaXQtYnVnLTk0NjQy
LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9jb3VudGVycy9jb3VudGVyLXJl
c2V0LWluaGVyaXQtYnVnLTk0NjQyLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWFkNjFjMjEw
OWM3OTQwOWJjNmYxYzBiMjZjNzFkOTAxNTkxMjE4YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXItcmVzZXQtaW5oZXJpdC1idWctOTQ2NDIt
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDMgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8ZGl2PjA8
L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50ZXJzL2NvdW50ZXIt
cmVzZXQtaW5oZXJpdC1idWctOTQ2NDIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2NvdW50
ZXJzL2NvdW50ZXItcmVzZXQtaW5oZXJpdC1idWctOTQ2NDIuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDll
ODYxNzBjYTdhMjNiMDA4MGFiMjA3Njg3MGFjNmIxOTc5NWIyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvY291bnRlcnMvY291bnRlci1yZXNldC1pbmhlcml0LWJ1Zy05
NDY0Mi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhZG9jdHlwZSBodG1sPgorCis8c3R5bGU+Cisg
ICAgYm9keSB7IGNvdW50ZXItcmVzZXQ6IHggMDsgfQorCisgICAgZGl2IHsKKyAgICAgICAgY291
bnRlci1pbmNyZW1lbnQ6IGluaGVyaXQ7CisgICAgfQorCisgICAgZGl2OmJlZm9yZSB7CisgICAg
ICAgIGNvbnRlbnQ6IGNvdW50ZXIoeCk7CisgICAgfQorPC9zdHlsZT4KKworPGRpdj48L2Rpdj4K
</data>

          </attachment>
      

    </bug>

</bugzilla>