<?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>48776</bug_id>
          
          <creation_ts>2010-11-01 13:26:08 -0700</creation_ts>
          <short_desc>Change isVertical() to isHorizontal() on InlineBox.</short_desc>
          <delta_ts>2010-11-01 14:14:06 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>302880</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-01 13:26:08 -0700</bug_when>
    <thetext>Change isVertical() to isHorizontal() on InlineBox.  This flips the question asked so that the horizontal code path is what you see first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302883</commentid>
    <comment_count>1</comment_count>
      <attachid>72548</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-01 13:27:39 -0700</bug_when>
    <thetext>Created attachment 72548
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302904</commentid>
    <comment_count>2</comment_count>
      <attachid>72548</attachid>
    <who name="">mitz</who>
    <bug_when>2010-11-01 13:58:04 -0700</bug_when>
    <thetext>Comment on attachment 72548
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>302920</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-11-01 14:14:06 -0700</bug_when>
    <thetext>Fixed in r71055.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72548</attachid>
            <date>2010-11-01 13:27:39 -0700</date>
            <delta_ts>2010-11-01 13:58:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>38330</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MTA0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjYgQEAKKzIwMTAtMTEtMDEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00ODc3NgorICAgICAgICAKKyAgICAg
ICAgQ2hhbmdlIGlzVmVydGljYWwoKSBvbiBJbmxpbmVCb3ggdG8gaXNIb3Jpem9udGFsKCkgaW5z
dGVhZC4gIFRoaXMgbWFrZXMgdGhlIGhvcml6b250YWwgY29kZSBwYXRoIGNvbWUKKyAgICAgICAg
Zmlyc3QgaWYgeW91IGJyYW5jaCBvbiBpc0hvcml6b250YWwoKSBhbmQgbWFrZXMgdGhlIGNvZGUg
cmVhZCBiZXR0ZXIgKHNpbmNlIHRoYXQncyB0aGUgbW9yZSBjb21tb24gY29kZQorICAgICAgICBw
YXRoKS4KKworICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5saW5lQm94Ojpsb2dpY2FsSGVpZ2h0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5s
aW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OklubGluZUJveCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmlzSG9yaXpvbnRhbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbmxpbmVCb3g6OnNldElzSG9yaXpvbnRhbCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVC
b3g6OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6aGVpZ2h0KToKKyAgICAg
ICAgKFdlYkNvcmU6OklubGluZUJveDo6bG9naWNhbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lQm94OjpzZXRMb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6
OmxvZ2ljYWxUb3ApOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94OjpzZXRMb2dpY2FsVG9w
KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUJveDo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVCb3g6OmxpbmVIZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUZsb3dCb3g6OmFk
ZFRvTGluZSk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwbGFjZUJveGVzSW5J
bmxpbmVEaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6Y29tcHV0
ZUJsb2NrRGlyZWN0aW9uT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0Jv
eDo6cGFpbnRGaWxsTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lRmxvd0JveDo6cGFp
bnRCb3hEZWNvcmF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjpwYWlu
dE1hc2spOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVGbG93Qm94Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpJbmxpbmVGbG93Qm94OjptYXJnaW5Mb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbmxpbmVGbG93Qm94OjptYXJnaW5Mb2dpY2FsUmlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5saW5lRmxvd0JveDo6Ym9yZGVyTG9naWNhbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lRmxvd0JveDo6Ym9yZGVyTG9naWNhbFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
bGluZUZsb3dCb3g6OnBhZGRpbmdMb2dpY2FsTGVmdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxp
bmVGbG93Qm94OjpwYWRkaW5nTG9naWNhbFJpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGlu
ZUZsb3dCb3g6OnNldElubGluZURpcmVjdGlvbk92ZXJmbG93UG9zaXRpb25zKToKKyAgICAgICAg
KFdlYkNvcmU6OklubGluZUZsb3dCb3g6OnNldEJsb2NrRGlyZWN0aW9uT3ZlcmZsb3dQb3NpdGlv
bnMpOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
SW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpwYWludFRleHRXaXRoU2hhZG93cyk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVU
ZXh0Qm94OjpwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVUZXh0Qm94OjpwYWludERl
Y29yYXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9JbmxpbmVUZXh0Qm94Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6Y3JlYXRlTGluZUJveGVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YmxvY2tEaXJlY3Rpb25P
dmVyZmxvdyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3hNb2RlbE9iamVjdDo6cGFpbnRGaWxsTGF5ZXJFeHRlbmRlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxp
bmVCb3hMaXN0OjpoaXRUZXN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUm9vdElubGluZUJveC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5lQm94OjpSb290SW5saW5lQm94KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6OnBsYWNlRWxsaXBzaXMpOgorICAgICAgICAq
IHJlbmRlcmluZy9Sb290SW5saW5lQm94Lmg6CisgICAgICAgIChXZWJDb3JlOjpSb290SW5saW5l
Qm94OjpiYXNlbGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJvb3RJbmxpbmVCb3g6
OmxpbmVIZWlnaHQpOgorCiAyMDEwLTExLTAxICBEYXZpZCBIeWF0dCAgPGh5YXR0QGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDcxMDMzKQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTIxMzA1LDYgKzIxMzA1LDcgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQljb21wYXRpYmlsaXR5
VmVyc2lvbiA9ICJYY29kZSAyLjQiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwog
CQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJ
RW5nbGlzaCwKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAkocmV2aXNpb24gNzEwNDMpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw3IEBAIGludCBJbmxpbmVCb3g6OmxvZ2ljYWxIZWlnaHQoKSBjb25zdAogICAgIGlmIChy
ZW5kZXJlcigpLT5pc1RleHQoKSkKICAgICAgICAgcmV0dXJuIG1faXNUZXh0ID8gcmVuZGVyZXIo
KS0+c3R5bGUobV9maXJzdExpbmUpLT5mb250KCkuaGVpZ2h0KCkgOiAwOwogICAgIGlmIChyZW5k
ZXJlcigpLT5pc0JveCgpICYmIHBhcmVudCgpKQotICAgICAgICByZXR1cm4gbV9pc1ZlcnRpY2Fs
ID8gdG9SZW5kZXJCb3gobV9yZW5kZXJlciktPndpZHRoKCkgOiB0b1JlbmRlckJveChtX3JlbmRl
cmVyKS0+aGVpZ2h0KCk7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwoKSA/IHRvUmVuZGVy
Qm94KG1fcmVuZGVyZXIpLT5oZWlnaHQoKSA6IHRvUmVuZGVyQm94KG1fcmVuZGVyZXIpLT53aWR0
aCgpOwogCiAgICAgQVNTRVJUKGlzSW5saW5lRmxvd0JveCgpKTsKICAgICBSZW5kZXJCb3hNb2Rl
bE9iamVjdCogZmxvd09iamVjdCA9IGJveE1vZGVsT2JqZWN0KCk7CkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVCb3guaAkocmV2aXNpb24gNzEwMzMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVCb3gu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNW
RykKICAgICAgICAgLCBtX2hhc1ZpcnR1YWxMb2dpY2FsSGVpZ2h0KGZhbHNlKQogI2VuZGlmCi0g
ICAgICAgICwgbV9pc1ZlcnRpY2FsKGZhbHNlKQorICAgICAgICAsIG1faXNIb3Jpem9udGFsKHRy
dWUpCiAgICAgICAgICwgbV9lbmRzV2l0aEJyZWFrKGZhbHNlKQogICAgICAgICAsIG1faGFzU2Vs
ZWN0ZWRDaGlsZHJlbihmYWxzZSkKICAgICAgICAgLCBtX2hhc0VsbGlwc2lzQm94T3JIeXBoZW4o
ZmFsc2UpCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBJbmxpbmVCb3go
UmVuZGVyT2JqZWN0KiBvYmosIGludCB4LCBpbnQgeSwgaW50IGxvZ2ljYWxXaWR0aCwgYm9vbCBm
aXJzdExpbmUsIGJvb2wgY29uc3RydWN0ZWQsCi0gICAgICAgICAgICAgIGJvb2wgZGlydHksIGJv
b2wgZXh0cmFjdGVkLCBib29sIGlzVmVydGljYWwsIElubGluZUJveCogbmV4dCwgSW5saW5lQm94
KiBwcmV2LCBJbmxpbmVGbG93Qm94KiBwYXJlbnQpCisgICAgICAgICAgICAgIGJvb2wgZGlydHks
IGJvb2wgZXh0cmFjdGVkLCBib29sIGlzSG9yaXpvbnRhbCwgSW5saW5lQm94KiBuZXh0LCBJbmxp
bmVCb3gqIHByZXYsIElubGluZUZsb3dCb3gqIHBhcmVudCkKICAgICAgICAgOiBtX25leHQobmV4
dCkKICAgICAgICAgLCBtX3ByZXYocHJldikKICAgICAgICAgLCBtX3BhcmVudChwYXJlbnQpCkBA
IC04NSw3ICs4NSw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICAsIG1faGFz
VmlydHVhbExvZ2ljYWxIZWlnaHQoZmFsc2UpCiAjZW5kaWYKLSAgICAgICAgLCBtX2lzVmVydGlj
YWwoaXNWZXJ0aWNhbCkKKyAgICAgICAgLCBtX2lzSG9yaXpvbnRhbChpc0hvcml6b250YWwpCiAg
ICAgICAgICwgbV9lbmRzV2l0aEJyZWFrKGZhbHNlKQogICAgICAgICAsIG1faGFzU2VsZWN0ZWRD
aGlsZHJlbihmYWxzZSkgICAKICAgICAgICAgLCBtX2hhc0VsbGlwc2lzQm94T3JIeXBoZW4oZmFs
c2UpCkBAIC0xNTIsOCArMTUyLDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBib29sIGlzVmVydGljYWwoKSBjb25zdCB7IHJldHVybiBtX2lzVmVydGljYWw7IH0K
LSAgICB2b2lkIHNldElzVmVydGljYWwoYm9vbCB2KSB7IG1faXNWZXJ0aWNhbCA9IHY7IH0KKyAg
ICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNIb3Jpem9udGFsOyB9Cisg
ICAgdm9pZCBzZXRJc0hvcml6b250YWwoYm9vbCBob3Jpem9udGFsKSB7IG1faXNIb3Jpem9udGFs
ID0gaG9yaXpvbnRhbDsgfQogCiAgICAgdmlydHVhbCBJbnRSZWN0IGNhbGN1bGF0ZUJvdW5kYXJp
ZXMoKSBjb25zdAogICAgIHsKQEAgLTIxNiwyNiArMjE2LDI2IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFkoaW50IHkpIHsgbV95ID0geTsgfQogICAgIGludCB5KCkgY29uc3QgeyByZXR1cm4gbV95
OyB9CiAKLSAgICBpbnQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2lzVmVydGljYWwgPyBsb2dp
Y2FsSGVpZ2h0KCkgOiBsb2dpY2FsV2lkdGgoKTsgfQotICAgIGludCBoZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2lzVmVydGljYWwgPyBsb2dpY2FsV2lkdGgoKSA6IGxvZ2ljYWxIZWlnaHQoKTsg
fQorICAgIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIGlzSG9yaXpvbnRhbCgpID8gbG9naWNh
bFdpZHRoKCkgOiBsb2dpY2FsSGVpZ2h0KCk7IH0KKyAgICBpbnQgaGVpZ2h0KCkgY29uc3QgeyBy
ZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBsb2dpY2FsSGVpZ2h0KCkgOiBsb2dpY2FsV2lkdGgoKTsg
fQogCiAgICAgLy8gVGhlIGxvZ2ljYWxMZWZ0IHBvc2l0aW9uIGlzIHRoZSBsZWZ0IGVkZ2Ugb2Yg
dGhlIGxpbmUgYm94IGluIGEgaG9yaXpvbnRhbCBsaW5lIGFuZCB0aGUgdG9wIGVkZ2UgaW4gYSB2
ZXJ0aWNhbCBsaW5lLgotICAgIGludCBsb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuICFtX2lz
VmVydGljYWwgPyBtX3ggOiBtX3k7IH0KKyAgICBpbnQgbG9naWNhbExlZnQoKSBjb25zdCB7IHJl
dHVybiBpc0hvcml6b250YWwoKSA/IG1feCA6IG1feTsgfQogICAgIGludCBsb2dpY2FsUmlnaHQo
KSBjb25zdCB7IHJldHVybiBsb2dpY2FsTGVmdCgpICsgbG9naWNhbFdpZHRoKCk7IH0KICAgICB2
b2lkIHNldExvZ2ljYWxMZWZ0KGludCBsZWZ0KQogICAgIHsKLSAgICAgICAgaWYgKCFtX2lzVmVy
dGljYWwpCisgICAgICAgIGlmIChpc0hvcml6b250YWwoKSkKICAgICAgICAgICAgIG1feCA9IGxl
ZnQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1feSA9IGxlZnQ7CiAgICAgfQogCiAgICAg
Ly8gVGhlIGxvZ2ljYWxUb3BbIHBvc2l0aW9uIGlzIHRoZSB0b3AgZWRnZSBvZiB0aGUgbGluZSBi
b3ggaW4gYSBob3Jpem9udGFsIGxpbmUgYW5kIHRoZSBsZWZ0IGVkZ2UgaW4gYSB2ZXJ0aWNhbCBs
aW5lLgotICAgIGludCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gIW1faXNWZXJ0aWNhbCA/
IG1feSA6IG1feDsgfQorICAgIGludCBsb2dpY2FsVG9wKCkgY29uc3QgeyByZXR1cm4gaXNIb3Jp
em9udGFsKCkgPyBtX3kgOiBtX3g7IH0KICAgICBpbnQgbG9naWNhbEJvdHRvbSgpIGNvbnN0IHsg
cmV0dXJuIGxvZ2ljYWxUb3AoKSArIGxvZ2ljYWxIZWlnaHQoKTsgfQogICAgIHZvaWQgc2V0TG9n
aWNhbFRvcChpbnQgdG9wKQogICAgIHsKLSAgICAgICAgaWYgKCFtX2lzVmVydGljYWwpCisgICAg
ICAgIGlmIChpc0hvcml6b250YWwoKSkKICAgICAgICAgICAgIG1feSA9IHRvcDsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgbV94ID0gdG9wOwpAQCAtMjQ4LDggKzI0OCw4IEBAIHB1YmxpYzoK
ICAgICAvLyBUaGUgbG9naWNhbCBoZWlnaHQgaXMgb3VyIGV4dGVudCBpbiB0aGUgYmxvY2sgZmxv
dyBkaXJlY3Rpb24sIGkuZS4sIGhlaWdodCBmb3IgaG9yaXpvbnRhbCB0ZXh0IGFuZCB3aWR0aCBm
b3IgdmVydGljYWwgdGV4dC4KICAgICBpbnQgbG9naWNhbEhlaWdodCgpIGNvbnN0OwogCi0gICAg
dmlydHVhbCBpbnQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJveE1vZGVsT2Jq
ZWN0KCktPmJhc2VsaW5lUG9zaXRpb24obV9maXJzdExpbmUsIG1faXNWZXJ0aWNhbCA/IFZlcnRp
Y2FsTGluZSA6IEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOyB9Ci0g
ICAgdmlydHVhbCBpbnQgbGluZUhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJveE1vZGVsT2JqZWN0
KCktPmxpbmVIZWlnaHQobV9maXJzdExpbmUsIG1faXNWZXJ0aWNhbCA/IFZlcnRpY2FsTGluZSA6
IEhvcml6b250YWxMaW5lLCBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpOyB9CisgICAgdmlydHVh
bCBpbnQgYmFzZWxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIGJveE1vZGVsT2JqZWN0KCkt
PmJhc2VsaW5lUG9zaXRpb24obV9maXJzdExpbmUsIGlzSG9yaXpvbnRhbCgpID8gSG9yaXpvbnRh
bExpbmUgOiBWZXJ0aWNhbExpbmUsIFBvc2l0aW9uT25Db250YWluaW5nTGluZSk7IH0KKyAgICB2
aXJ0dWFsIGludCBsaW5lSGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+
bGluZUhlaWdodChtX2ZpcnN0TGluZSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6
IFZlcnRpY2FsTGluZSwgUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lKTsgfQogICAgIAogCiAgICAg
dmlydHVhbCBpbnQgY2FyZXRNaW5PZmZzZXQoKSBjb25zdDsKQEAgLTMxOSw3ICszMTksNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2V4dHJhY3RlZCA6IDE7CiAgICAgYm9vbCBtX2hhc1ZpcnR1
YWxMb2dpY2FsSGVpZ2h0IDogMTsKIAotICAgIGJvb2wgbV9pc1ZlcnRpY2FsIDogMTsKKyAgICBi
b29sIG1faXNIb3Jpem9udGFsIDogMTsKIAogICAgIC8vIGZvciBSb290SW5saW5lQm94CiAgICAg
Ym9vbCBtX2VuZHNXaXRoQnJlYWsgOiAxOyAgLy8gV2hldGhlciB0aGUgbGluZSBlbmRzIHdpdGgg
YSA8YnI+LgpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHJldmlzaW9uIDcx
MDQzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5l
Qm94KgogICAgICAgICBtX2xhc3RDaGlsZCA9IGNoaWxkOwogICAgIH0KICAgICBjaGlsZC0+c2V0
Rmlyc3RMaW5lU3R5bGVCaXQobV9maXJzdExpbmUpOwotICAgIGNoaWxkLT5zZXRJc1ZlcnRpY2Fs
KG1faXNWZXJ0aWNhbCk7CisgICAgY2hpbGQtPnNldElzSG9yaXpvbnRhbChpc0hvcml6b250YWwo
KSk7CiAgICAgaWYgKGNoaWxkLT5pc1RleHQoKSkKICAgICAgICAgbV9oYXNUZXh0Q2hpbGRyZW4g
PSB0cnVlOwogCkBAIC0zMjgsMjIgKzMyOCwyMiBAQCBpbnQgSW5saW5lRmxvd0JveDo6cGxhY2VC
b3hlc0luSW5saW5lRGlyCiAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjdXJyLT5yZW5kZXJlcigp
LT5pc0xpc3RNYXJrZXIoKSB8fCB0b1JlbmRlckxpc3RNYXJrZXIoY3Vyci0+cmVuZGVyZXIoKSkt
PmlzSW5zaWRlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBUaGUgYm94IGNhbiBoYXZlIGEgZGlm
ZmVyZW50IHdyaXRpbmctbW9kZSB0aGFuIHRoZSBvdmVyYWxsIGxpbmUsIHNvIHRoaXMgaXMgYSBi
aXQgY29tcGxpY2F0ZWQuCiAgICAgICAgICAgICAgICAgLy8gSnVzdCBnZXQgYWxsIHRoZSBwaHlz
aWNhbCBtYXJnaW4gYW5kIG92ZXJmbG93IHZhbHVlcyBieSBoYW5kIGJhc2VkIG9mZiB8aXNWZXJ0
aWNhbHwuCi0gICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxMZWZ0TWFyZ2luID0gIWlzVmVydGlj
YWwoKSA/IGN1cnItPmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkxlZnQoKSA6IGN1cnItPmJveE1v
ZGVsT2JqZWN0KCktPm1hcmdpblRvcCgpOwotICAgICAgICAgICAgICAgIGludCBsb2dpY2FsUmln
aHRNYXJnaW4gPSAhaXNWZXJ0aWNhbCgpID8gY3Vyci0+Ym94TW9kZWxPYmplY3QoKS0+bWFyZ2lu
UmlnaHQoKSA6IGN1cnItPmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkJvdHRvbSgpOworICAgICAg
ICAgICAgICAgIGludCBsb2dpY2FsTGVmdE1hcmdpbiA9IGlzSG9yaXpvbnRhbCgpID8gY3Vyci0+
Ym94TW9kZWxPYmplY3QoKS0+bWFyZ2luTGVmdCgpIDogY3Vyci0+Ym94TW9kZWxPYmplY3QoKS0+
bWFyZ2luVG9wKCk7CisgICAgICAgICAgICAgICAgaW50IGxvZ2ljYWxSaWdodE1hcmdpbiA9IGlz
SG9yaXpvbnRhbCgpID8gY3Vyci0+Ym94TW9kZWxPYmplY3QoKS0+bWFyZ2luUmlnaHQoKSA6IGN1
cnItPmJveE1vZGVsT2JqZWN0KCktPm1hcmdpbkJvdHRvbSgpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0ICs9IGxvZ2ljYWxMZWZ0TWFyZ2luOwogICAgICAg
ICAgICAgICAgIGN1cnItPnNldExvZ2ljYWxMZWZ0KGxvZ2ljYWxMZWZ0KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgUmVuZGVyQm94KiBib3ggPSB0b1JlbmRlckJv
eChjdXJyLT5yZW5kZXJlcigpKTsKIAotICAgICAgICAgICAgICAgIGludCBjaGlsZE92ZXJmbG93
TG9naWNhbExlZnQgPSBib3gtPmhhc092ZXJmbG93Q2xpcCgpID8gMCA6ICghaXNWZXJ0aWNhbCgp
ID8gYm94LT5sZWZ0TGF5b3V0T3ZlcmZsb3coKSA6IGJveC0+dG9wTGF5b3V0T3ZlcmZsb3coKSk7
Ci0gICAgICAgICAgICAgICAgaW50IGNoaWxkT3ZlcmZsb3dMb2dpY2FsUmlnaHQgPSBib3gtPmhh
c092ZXJmbG93Q2xpcCgpID8gY3Vyci0+bG9naWNhbFdpZHRoKCkgOiAoIWlzVmVydGljYWwoKSA/
IGJveC0+cmlnaHRMYXlvdXRPdmVyZmxvdygpIDogYm94LT5ib3R0b21MYXlvdXRPdmVyZmxvdygp
KTsKKyAgICAgICAgICAgICAgICBpbnQgY2hpbGRPdmVyZmxvd0xvZ2ljYWxMZWZ0ID0gYm94LT5o
YXNPdmVyZmxvd0NsaXAoKSA/IDAgOiAoaXNIb3Jpem9udGFsKCkgPyBib3gtPmxlZnRMYXlvdXRP
dmVyZmxvdygpIDogYm94LT50b3BMYXlvdXRPdmVyZmxvdygpKTsKKyAgICAgICAgICAgICAgICBp
bnQgY2hpbGRPdmVyZmxvd0xvZ2ljYWxSaWdodCA9IGJveC0+aGFzT3ZlcmZsb3dDbGlwKCkgPyBj
dXJyLT5sb2dpY2FsV2lkdGgoKSA6IChpc0hvcml6b250YWwoKSA/IGJveC0+cmlnaHRMYXlvdXRP
dmVyZmxvdygpIDogYm94LT5ib3R0b21MYXlvdXRPdmVyZmxvdygpKTsKICAgICAgICAgICAgICAg
ICAKICAgICAgICAgICAgICAgICBsb2dpY2FsTGVmdExheW91dE92ZXJmbG93ID0gbWluKGxvZ2lj
YWxMZWZ0ICsgY2hpbGRPdmVyZmxvd0xvZ2ljYWxMZWZ0LCBsb2dpY2FsTGVmdExheW91dE92ZXJm
bG93KTsKICAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRMYXlvdXRPdmVyZmxvdyA9IG1heChs
b2dpY2FsTGVmdCArIGNoaWxkT3ZlcmZsb3dMb2dpY2FsUmlnaHQsIGxvZ2ljYWxSaWdodExheW91
dE92ZXJmbG93KTsKIAotICAgICAgICAgICAgICAgIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cg
PSBtaW4obG9naWNhbExlZnQgKyAoIWlzVmVydGljYWwoKSA/IGJveC0+bGVmdFZpc3VhbE92ZXJm
bG93KCkgOiBib3gtPnRvcFZpc3VhbE92ZXJmbG93KCkpLCBsb2dpY2FsTGVmdFZpc3VhbE92ZXJm
bG93KTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyA9IG1heChs
b2dpY2FsTGVmdCArICghaXNWZXJ0aWNhbCgpID8gYm94LT5yaWdodFZpc3VhbE92ZXJmbG93KCkg
OiBib3gtPmJvdHRvbVZpc3VhbE92ZXJmbG93KCkpLCBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxv
dyk7CisgICAgICAgICAgICAgICAgbG9naWNhbExlZnRWaXN1YWxPdmVyZmxvdyA9IG1pbihsb2dp
Y2FsTGVmdCArIChpc0hvcml6b250YWwoKSA/IGJveC0+bGVmdFZpc3VhbE92ZXJmbG93KCkgOiBi
b3gtPnRvcFZpc3VhbE92ZXJmbG93KCkpLCBsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93KTsKKyAg
ICAgICAgICAgICAgICBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyA9IG1heChsb2dpY2FsTGVm
dCArIChpc0hvcml6b250YWwoKSA/IGJveC0+cmlnaHRWaXN1YWxPdmVyZmxvdygpIDogYm94LT5i
b3R0b21WaXN1YWxPdmVyZmxvdygpKSwgbG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cpOwogICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbG9naWNhbExlZnQgKz0gY3Vyci0+bG9naWNh
bFdpZHRoKCkgKyBsb2dpY2FsUmlnaHRNYXJnaW47CiAgICAgICAgICAgICB9CkBAIC02MzMsNyAr
NjMzLDcgQEAgdm9pZCBJbmxpbmVGbG93Qm94Ojpjb21wdXRlQmxvY2tEaXJlY3RpbwogICAgICAg
ICAgICAgaW50IGNoaWxkQm90dG9tVmlzdWFsT3ZlcmZsb3c7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIFJlbmRlckJveCogYm94ID0gdG9SZW5kZXJCb3goY3Vyci0+cmVuZGVyZXIoKSk7Ci0g
ICAgICAgICAgICBib3gtPmJsb2NrRGlyZWN0aW9uT3ZlcmZsb3coaXNWZXJ0aWNhbCgpLCBjaGls
ZFRvcExheW91dE92ZXJmbG93LCBjaGlsZEJvdHRvbUxheW91dE92ZXJmbG93LAorICAgICAgICAg
ICAgYm94LT5ibG9ja0RpcmVjdGlvbk92ZXJmbG93KGlzSG9yaXpvbnRhbCgpLCBjaGlsZFRvcExh
eW91dE92ZXJmbG93LCBjaGlsZEJvdHRvbUxheW91dE92ZXJmbG93LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkVG9wVmlzdWFsT3ZlcmZsb3csIGNoaWxkQm90
dG9tVmlzdWFsT3ZlcmZsb3cpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoYm94LT5o
YXNPdmVyZmxvd0NsaXAoKSkgewpAQCAtNzczLDEwICs3NzMsMTAgQEAgdm9pZCBJbmxpbmVGbG93
Qm94OjpwYWludEZpbGxMYXllcihjb25zdAogICAgICAgICBpbnQgdG90YWxMb2dpY2FsV2lkdGgg
PSBsb2dpY2FsT2Zmc2V0T25MaW5lOwogICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIg
PSB0aGlzOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAgIHRv
dGFsTG9naWNhbFdpZHRoICs9IGN1cnItPmxvZ2ljYWxXaWR0aCgpOwotICAgICAgICBpbnQgc3Ry
aXBYID0gdHggLSAoaXNWZXJ0aWNhbCgpID8gMCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOwotICAg
ICAgICBpbnQgc3RyaXBZID0gdHkgLSAoaXNWZXJ0aWNhbCgpID8gbG9naWNhbE9mZnNldE9uTGlu
ZSA6IDApOwotICAgICAgICBpbnQgc3RyaXBXaWR0aCA9IGlzVmVydGljYWwoKSA/IHdpZHRoKCkg
OiB0b3RhbExvZ2ljYWxXaWR0aDsKLSAgICAgICAgaW50IHN0cmlwSGVpZ2h0ID0gaXNWZXJ0aWNh
bCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiBoZWlnaHQoKTsKKyAgICAgICAgaW50IHN0cmlwWCA9
IHR4IC0gKGlzSG9yaXpvbnRhbCgpID8gbG9naWNhbE9mZnNldE9uTGluZSA6IDApOworICAgICAg
ICBpbnQgc3RyaXBZID0gdHkgLSAoaXNIb3Jpem9udGFsKCkgPyAwIDogbG9naWNhbE9mZnNldE9u
TGluZSk7CisgICAgICAgIGludCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExv
Z2ljYWxXaWR0aCA6IHdpZHRoKCk7CisgICAgICAgIGludCBzdHJpcEhlaWdodCA9IGlzSG9yaXpv
bnRhbCgpID8gaGVpZ2h0KCkgOiB0b3RhbExvZ2ljYWxXaWR0aDsKICAgICAgICAgcGFpbnRJbmZv
LmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPmNsaXAoSW50UmVj
dCh0eCwgdHksIHdpZHRoKCksIGhlaWdodCgpKSk7CiAgICAgICAgIGJveE1vZGVsT2JqZWN0KCkt
PnBhaW50RmlsbExheWVyRXh0ZW5kZWQocGFpbnRJbmZvLCBjLCBmaWxsTGF5ZXIsIHN0cmlwWCwg
c3RyaXBZLCBzdHJpcFdpZHRoLCBzdHJpcEhlaWdodCwgdGhpcywgb3ApOwpAQCAtODAyLDE1ICs4
MDIsMTUgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludEJveERlY29yYXRpb25zKAogCiAgICAg
aW50IHggPSBtX3g7CiAgICAgaW50IHkgPSBtX3k7Ci0gICAgaW50IHcgPSBtX2lzVmVydGljYWwg
PyBsb2dpY2FsSGVpZ2h0KCkgOiBsb2dpY2FsV2lkdGgoKTsKLSAgICBpbnQgaCA9IG1faXNWZXJ0
aWNhbCA/IGxvZ2ljYWxXaWR0aCgpIDogbG9naWNhbEhlaWdodCgpOworICAgIGludCB3ID0gd2lk
dGgoKTsKKyAgICBpbnQgaCA9IGhlaWdodCgpOwogCiAgICAgLy8gQ29uc3RyYWluIG91ciBiYWNr
Z3JvdW5kL2JvcmRlciBwYWludGluZyB0byB0aGUgbGluZSB0b3AgYW5kIGJvdHRvbSBpZiBuZWNl
c3NhcnkuCiAgICAgYm9vbCBub1F1aXJrc01vZGUgPSByZW5kZXJlcigpLT5kb2N1bWVudCgpLT5p
bk5vUXVpcmtzTW9kZSgpOwogICAgIGlmICghaGFzVGV4dENoaWxkcmVuKCkgJiYgIW5vUXVpcmtz
TW9kZSkgewogICAgICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0gcm9vdCgpOwotICAgICAg
ICBpbnQmIHRvcCA9IG1faXNWZXJ0aWNhbCA/IHggOiB5OwotICAgICAgICBpbnQmIGxvZ2ljYWxI
ZWlnaHQgPSBtX2lzVmVydGljYWwgPyB3IDogaDsKKyAgICAgICAgaW50JiB0b3AgPSBpc0hvcml6
b250YWwoKSA/IHkgOiB4OworICAgICAgICBpbnQmIGxvZ2ljYWxIZWlnaHQgPSBpc0hvcml6b250
YWwoKSA/IGggOiB3OwogICAgICAgICBpbnQgYm90dG9tID0gbWluKHJvb3RCb3gtPmxpbmVCb3R0
b20oKSwgdG9wICsgbG9naWNhbEhlaWdodCk7CiAgICAgICAgIHRvcCA9IG1heChyb290Qm94LT5s
aW5lVG9wKCksIHRvcCk7CiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBib3R0b20gLSB0b3A7CkBA
IC04NjUsMTAgKzg2NSwxMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBhaW50Qm94RGVjb3JhdGlv
bnMoCiAgICAgICAgICAgICAgICAgaW50IHRvdGFsTG9naWNhbFdpZHRoID0gbG9naWNhbE9mZnNl
dE9uTGluZTsKICAgICAgICAgICAgICAgICBmb3IgKElubGluZUZsb3dCb3gqIGN1cnIgPSB0aGlz
OyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dExpbmVCb3goKSkKICAgICAgICAgICAgICAgICAgICAg
dG90YWxMb2dpY2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICAg
ICAgaW50IHN0cmlwWCA9IHR4IC0gKGlzVmVydGljYWwoKSA/IDAgOiBsb2dpY2FsT2Zmc2V0T25M
aW5lKTsKLSAgICAgICAgICAgICAgICBpbnQgc3RyaXBZID0gdHkgLSAoaXNWZXJ0aWNhbCgpID8g
bG9naWNhbE9mZnNldE9uTGluZSA6IDApOwotICAgICAgICAgICAgICAgIGludCBzdHJpcFdpZHRo
ID0gaXNWZXJ0aWNhbCgpID8gdyA6IHRvdGFsTG9naWNhbFdpZHRoOwotICAgICAgICAgICAgICAg
IGludCBzdHJpcEhlaWdodCA9IGlzVmVydGljYWwoKSA/IHRvdGFsTG9naWNhbFdpZHRoIDogaDsK
KyAgICAgICAgICAgICAgICBpbnQgc3RyaXBYID0gdHggLSAoaXNIb3Jpem9udGFsKCkgPyBsb2dp
Y2FsT2Zmc2V0T25MaW5lIDogMCk7CisgICAgICAgICAgICAgICAgaW50IHN0cmlwWSA9IHR5IC0g
KGlzSG9yaXpvbnRhbCgpID8gMCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOworICAgICAgICAgICAg
ICAgIGludCBzdHJpcFdpZHRoID0gaXNIb3Jpem9udGFsKCkgPyB0b3RhbExvZ2ljYWxXaWR0aCA6
IHc7CisgICAgICAgICAgICAgICAgaW50IHN0cmlwSGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBo
IDogdG90YWxMb2dpY2FsV2lkdGg7CiAgICAgICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmNsaXAoSW50UmVjdCh0eCwgdHksIHcsIGgpKTsKICAg
ICAgICAgICAgICAgICBib3hNb2RlbE9iamVjdCgpLT5wYWludEJvcmRlcihjb250ZXh0LCBzdHJp
cFgsIHN0cmlwWSwgc3RyaXBXaWR0aCwgc3RyaXBIZWlnaHQsIHJlbmRlcmVyKCktPnN0eWxlKCkp
OwpAQCAtODg1LDE1ICs4ODUsMTUgQEAgdm9pZCBJbmxpbmVGbG93Qm94OjpwYWludE1hc2soUGFp
bnRJbmZvJgogCiAgICAgaW50IHggPSBtX3g7CiAgICAgaW50IHkgPSBtX3k7Ci0gICAgaW50IHcg
PSBtX2lzVmVydGljYWwgPyBsb2dpY2FsSGVpZ2h0KCkgOiBsb2dpY2FsV2lkdGgoKTsKLSAgICBp
bnQgaCA9IG1faXNWZXJ0aWNhbCA/IGxvZ2ljYWxXaWR0aCgpIDogbG9naWNhbEhlaWdodCgpOwor
ICAgIGludCB3ID0gd2lkdGgoKTsKKyAgICBpbnQgaCA9IGhlaWdodCgpOwogCiAgICAgLy8gQ29u
c3RyYWluIG91ciBiYWNrZ3JvdW5kL2JvcmRlciBwYWludGluZyB0byB0aGUgbGluZSB0b3AgYW5k
IGJvdHRvbSBpZiBuZWNlc3NhcnkuCiAgICAgYm9vbCBub1F1aXJrc01vZGUgPSByZW5kZXJlcigp
LT5kb2N1bWVudCgpLT5pbk5vUXVpcmtzTW9kZSgpOwogICAgIGlmICghaGFzVGV4dENoaWxkcmVu
KCkgJiYgIW5vUXVpcmtzTW9kZSkgewogICAgICAgICBSb290SW5saW5lQm94KiByb290Qm94ID0g
cm9vdCgpOwotICAgICAgICBpbnQmIHRvcCA9IG1faXNWZXJ0aWNhbCA/IHggOiB5OwotICAgICAg
ICBpbnQmIGxvZ2ljYWxIZWlnaHQgPSBtX2lzVmVydGljYWwgPyB3IDogaDsKKyAgICAgICAgaW50
JiB0b3AgPSBpc0hvcml6b250YWwoKSA/IHkgOiB4OworICAgICAgICBpbnQmIGxvZ2ljYWxIZWln
aHQgPSBpc0hvcml6b250YWwoKSA/IGggOiB3OwogICAgICAgICBpbnQgYm90dG9tID0gbWluKHJv
b3RCb3gtPmxpbmVCb3R0b20oKSwgdG9wICsgbG9naWNhbEhlaWdodCk7CiAgICAgICAgIHRvcCA9
IG1heChyb290Qm94LT5saW5lVG9wKCksIHRvcCk7CiAgICAgICAgIGxvZ2ljYWxIZWlnaHQgPSBi
b3R0b20gLSB0b3A7CkBAIC05NDMsMTAgKzk0MywxMCBAQCB2b2lkIElubGluZUZsb3dCb3g6OnBh
aW50TWFzayhQYWludEluZm8mCiAgICAgICAgIGludCB0b3RhbExvZ2ljYWxXaWR0aCA9IGxvZ2lj
YWxPZmZzZXRPbkxpbmU7CiAgICAgICAgIGZvciAoSW5saW5lRmxvd0JveCogY3VyciA9IHRoaXM7
IGN1cnI7IGN1cnIgPSBjdXJyLT5uZXh0TGluZUJveCgpKQogICAgICAgICAgICAgdG90YWxMb2dp
Y2FsV2lkdGggKz0gY3Vyci0+bG9naWNhbFdpZHRoKCk7Ci0gICAgICAgIGludCBzdHJpcFggPSB0
eCAtIChpc1ZlcnRpY2FsKCkgPyAwIDogbG9naWNhbE9mZnNldE9uTGluZSk7Ci0gICAgICAgIGlu
dCBzdHJpcFkgPSB0eSAtIChpc1ZlcnRpY2FsKCkgPyBsb2dpY2FsT2Zmc2V0T25MaW5lIDogMCk7
Ci0gICAgICAgIGludCBzdHJpcFdpZHRoID0gaXNWZXJ0aWNhbCgpID8gdyA6IHRvdGFsTG9naWNh
bFdpZHRoOwotICAgICAgICBpbnQgc3RyaXBIZWlnaHQgPSBpc1ZlcnRpY2FsKCkgPyB0b3RhbExv
Z2ljYWxXaWR0aCA6IGg7CisgICAgICAgIGludCBzdHJpcFggPSB0eCAtIChpc0hvcml6b250YWwo
KSA/IGxvZ2ljYWxPZmZzZXRPbkxpbmUgOiAwKTsKKyAgICAgICAgaW50IHN0cmlwWSA9IHR5IC0g
KGlzSG9yaXpvbnRhbCgpID8gMCA6IGxvZ2ljYWxPZmZzZXRPbkxpbmUpOworICAgICAgICBpbnQg
c3RyaXBXaWR0aCA9IGlzSG9yaXpvbnRhbCgpID8gdG90YWxMb2dpY2FsV2lkdGggOiB3OworICAg
ICAgICBpbnQgc3RyaXBIZWlnaHQgPSBpc0hvcml6b250YWwoKSA/IGggOiB0b3RhbExvZ2ljYWxX
aWR0aDsKICAgICAgICAgcGFpbnRJbmZvLmNvbnRleHQtPnNhdmUoKTsKICAgICAgICAgcGFpbnRJ
bmZvLmNvbnRleHQtPmNsaXAoSW50UmVjdCh0eCwgdHksIHcsIGgpKTsKICAgICAgICAgYm94TW9k
ZWxPYmplY3QoKS0+cGFpbnROaW5lUGllY2VJbWFnZShwYWludEluZm8uY29udGV4dCwgc3RyaXBY
LCBzdHJpcFksIHN0cmlwV2lkdGgsIHN0cmlwSGVpZ2h0LCByZW5kZXJlcigpLT5zdHlsZSgpLCBt
YXNrTmluZVBpZWNlSW1hZ2UsIGNvbXBvc2l0ZU9wKTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVG
bG93Qm94LmgJKHJldmlzaW9uIDcxMDQzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsMzcgKzEwOCwzNyBAQCBwdWJsaWM6CiAgICAg
ewogICAgICAgICBpZiAoIWluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwotICAgICAgICByZXR1cm4gIWlzVmVydGljYWwoKSA/IGJveE1vZGVsT2JqZWN0KCkt
Pm1hcmdpbkxlZnQoKSA6IGJveE1vZGVsT2JqZWN0KCktPm1hcmdpblRvcCgpOworICAgICAgICBy
ZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBib3hNb2RlbE9iamVjdCgpLT5tYXJnaW5MZWZ0KCkgOiBi
b3hNb2RlbE9iamVjdCgpLT5tYXJnaW5Ub3AoKTsKICAgICB9CiAgICAgaW50IG1hcmdpbkxvZ2lj
YWxSaWdodCgpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoIWluY2x1ZGVMb2dpY2FsUmlnaHRF
ZGdlKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgcmV0dXJuICFpc1ZlcnRpY2Fs
KCkgPyBib3hNb2RlbE9iamVjdCgpLT5tYXJnaW5SaWdodCgpIDogYm94TW9kZWxPYmplY3QoKS0+
bWFyZ2luQm90dG9tKCk7CisgICAgICAgIHJldHVybiBpc0hvcml6b250YWwoKSA/IGJveE1vZGVs
T2JqZWN0KCktPm1hcmdpblJpZ2h0KCkgOiBib3hNb2RlbE9iamVjdCgpLT5tYXJnaW5Cb3R0b20o
KTsKICAgICB9CiAgICAgaW50IGJvcmRlckxvZ2ljYWxMZWZ0KCkgY29uc3QKICAgICB7CiAgICAg
ICAgIGlmICghaW5jbHVkZUxvZ2ljYWxMZWZ0RWRnZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgICAgIHJldHVybiAhaXNWZXJ0aWNhbCgpID8gcmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9y
ZGVyTGVmdFdpZHRoKCkgOiByZW5kZXJlcigpLT5zdHlsZSgpLT5ib3JkZXJUb3BXaWR0aCgpOwor
ICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyByZW5kZXJlcigpLT5zdHlsZSgpLT5ib3Jk
ZXJMZWZ0V2lkdGgoKSA6IHJlbmRlcmVyKCktPnN0eWxlKCktPmJvcmRlclRvcFdpZHRoKCk7CiAg
ICAgfQogICAgIGludCBib3JkZXJMb2dpY2FsUmlnaHQoKSBjb25zdAogICAgIHsKICAgICAgICAg
aWYgKCFpbmNsdWRlTG9naWNhbFJpZ2h0RWRnZSgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgICAgIHJldHVybiAhaXNWZXJ0aWNhbCgpID8gcmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVy
UmlnaHRXaWR0aCgpIDogcmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgoKTsK
KyAgICAgICAgcmV0dXJuIGlzSG9yaXpvbnRhbCgpID8gcmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9y
ZGVyUmlnaHRXaWR0aCgpIDogcmVuZGVyZXIoKS0+c3R5bGUoKS0+Ym9yZGVyQm90dG9tV2lkdGgo
KTsKICAgICB9CiAgICAgaW50IHBhZGRpbmdMb2dpY2FsTGVmdCgpIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoIWluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSkKICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICByZXR1cm4gIWlzVmVydGljYWwoKSA/IGJveE1vZGVsT2JqZWN0KCktPnBhZGRp
bmdMZWZ0KCkgOiBib3hNb2RlbE9iamVjdCgpLT5wYWRkaW5nVG9wKCk7CisgICAgICAgIHJldHVy
biBpc0hvcml6b250YWwoKSA/IGJveE1vZGVsT2JqZWN0KCktPnBhZGRpbmdMZWZ0KCkgOiBib3hN
b2RlbE9iamVjdCgpLT5wYWRkaW5nVG9wKCk7CiAgICAgfQogICAgIGludCBwYWRkaW5nTG9naWNh
bFJpZ2h0KCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmICghaW5jbHVkZUxvZ2ljYWxSaWdodEVk
Z2UoKSkKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICByZXR1cm4gIWlzVmVydGljYWwo
KSA/IGJveE1vZGVsT2JqZWN0KCktPnBhZGRpbmdSaWdodCgpIDogYm94TW9kZWxPYmplY3QoKS0+
cGFkZGluZ0JvdHRvbSgpOworICAgICAgICByZXR1cm4gaXNIb3Jpem9udGFsKCkgPyBib3hNb2Rl
bE9iamVjdCgpLT5wYWRkaW5nUmlnaHQoKSA6IGJveE1vZGVsT2JqZWN0KCktPnBhZGRpbmdCb3R0
b20oKTsKICAgICB9CiAKICAgICBib29sIGluY2x1ZGVMb2dpY2FsTGVmdEVkZ2UoKSBjb25zdCB7
IHJldHVybiBtX2luY2x1ZGVMb2dpY2FsTGVmdEVkZ2U7IH0KQEAgLTI0MSwyMyArMjQxLDE5IEBA
IGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OnNldElubGluZURpcmUKICAgICAgICAgaWYgKGxv
Z2ljYWxMZWZ0TGF5b3V0T3ZlcmZsb3cgPT0gbG9naWNhbExlZnQoKSAmJiBsb2dpY2FsUmlnaHRM
YXlvdXRPdmVyZmxvdyA9PSBsb2dpY2FsUmlnaHQoKSAKICAgICAgICAgICAgICYmIGxvZ2ljYWxM
ZWZ0VmlzdWFsT3ZlcmZsb3cgPT0gbG9naWNhbExlZnQoKSAmJiBsb2dpY2FsUmlnaHRWaXN1YWxP
dmVyZmxvdyA9PSBsb2dpY2FsUmlnaHQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Ci0gICAgICAgIGludCB3aWR0aCA9IGlzVmVydGljYWwoKSA/IGxvZ2ljYWxIZWlnaHQoKSA6IGxv
Z2ljYWxXaWR0aCgpOwotICAgICAgICBpbnQgaGVpZ2h0ID0gaXNWZXJ0aWNhbCgpID8gbG9naWNh
bFdpZHRoKCkgOiBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgIAotICAgICAgICBtX292ZXJmbG93
ID0gYWRvcHRQdHIobmV3IFJlbmRlck92ZXJmbG93KEludFJlY3QobV94LCBtX3ksIHdpZHRoLCBo
ZWlnaHQpKSk7ICAgCisgICAgICAgIG1fb3ZlcmZsb3cgPSBhZG9wdFB0cihuZXcgUmVuZGVyT3Zl
cmZsb3coSW50UmVjdChtX3gsIG1feSwgd2lkdGgoKSwgaGVpZ2h0KCkpKSk7ICAgCiAgICAgfQog
Ci0gICAgaWYgKGlzVmVydGljYWwoKSkgewotICAgICAgICBtX292ZXJmbG93LT5zZXRUb3BMYXlv
dXRPdmVyZmxvdyhsb2dpY2FsTGVmdExheW91dE92ZXJmbG93KTsKLSAgICAgICAgbV9vdmVyZmxv
dy0+c2V0Qm90dG9tTGF5b3V0T3ZlcmZsb3cobG9naWNhbFJpZ2h0TGF5b3V0T3ZlcmZsb3cpOwot
ICAgICAgICBtX292ZXJmbG93LT5zZXRUb3BWaXN1YWxPdmVyZmxvdyhsb2dpY2FsTGVmdFZpc3Vh
bE92ZXJmbG93KTsgCi0gICAgICAgIG1fb3ZlcmZsb3ctPnNldEJvdHRvbVZpc3VhbE92ZXJmbG93
KGxvZ2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KTsgIAotICAgIH0gZWxzZSB7CisgICAgaWYgKGlz
SG9yaXpvbnRhbCgpKSB7CiAgICAgICAgIG1fb3ZlcmZsb3ctPnNldExlZnRMYXlvdXRPdmVyZmxv
dyhsb2dpY2FsTGVmdExheW91dE92ZXJmbG93KTsKICAgICAgICAgbV9vdmVyZmxvdy0+c2V0Umln
aHRMYXlvdXRPdmVyZmxvdyhsb2dpY2FsUmlnaHRMYXlvdXRPdmVyZmxvdyk7CiAgICAgICAgIG1f
b3ZlcmZsb3ctPnNldExlZnRWaXN1YWxPdmVyZmxvdyhsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93
KTsgCiAgICAgICAgIG1fb3ZlcmZsb3ctPnNldFJpZ2h0VmlzdWFsT3ZlcmZsb3cobG9naWNhbFJp
Z2h0VmlzdWFsT3ZlcmZsb3cpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fb3ZlcmZsb3ctPnNl
dFRvcExheW91dE92ZXJmbG93KGxvZ2ljYWxMZWZ0TGF5b3V0T3ZlcmZsb3cpOworICAgICAgICBt
X292ZXJmbG93LT5zZXRCb3R0b21MYXlvdXRPdmVyZmxvdyhsb2dpY2FsUmlnaHRMYXlvdXRPdmVy
Zmxvdyk7CisgICAgICAgIG1fb3ZlcmZsb3ctPnNldFRvcFZpc3VhbE92ZXJmbG93KGxvZ2ljYWxM
ZWZ0VmlzdWFsT3ZlcmZsb3cpOyAKKyAgICAgICAgbV9vdmVyZmxvdy0+c2V0Qm90dG9tVmlzdWFs
T3ZlcmZsb3cobG9naWNhbFJpZ2h0VmlzdWFsT3ZlcmZsb3cpOyAgCiAgICAgfQogfQogCkBAIC0y
NjgsMTQgKzI2NCwxMCBAQCBpbmxpbmUgdm9pZCBJbmxpbmVGbG93Qm94OjpzZXRCbG9ja0RpcmVj
CiAgICAgICAgIGlmIChsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3cgPT0gbG9naWNhbFRvcCgpICYm
IGxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdyA9PSBsb2dpY2FsQm90dG9tKCkKICAgICAgICAg
ICAgICYmIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyA9PSBsb2dpY2FsVG9wKCkgJiYgbG9naWNh
bEJvdHRvbVZpc3VhbE92ZXJmbG93ID09IGxvZ2ljYWxCb3R0b20oKSkKICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIAotICAgICAgICBpbnQgd2lkdGggPSBpc1ZlcnRpY2FsKCkgPyBs
b2dpY2FsSGVpZ2h0KCkgOiBsb2dpY2FsV2lkdGgoKTsKLSAgICAgICAgaW50IGhlaWdodCA9IGlz
VmVydGljYWwoKSA/IGxvZ2ljYWxXaWR0aCgpIDogbG9naWNhbEhlaWdodCgpOwotICAgICAgICAK
LSAgICAgICAgbV9vdmVyZmxvdyA9IGFkb3B0UHRyKG5ldyBSZW5kZXJPdmVyZmxvdyhJbnRSZWN0
KG1feCwgbV95LCB3aWR0aCwgaGVpZ2h0KSkpOworICAgICAgICBtX292ZXJmbG93ID0gYWRvcHRQ
dHIobmV3IFJlbmRlck92ZXJmbG93KEludFJlY3QobV94LCBtX3ksIHdpZHRoKCksIGhlaWdodCgp
KSkpOwogICAgIH0KIAotICAgIGlmICghaXNWZXJ0aWNhbCgpKSB7CisgICAgaWYgKGlzSG9yaXpv
bnRhbCgpKSB7CiAgICAgICAgIG1fb3ZlcmZsb3ctPnNldFRvcExheW91dE92ZXJmbG93KGxvZ2lj
YWxUb3BMYXlvdXRPdmVyZmxvdyk7CiAgICAgICAgIG1fb3ZlcmZsb3ctPnNldEJvdHRvbUxheW91
dE92ZXJmbG93KGxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdyk7CiAgICAgICAgIG1fb3ZlcmZs
b3ctPnNldFRvcFZpc3VhbE92ZXJmbG93KGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7IApJbmRl
eDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHJldmlzaW9uIDcxMDQzKQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw5
ICsxNjIsOSBAQCBJbnRSZWN0IElubGluZVRleHRCb3g6OnNlbGVjdGlvblJlY3QoaW50CiAgICAg
ZWxzZSBpZiAoci5yaWdodCgpID4gbV9sb2dpY2FsV2lkdGgpCiAgICAgICAgIGxvZ2ljYWxXaWR0
aCA9IG1fbG9naWNhbFdpZHRoIC0gci54KCk7CiAgICAgCi0gICAgSW50UG9pbnQgdG9wUG9pbnQg
PSBtX2lzVmVydGljYWwgPyBJbnRQb2ludCh0eCArIHNlbFRvcCwgdHkgKyBtX3kgKyByLngoKSkg
OiBJbnRQb2ludCh0eCArIG1feCArIHIueCgpLCB0eSArIHNlbFRvcCk7Ci0gICAgaW50IHdpZHRo
ID0gbV9pc1ZlcnRpY2FsID8gc2VsSGVpZ2h0IDogbG9naWNhbFdpZHRoOwotICAgIGludCBoZWln
aHQgPSBtX2lzVmVydGljYWwgPyBsb2dpY2FsV2lkdGggOiBzZWxIZWlnaHQ7CisgICAgSW50UG9p
bnQgdG9wUG9pbnQgPSBpc0hvcml6b250YWwoKSA/IEludFBvaW50KHR4ICsgbV94ICsgci54KCks
IHR5ICsgc2VsVG9wKSA6IEludFBvaW50KHR4ICsgc2VsVG9wLCB0eSArIG1feSArIHIueCgpKTsK
KyAgICBpbnQgd2lkdGggPSBpc0hvcml6b250YWwoKSA/IGxvZ2ljYWxXaWR0aCA6IHNlbEhlaWdo
dDsKKyAgICBpbnQgaGVpZ2h0ID0gaXNIb3Jpem9udGFsKCkgPyBzZWxIZWlnaHQgOiBsb2dpY2Fs
V2lkdGg7CiAgICAgCiAgICAgcmV0dXJuIEludFJlY3QodG9wUG9pbnQsIEludFNpemUod2lkdGgs
IGhlaWdodCkpOwogfQpAQCAtMzIxLDE0ICszMjEsMTQgQEAgYm9vbCBJbmxpbmVUZXh0Qm94Ojpu
b2RlQXRQb2ludChjb25zdCBIaQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotRmxvYXRTaXplIElu
bGluZVRleHRCb3g6OmFwcGx5U2hhZG93VG9HcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZsb2F0UmVjdCYgdGV4
dFJlY3QsIGJvb2wgc3Ryb2tlZCwgYm9vbCBvcGFxdWUsIGJvb2wgdmVydGljYWwpCitGbG9hdFNp
emUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyYXBoaWNzQ29udGV4dChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgY29uc3QgRmxvYXRSZWN0
JiB0ZXh0UmVjdCwgYm9vbCBzdHJva2VkLCBib29sIG9wYXF1ZSwgYm9vbCBob3Jpem9udGFsKQog
ewogICAgIGlmICghc2hhZG93KQogICAgICAgICByZXR1cm4gRmxvYXRTaXplKCk7CiAKICAgICBG
bG9hdFNpemUgZXh0cmFPZmZzZXQ7Ci0gICAgaW50IHNoYWRvd1ggPSB2ZXJ0aWNhbCA/IHNoYWRv
dy0+eSgpIDogc2hhZG93LT54KCk7Ci0gICAgaW50IHNoYWRvd1kgPSB2ZXJ0aWNhbCA/IC1zaGFk
b3ctPngoKSA6IHNoYWRvdy0+eSgpOworICAgIGludCBzaGFkb3dYID0gaG9yaXpvbnRhbCA/IHNo
YWRvdy0+eCgpIDogc2hhZG93LT55KCk7CisgICAgaW50IHNoYWRvd1kgPSBob3Jpem9udGFsID8g
c2hhZG93LT55KCkgOiAtc2hhZG93LT54KCk7CiAgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldChz
aGFkb3dYLCBzaGFkb3dZKTsKICAgICBpbnQgc2hhZG93Qmx1ciA9IHNoYWRvdy0+Ymx1cigpOwog
ICAgIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciA9IHNoYWRvdy0+Y29sb3IoKTsKQEAgLTM0OSw3
ICszNDksNyBAQCBGbG9hdFNpemUgSW5saW5lVGV4dEJveDo6YXBwbHlTaGFkb3dUb0dyCiB9CiAK
IHN0YXRpYyB2b2lkIHBhaW50VGV4dFdpdGhTaGFkb3dzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgaW50IHN0YXJ0T2Zm
c2V0LCBpbnQgZW5kT2Zmc2V0LCBpbnQgdHJ1bmNhdGlvblBvaW50LCBjb25zdCBJbnRQb2ludCYg
dGV4dE9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEludFJl
Y3QmIGJveFJlY3QsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdywgYm9vbCBzdHJva2VkLCBib29s
IHZlcnRpY2FsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW50UmVj
dCYgYm94UmVjdCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBib29sIHN0cm9rZWQsIGJvb2wg
aG9yaXpvbnRhbCkKIHsKICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0LT5maWxsQ29sb3Io
KTsKICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC0+ZmlsbENvbG9yU3Bh
Y2UoKTsKQEAgLTM2MCw3ICszNjAsNyBAQCBzdGF0aWMgdm9pZCBwYWludFRleHRXaXRoU2hhZG93
cyhHcmFwaGljCiAgICAgZG8gewogICAgICAgICBJbnRTaXplIGV4dHJhT2Zmc2V0OwogICAgICAg
ICBpZiAoc2hhZG93KQotICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSByb3VuZGVkSW50U2l6ZShJ
bmxpbmVUZXh0Qm94OjphcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KGNvbnRleHQsIHNoYWRv
dywgYm94UmVjdCwgc3Ryb2tlZCwgb3BhcXVlLCB2ZXJ0aWNhbCkpOworICAgICAgICAgICAgZXh0
cmFPZmZzZXQgPSByb3VuZGVkSW50U2l6ZShJbmxpbmVUZXh0Qm94OjphcHBseVNoYWRvd1RvR3Jh
cGhpY3NDb250ZXh0KGNvbnRleHQsIHNoYWRvdywgYm94UmVjdCwgc3Ryb2tlZCwgb3BhcXVlLCBo
b3Jpem9udGFsKSk7CiAgICAgICAgIGVsc2UgaWYgKCFvcGFxdWUpCiAgICAgICAgICAgICBjb250
ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CiAKQEAgLTM5Nywx
MSArMzk3LDExIEBAIHZvaWQgSW5saW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAg
ICAvLyBXb3VsZCBpdCBiZSBzaW1wbGVyIHRvIGp1c3QgY2hlY2sgb3VyIG93biBzaGFkb3cgYW5k
IHN0cm9rZSBvdmVyZmxvdyBieSBoYW5kIGhlcmU/CiAgICAgaW50IGxvZ2ljYWxMZWZ0T3ZlcmZs
b3cgPSBwYXJlbnQoKS0+bG9naWNhbExlZnQoKSAtIHBhcmVudCgpLT5sb2dpY2FsTGVmdFZpc3Vh
bE92ZXJmbG93KCk7CiAgICAgaW50IGxvZ2ljYWxSaWdodE92ZXJmbG93ID0gcGFyZW50KCktPmxv
Z2ljYWxSaWdodFZpc3VhbE92ZXJmbG93KCkgLSAocGFyZW50KCktPmxvZ2ljYWxMZWZ0KCkgKyBw
YXJlbnQoKS0+bG9naWNhbFdpZHRoKCkpOwotICAgIGludCBsb2dpY2FsU3RhcnQgPSBsb2dpY2Fs
TGVmdCgpIC0gbG9naWNhbExlZnRPdmVyZmxvdyArIChpc1ZlcnRpY2FsKCkgPyB0eSA6IHR4KTsK
KyAgICBpbnQgbG9naWNhbFN0YXJ0ID0gbG9naWNhbExlZnQoKSAtIGxvZ2ljYWxMZWZ0T3ZlcmZs
b3cgKyAoaXNIb3Jpem9udGFsKCkgPyB0eCA6IHR5KTsKICAgICBpbnQgbG9naWNhbEV4dGVudCA9
IGxvZ2ljYWxXaWR0aCgpICsgbG9naWNhbExlZnRPdmVyZmxvdyArIGxvZ2ljYWxSaWdodE92ZXJm
bG93OwogICAgIAotICAgIGludCBwYWludEVuZCA9IGlzVmVydGljYWwoKSA/IHBhaW50SW5mby5y
ZWN0LmJvdHRvbSgpIDogcGFpbnRJbmZvLnJlY3QucmlnaHQoKTsKLSAgICBpbnQgcGFpbnRTdGFy
dCA9IGlzVmVydGljYWwoKSA/IHBhaW50SW5mby5yZWN0LnkoKSA6IHBhaW50SW5mby5yZWN0Lngo
KTsKKyAgICBpbnQgcGFpbnRFbmQgPSBpc0hvcml6b250YWwoKSA/IHBhaW50SW5mby5yZWN0LnJp
Z2h0KCkgOiBwYWludEluZm8ucmVjdC5ib3R0b20oKTsKKyAgICBpbnQgcGFpbnRTdGFydCA9IGlz
SG9yaXpvbnRhbCgpID8gcGFpbnRJbmZvLnJlY3QueCgpIDogcGFpbnRJbmZvLnJlY3QueSgpOwog
ICAgIAogICAgIGlmIChsb2dpY2FsU3RhcnQgPj0gcGFpbnRFbmQgfHwgbG9naWNhbFN0YXJ0ICsg
bG9naWNhbEV4dGVudCA8PSBwYWludFN0YXJ0KQogICAgICAgICByZXR1cm47CkBAIC00MjcsNyAr
NDI3LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAgICAg
ICAgICAgaW50IHdpZHRoT2ZWaXNpYmxlVGV4dCA9IHRvUmVuZGVyVGV4dChyZW5kZXJlcigpKS0+
d2lkdGgobV9zdGFydCwgbV90cnVuY2F0aW9uLCB0ZXh0UG9zKCksIG1fZmlyc3RMaW5lKTsKICAg
ICAgICAgICAgIGludCB3aWR0aE9mSGlkZGVuVGV4dCA9IG1fbG9naWNhbFdpZHRoIC0gd2lkdGhP
ZlZpc2libGVUZXh0OwogICAgICAgICAgICAgLy8gRklYTUU6IFRoZSBoaXQgdGVzdGluZyBsb2dp
YyBhbHNvIG5lZWRzIHRvIHRha2UgdGhpcyB0cmFuc2xhdGlvbiBpbnQgYWNjb3VudC4KLSAgICAg
ICAgICAgIGlmICghbV9pc1ZlcnRpY2FsKQorICAgICAgICAgICAgaWYgKGlzSG9yaXpvbnRhbCgp
KQogICAgICAgICAgICAgICAgIHR4ICs9IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHdpZHRo
T2ZIaWRkZW5UZXh0IDogLXdpZHRoT2ZIaWRkZW5UZXh0OwogICAgICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgICAgIHR5ICs9IGlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IHdpZHRoT2ZIaWRk
ZW5UZXh0IDogLXdpZHRoT2ZIaWRkZW5UZXh0OwpAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZvaWQgSW5s
aW5lVGV4dEJveDo6cGFpbnQoUGFpbnRJbmZvJiBwYWkKICAgICBJbnRQb2ludCB0ZXh0T3JpZ2lu
ID0gSW50UG9pbnQoYm94T3JpZ2luLngoKSwgYm94T3JpZ2luLnkoKSArIHN0eWxlVG9Vc2UtPmZv
bnQoKS5hc2NlbnQoKSk7CiAgICAgSW50UmVjdCBib3hSZWN0KGJveE9yaWdpbiwgSW50U2l6ZShs
b2dpY2FsV2lkdGgoKSwgbG9naWNhbEhlaWdodCgpKSk7CiAKLSAgICBpZiAobV9pc1ZlcnRpY2Fs
KSB7CisgICAgaWYgKCFpc0hvcml6b250YWwoKSkgewogICAgICAgICBjb250ZXh0LT5zYXZlKCk7
CiAgICAgICAgIGNvbnRleHQtPnRyYW5zbGF0ZShib3hSZWN0LngoKSwgYm94UmVjdC5ib3R0b20o
KSk7CiAgICAgICAgIGNvbnRleHQtPnJvdGF0ZShzdGF0aWNfY2FzdDxmbG9hdD4oZGVnMnJhZCg5
MC4pKSk7CkBAIC01NzQsOSArNTc0LDkgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWlu
dEluZm8mIHBhaQogICAgICAgICB1cGRhdGVHcmFwaGljc0NvbnRleHQoY29udGV4dCwgdGV4dEZp
bGxDb2xvciwgdGV4dFN0cm9rZUNvbG9yLCB0ZXh0U3Ryb2tlV2lkdGgsIHN0eWxlVG9Vc2UtPmNv
bG9yU3BhY2UoKSk7CiAgICAgICAgIGlmICghcGFpbnRTZWxlY3RlZFRleHRTZXBhcmF0ZWx5IHx8
IGVQb3MgPD0gc1BvcykgewogICAgICAgICAgICAgLy8gRklYTUU6IFRydW5jYXRlIHJpZ2h0LXRv
LWxlZnQgdGV4dCBjb3JyZWN0bHkuCi0gICAgICAgICAgICBwYWludFRleHRXaXRoU2hhZG93cyhj
b250ZXh0LCBmb250LCB0ZXh0UnVuLCAwLCBsZW5ndGgsIGxlbmd0aCwgdGV4dE9yaWdpbiwgYm94
UmVjdCwgdGV4dFNoYWRvdywgdGV4dFN0cm9rZVdpZHRoID4gMCwgbV9pc1ZlcnRpY2FsKTsKKyAg
ICAgICAgICAgIHBhaW50VGV4dFdpdGhTaGFkb3dzKGNvbnRleHQsIGZvbnQsIHRleHRSdW4sIDAs
IGxlbmd0aCwgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0U3Ry
b2tlV2lkdGggPiAwLCBpc0hvcml6b250YWwoKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgZVBvcywgc1Bv
cywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0U3Ryb2tlV2lk
dGggPiAwLCBtX2lzVmVydGljYWwpOworICAgICAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3Mo
Y29udGV4dCwgZm9udCwgdGV4dFJ1biwgZVBvcywgc1BvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBi
b3hSZWN0LCB0ZXh0U2hhZG93LCB0ZXh0U3Ryb2tlV2lkdGggPiAwLCBpc0hvcml6b250YWwoKSk7
CiAKICAgICAgICAgaWYgKHRleHRTdHJva2VXaWR0aCA+IDApCiAgICAgICAgICAgICBjb250ZXh0
LT5yZXN0b3JlKCk7CkBAIC01ODgsNyArNTg4LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWlu
dChQYWludEluZm8mIHBhaQogICAgICAgICAgICAgY29udGV4dC0+c2F2ZSgpOwogCiAgICAgICAg
IHVwZGF0ZUdyYXBoaWNzQ29udGV4dChjb250ZXh0LCBzZWxlY3Rpb25GaWxsQ29sb3IsIHNlbGVj
dGlvblN0cm9rZUNvbG9yLCBzZWxlY3Rpb25TdHJva2VXaWR0aCwgc3R5bGVUb1VzZS0+Y29sb3JT
cGFjZSgpKTsKLSAgICAgICAgcGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgZm9udCwgdGV4
dFJ1biwgc1BvcywgZVBvcywgbGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCBzZWxlY3Rpb25T
aGFkb3csIHNlbGVjdGlvblN0cm9rZVdpZHRoID4gMCwgbV9pc1ZlcnRpY2FsKTsKKyAgICAgICAg
cGFpbnRUZXh0V2l0aFNoYWRvd3MoY29udGV4dCwgZm9udCwgdGV4dFJ1biwgc1BvcywgZVBvcywg
bGVuZ3RoLCB0ZXh0T3JpZ2luLCBib3hSZWN0LCBzZWxlY3Rpb25TaGFkb3csIHNlbGVjdGlvblN0
cm9rZVdpZHRoID4gMCwgaXNIb3Jpem9udGFsKCkpOwogCiAgICAgICAgIGlmIChzZWxlY3Rpb25T
dHJva2VXaWR0aCA+IDApCiAgICAgICAgICAgICBjb250ZXh0LT5yZXN0b3JlKCk7CkBAIC02Mjks
NyArNjI5LDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludChQYWludEluZm8mIHBhaQogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIGlmIChtX2lzVmVydGljYWwpCisgICAgaWYgKCFpc0hv
cml6b250YWwoKSkKICAgICAgICAgY29udGV4dC0+cmVzdG9yZSgpOwogfQogCkBAIC03NzIsOCAr
NzcyLDggQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludERlY29yYXRpb24oR3JhcAogICAgICAg
ICBmb3IgKGNvbnN0IFNoYWRvd0RhdGEqIHMgPSBzaGFkb3c7IHM7IHMgPSBzLT5uZXh0KCkpIHsK
ICAgICAgICAgICAgIEludFJlY3Qgc2hhZG93UmVjdChsb2NhbE9yaWdpbiwgSW50U2l6ZSh3aWR0
aCwgYmFzZWxpbmUgKyAyKSk7CiAgICAgICAgICAgICBzaGFkb3dSZWN0LmluZmxhdGUocy0+Ymx1
cigpKTsKLSAgICAgICAgICAgIGludCBzaGFkb3dYID0gbV9pc1ZlcnRpY2FsID8gcy0+eSgpIDog
cy0+eCgpOwotICAgICAgICAgICAgaW50IHNoYWRvd1kgPSBtX2lzVmVydGljYWwgPyAtcy0+eCgp
IDogcy0+eSgpOworICAgICAgICAgICAgaW50IHNoYWRvd1ggPSBpc0hvcml6b250YWwoKSA/IHMt
PngoKSA6IHMtPnkoKTsKKyAgICAgICAgICAgIGludCBzaGFkb3dZID0gaXNIb3Jpem9udGFsKCkg
PyBzLT55KCkgOiAtcy0+eCgpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1gs
IHNoYWRvd1kpOwogICAgICAgICAgICAgY2xpcFJlY3QudW5pdGUoc2hhZG93UmVjdCk7CiAgICAg
ICAgICAgICBleHRyYU9mZnNldCA9IG1heChleHRyYU9mZnNldCwgbWF4KDAsIHNoYWRvd1kpICsg
cy0+Ymx1cigpKTsKQEAgLTc5NSw4ICs3OTUsOCBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50
RGVjb3JhdGlvbihHcmFwCiAgICAgICAgICAgICAgICAgbG9jYWxPcmlnaW4ubW92ZSgwLCAtZXh0
cmFPZmZzZXQpOwogICAgICAgICAgICAgICAgIGV4dHJhT2Zmc2V0ID0gMDsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGludCBzaGFkb3dYID0gbV9pc1ZlcnRpY2FsID8gc2hhZG93LT55KCkg
OiBzaGFkb3ctPngoKTsKLSAgICAgICAgICAgIGludCBzaGFkb3dZID0gbV9pc1ZlcnRpY2FsID8g
LXNoYWRvdy0+eCgpIDogc2hhZG93LT55KCk7CisgICAgICAgICAgICBpbnQgc2hhZG93WCA9IGlz
SG9yaXpvbnRhbCgpID8gc2hhZG93LT54KCkgOiBzaGFkb3ctPnkoKTsKKyAgICAgICAgICAgIGlu
dCBzaGFkb3dZID0gaXNIb3Jpem9udGFsKCkgPyBzaGFkb3ctPnkoKSA6IC1zaGFkb3ctPngoKTsK
ICAgICAgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhJbnRTaXplKHNoYWRvd1gsIHNoYWRvd1kg
LSBleHRyYU9mZnNldCksIHNoYWRvdy0+Ymx1cigpLCBzaGFkb3ctPmNvbG9yKCksIGNvbG9yU3Bh
Y2UpOwogICAgICAgICAgICAgc2V0U2hhZG93ID0gdHJ1ZTsKICAgICAgICAgICAgIHNoYWRvdyA9
IHNoYWRvdy0+bmV4dCgpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJveC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guaAkocmV2aXNp
b24gNzEwMzMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjb250YWluc0NhcmV0
T2Zmc2V0KGludCBvZmZzZXQpIGNvbnN0OyAvLyBmYWxzZSBmb3Igb2Zmc2V0IGFmdGVyIGxpbmUg
YnJlYWsKIAogICAgIC8vIE5lZWRzIHRvIGJlIHB1YmxpYywgc28gdGhlIHN0YXRpYyBwYWludFRl
eHRXaXRoU2hhZG93cygpIGZ1bmN0aW9uIGNhbiB1c2UgaXQuCi0gICAgc3RhdGljIEZsb2F0U2l6
ZSBhcHBseVNoYWRvd1RvR3JhcGhpY3NDb250ZXh0KEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IFNo
YWRvd0RhdGEqLCBjb25zdCBGbG9hdFJlY3QmIHRleHRSZWN0LCBib29sIHN0cm9rZWQsIGJvb2wg
b3BhcXVlLCBib29sIHZlcnRpY2FsKTsKKyAgICBzdGF0aWMgRmxvYXRTaXplIGFwcGx5U2hhZG93
VG9HcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgU2hhZG93RGF0YSosIGNv
bnN0IEZsb2F0UmVjdCYgdGV4dFJlY3QsIGJvb2wgc3Ryb2tlZCwgYm9vbCBvcGFxdWUsIGJvb2wg
aG9yaXpvbnRhbCk7CiAKIHByaXZhdGU6CiAgICAgSW5saW5lVGV4dEJveCogbV9wcmV2VGV4dEJv
eDsgLy8gVGhlIHByZXZpb3VzIGJveCB0aGF0IGFsc28gdXNlcyBvdXIgUmVuZGVyT2JqZWN0Cklu
ZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAJKHJldmlz
aW9uIDcxMDMzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBAIElubGluZUZsb3dCb3gqIFJlbmRl
ckJsb2NrOjpjcmVhdGVMaW5lQm8KICAgICAgICAgICAgIEFTU0VSVChuZXdCb3gtPmlzSW5saW5l
Rmxvd0JveCgpKTsKICAgICAgICAgICAgIHBhcmVudEJveCA9IHN0YXRpY19jYXN0PElubGluZUZs
b3dCb3gqPihuZXdCb3gpOwogICAgICAgICAgICAgcGFyZW50Qm94LT5zZXRGaXJzdExpbmVTdHls
ZUJpdChmaXJzdExpbmUpOwotICAgICAgICAgICAgcGFyZW50Qm94LT5zZXRJc1ZlcnRpY2FsKCFz
dHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKKyAgICAgICAgICAgIHBhcmVudEJv
eC0+c2V0SXNIb3Jpem9udGFsKHN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpOwog
ICAgICAgICAgICAgY29uc3RydWN0ZWROZXdCb3ggPSB0cnVlOwogICAgICAgICB9CiAKSW5kZXg6
IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gNzEwNDMpCisrKyBXZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTg1LDIwICszMTg1LDIwIEBA
IGludCBSZW5kZXJCb3g6OmJhc2VsaW5lUG9zaXRpb24oYm9vbCAvKmYKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBSZW5kZXJCb3g6OmJsb2NrRGlyZWN0aW9uT3ZlcmZsb3coYm9vbCBpc0xpbmVW
ZXJ0aWNhbCwgaW50JiBsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3csIGludCYgbG9naWNhbEJvdHRv
bUxheW91dE92ZXJmbG93LAordm9pZCBSZW5kZXJCb3g6OmJsb2NrRGlyZWN0aW9uT3ZlcmZsb3co
Ym9vbCBpc0xpbmVIb3Jpem9udGFsLCBpbnQmIGxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxvdywgaW50
JiBsb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpbnQmIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdywgaW50JiBsb2dpY2Fs
Qm90dG9tVmlzdWFsT3ZlcmZsb3cpCiB7Ci0gICAgaWYgKGlzTGluZVZlcnRpY2FsKSB7Ci0gICAg
ICAgIGxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxvdyA9IGxlZnRMYXlvdXRPdmVyZmxvdygpOwotICAg
ICAgICBsb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3cgPSByaWdodExheW91dE92ZXJmbG93KCk7
Ci0gICAgICAgIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyA9IGxlZnRWaXN1YWxPdmVyZmxvdygp
OwotICAgICAgICBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgPSByaWdodFZpc3VhbE92ZXJm
bG93KCk7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoaXNMaW5lSG9yaXpvbnRhbCkgewogICAgICAg
ICBsb2dpY2FsVG9wTGF5b3V0T3ZlcmZsb3cgPSB0b3BMYXlvdXRPdmVyZmxvdygpOwogICAgICAg
ICBsb2dpY2FsQm90dG9tTGF5b3V0T3ZlcmZsb3cgPSBib3R0b21MYXlvdXRPdmVyZmxvdygpOwog
ICAgICAgICBsb2dpY2FsVG9wVmlzdWFsT3ZlcmZsb3cgPSB0b3BWaXN1YWxPdmVyZmxvdygpOwog
ICAgICAgICBsb2dpY2FsQm90dG9tVmlzdWFsT3ZlcmZsb3cgPSBib3R0b21WaXN1YWxPdmVyZmxv
dygpOwotICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBsb2dpY2FsVG9wTGF5b3V0T3ZlcmZs
b3cgPSBsZWZ0TGF5b3V0T3ZlcmZsb3coKTsKKyAgICAgICAgbG9naWNhbEJvdHRvbUxheW91dE92
ZXJmbG93ID0gcmlnaHRMYXlvdXRPdmVyZmxvdygpOworICAgICAgICBsb2dpY2FsVG9wVmlzdWFs
T3ZlcmZsb3cgPSBsZWZ0VmlzdWFsT3ZlcmZsb3coKTsKKyAgICAgICAgbG9naWNhbEJvdHRvbVZp
c3VhbE92ZXJmbG93ID0gcmlnaHRWaXN1YWxPdmVyZmxvdygpOworICAgIH0gCiB9CiAKIHZvaWQg
UmVuZGVyQm94OjphZGp1c3RGb3JGbGlwcGVkQmxvY2tzV3JpdGluZ01vZGUoUmVuZGVyQm94KiBj
aGlsZCwgSW50UG9pbnQmIHBvaW50LCBGbGlwcGluZ0FkanVzdG1lbnQgYWRqdXN0bWVudCkKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5oCShyZXZpc2lvbiA3MTA0MykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNyArMTU1LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCwgY29uc3Qg
SW50U2l6ZSYgZGVsdGEpOwogICAgIHZvaWQgY2xlYXJMYXlvdXRPdmVyZmxvdygpOwogCi0gICAg
dm9pZCBibG9ja0RpcmVjdGlvbk92ZXJmbG93KGJvb2wgaXNMaW5lVmVydGljYWwsIGludCYgbG9n
aWNhbFRvcExheW91dE92ZXJmbG93LCBpbnQmIGxvZ2ljYWxCb3R0b21MYXlvdXRPdmVyZmxvdywK
KyAgICB2b2lkIGJsb2NrRGlyZWN0aW9uT3ZlcmZsb3coYm9vbCBpc0xpbmVIb3Jpem9udGFsLCBp
bnQmIGxvZ2ljYWxUb3BMYXlvdXRPdmVyZmxvdywgaW50JiBsb2dpY2FsQm90dG9tTGF5b3V0T3Zl
cmZsb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCYgbG9naWNhbFRvcFZp
c3VhbE92ZXJmbG93LCBpbnQmIGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyk7CiAKICAgICBp
bnQgY29udGVudFdpZHRoKCkgY29uc3QgeyByZXR1cm4gY2xpZW50V2lkdGgoKSAtIHBhZGRpbmdM
ZWZ0KCkgLSBwYWRkaW5nUmlnaHQoKTsgfQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94TW9kZWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmNwcAkocmV2aXNpb24gNzEwMzMpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNiwxNyArNTI2
LDE3IEBAIHZvaWQgUmVuZGVyQm94TW9kZWxPYmplY3Q6OnBhaW50RmlsbExheWUKIAogICAgICAg
ICBpZiAoIWluY2x1ZGVMZWZ0RWRnZSkgewogICAgICAgICAgICAgdG9wTGVmdCA9IEludFNpemUo
KTsKLSAgICAgICAgICAgIGlmIChib3gtPmlzVmVydGljYWwoKSkKLSAgICAgICAgICAgICAgICB0
b3BSaWdodCA9IEludFNpemUoKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChi
b3gtPmlzSG9yaXpvbnRhbCgpKQogICAgICAgICAgICAgICAgIGJvdHRvbUxlZnQgPSBJbnRTaXpl
KCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdG9wUmlnaHQgPSBJbnRTaXpl
KCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICghaW5jbHVkZVJpZ2h0RWRnZSkg
ewotICAgICAgICAgICAgaWYgKGJveC0+aXNWZXJ0aWNhbCgpKQotICAgICAgICAgICAgICAgIGJv
dHRvbUxlZnQgPSBJbnRTaXplKCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAo
Ym94LT5pc0hvcml6b250YWwoKSkKICAgICAgICAgICAgICAgICB0b3BSaWdodCA9IEludFNpemUo
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBib3R0b21MZWZ0ID0gSW50U2l6
ZSgpOwogICAgICAgICAgICAgYm90dG9tUmlnaHQgPSBJbnRTaXplKCk7CiAgICAgICAgIH0KICAg
ICAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaW5lQm94TGlzdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGluZUJveExpc3QuY3BwCShyZXZp
c2lvbiA3MTAzMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxpbmVCb3hMaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc4LDExICsyNzgsMTEgQEAgYm9vbCBSZW5kZXJMaW5lQm94TGlz
dDo6aGl0VGVzdChSZW5kZXJCbwogICAgIGlmICghZmlyc3RMaW5lQm94KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIGJvb2wgaXNWZXJ0aWNhbCA9IGZpcnN0TGluZUJveCgpLT5pc1Zl
cnRpY2FsKCk7CisgICAgYm9vbCBpc0hvcml6b250YWwgPSBmaXJzdExpbmVCb3goKS0+aXNIb3Jp
em9udGFsKCk7CiAgICAgCi0gICAgaW50IGxvZ2ljYWxQb2ludFN0YXJ0ID0gaXNWZXJ0aWNhbCA/
IHggLSByZXN1bHQubGVmdFBhZGRpbmcoKSA6IHkgLSByZXN1bHQudG9wUGFkZGluZygpOwotICAg
IGludCBsb2dpY2FsUG9pbnRFbmQgPSBpc1ZlcnRpY2FsID8geCArIHJlc3VsdC5yaWdodFBhZGRp
bmcoKSA6IHkgKyByZXN1bHQuYm90dG9tUGFkZGluZygpOwotICAgIGludCBvZmZzZXQgPSBpc1Zl
cnRpY2FsID8gdHggOiB0eTsKKyAgICBpbnQgbG9naWNhbFBvaW50U3RhcnQgPSBpc0hvcml6b250
YWwgPyB5IC0gcmVzdWx0LnRvcFBhZGRpbmcoKSA6IHggLSByZXN1bHQubGVmdFBhZGRpbmcoKTsK
KyAgICBpbnQgbG9naWNhbFBvaW50RW5kID0gaXNIb3Jpem9udGFsID8geSArIHJlc3VsdC5ib3R0
b21QYWRkaW5nKCkgOiB4ICsgcmVzdWx0LnJpZ2h0UGFkZGluZygpOworICAgIGludCBvZmZzZXQg
PSBpc0hvcml6b250YWwgPyB0eSA6IHR4OwogCiAgICAgLy8gV2UgY2FuIGNoZWNrIHRoZSBmaXJz
dCBib3ggYW5kIGxhc3QgYm94IGFuZCBhdm9pZCBoaXQgdGVzdGluZyBpZiB3ZSBkb24ndAogICAg
IC8vIGNvbnRhaW4gdGhlIHBvaW50LiAgVGhpcyBpcyBhIHF1aWNrIHNob3J0LWNpcmN1aXQgdGhh
dCB3ZSBjYW4gdGFrZSB0byBhdm9pZCB3YWxraW5nIGFueSBsaW5lcy4KSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guY3BwCShyZXZpc2lvbiA3MTAzMykKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1Jvb3RJbmxpbmVCb3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIFJv
b3RJbmxpbmVCb3g6OlJvb3RJbmxpbmVCb3goUmVuZGVyQmxvY2sKICAgICAsIG1fcGFnaW5hdGlv
blN0cnV0KDApCiAgICAgLCBtX2Jsb2NrTG9naWNhbEhlaWdodCgwKQogewotICAgIHNldElzVmVy
dGljYWwoIWJsb2NrLT5zdHlsZSgpLT5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKTsKKyAgICBz
ZXRJc0hvcml6b250YWwoYmxvY2stPnN0eWxlKCktPmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkp
OwogfQogCiAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBSb290SW5saW5lQm94OjpwbGFjZUVsbGlw
c2lzKGNvbnN0IAogICAgIC8vIENyZWF0ZSBhbiBlbGxpcHNpcyBib3guCiAgICAgRWxsaXBzaXNC
b3gqIGVsbGlwc2lzQm94ID0gbmV3IChyZW5kZXJlcigpLT5yZW5kZXJBcmVuYSgpKSBFbGxpcHNp
c0JveChyZW5kZXJlcigpLCBlbGxpcHNpc1N0ciwgdGhpcywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxsaXBzaXNXaWR0aCAt
IChtYXJrdXBCb3ggPyBtYXJrdXBCb3gtPmxvZ2ljYWxXaWR0aCgpIDogMCksIGxvZ2ljYWxIZWln
aHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeSgpLCAhcHJldlJvb3RCb3goKSwgaXNWZXJ0aWNhbCgpLCBtYXJrdXBCb3gp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB5KCksICFwcmV2Um9vdEJveCgpLCBpc0hvcml6b250YWwoKSwgbWFya3VwQm94KTsK
ICAgICAKICAgICBpZiAoIWdFbGxpcHNpc0JveE1hcCkKICAgICAgICAgZ0VsbGlwc2lzQm94TWFw
ID0gbmV3IEVsbGlwc2lzQm94TWFwKCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9Sb290SW5s
aW5lQm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUm9vdElubGluZUJveC5o
CShyZXZpc2lvbiA3MTAzMykKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1Jvb3RJbmxpbmVCb3guaAko
d29ya2luZyBjb3B5KQpAQCAtODgsOCArODgsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZv
aWQgY2xlYXJUcnVuY2F0aW9uKCk7CiAKLSAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+YmFzZWxpbmVQb3NpdGlvbihtX2Zp
cnN0TGluZSwgbV9pc1ZlcnRpY2FsID8gVmVydGljYWxMaW5lIDogSG9yaXpvbnRhbExpbmUsIFBv
c2l0aW9uT2ZJbnRlcmlvckxpbmVCb3hlcyk7IH0KLSAgICB2aXJ0dWFsIGludCBsaW5lSGVpZ2h0
KCkgY29uc3QgeyByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+bGluZUhlaWdodChtX2ZpcnN0TGlu
ZSwgbV9pc1ZlcnRpY2FsID8gVmVydGljYWxMaW5lIDogSG9yaXpvbnRhbExpbmUsIFBvc2l0aW9u
T2ZJbnRlcmlvckxpbmVCb3hlcyk7IH0KKyAgICB2aXJ0dWFsIGludCBiYXNlbGluZVBvc2l0aW9u
KCkgY29uc3QgeyByZXR1cm4gYm94TW9kZWxPYmplY3QoKS0+YmFzZWxpbmVQb3NpdGlvbihtX2Zp
cnN0TGluZSwgaXNIb3Jpem9udGFsKCkgPyBIb3Jpem9udGFsTGluZSA6IFZlcnRpY2FsTGluZSwg
UG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKTsgfQorICAgIHZpcnR1YWwgaW50IGxpbmVIZWln
aHQoKSBjb25zdCB7IHJldHVybiBib3hNb2RlbE9iamVjdCgpLT5saW5lSGVpZ2h0KG1fZmlyc3RM
aW5lLCBpc0hvcml6b250YWwoKSA/IEhvcml6b250YWxMaW5lIDogVmVydGljYWxMaW5lLCBQb3Np
dGlvbk9mSW50ZXJpb3JMaW5lQm94ZXMpOyB9CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdm9p
ZCBhZGRIaWdobGlnaHRPdmVyZmxvdygpOwo=
</data>
<flag name="review"
          id="62814"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>