From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 10.142.188.15 with SMTP id l15cs15060wff; Fri, 20 May 2011 09:07:39 -0700 (PDT) Received: by 10.52.18.15 with SMTP id s15mr6508772vdd.224.1305907658462; Fri, 20 May 2011 09:07:38 -0700 (PDT) Return-Path: Received: from rubyforge.org (rubyforge.org [205.234.109.19]) by mx.google.com with ESMTP id v7si2892660vcx.163.2011.05.20.09.07.37; Fri, 20 May 2011 09:07:38 -0700 (PDT) Received-SPF: pass (google.com: domain of sup-devel-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) client-ip=205.234.109.19; Authentication-Results: mx.google.com; spf=pass (google.com: domain of sup-devel-bounces@rubyforge.org designates 205.234.109.19 as permitted sender) smtp.mail=sup-devel-bounces@rubyforge.org; dkim=neutral (body hash did not verify) header.i=@gmail.com Received: from rubyforge.org (rubyforge.org [127.0.0.1]) by rubyforge.org (Postfix) with ESMTP id B8E0B3C8040 for ; Fri, 20 May 2011 12:07:37 -0400 (EDT) Received: from mail-vw0-f50.google.com (mail-vw0-f50.google.com [209.85.212.50]) by rubyforge.org (Postfix) with ESMTP id B3E081858374 for ; Fri, 20 May 2011 11:38:30 -0400 (EDT) Received: by vws14 with SMTP id 14so3718337vws.23 for ; Fri, 20 May 2011 08:38:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=7xxBUeuJs+2oslL6pmaG9oXltpHI3yobl/fYAz9Qoqw=; b=CmUzMhTl35tJzSznArUaQcGLV+IzO/4P5tpt3RPVml5Z8Gfpu9jC3M+BlICq2cgaC3 DVzjJcNRK3IEcsBsVabmiYupnxNcXchT7FKzNoCyc/7cECkgUjyr5epVzvATMz9Kd/3t 7Yj+pvmGYrCfoWalicPTXVQLGxhDpC7DPJbj0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=YttbGphF0dKeKTALVi03SGvZHD5HWfXLJd8HMKo8pVA5FJM5UYDGKGPqdaEbCst2KQ uXsRsssAcWsypt9hbrYE3FQBQlwfRsaG+PBTXjwEQWOzIPc1ze7nKLxBjXuDAO9WwiXq iR0DTFMW7Vg/xR/ZYe3vWEmqTP/iUSvAyBlK0= MIME-Version: 1.0 Received: by 10.52.114.194 with SMTP id ji2mr1158288vdb.41.1305905910090; Fri, 20 May 2011 08:38:30 -0700 (PDT) Received: by 10.52.112.100 with HTTP; Fri, 20 May 2011 08:38:30 -0700 (PDT) In-Reply-To: <1305694759-sup-7483@masanjin.net> References: <1305471101-sup-6655@masanjin.net> <1305694759-sup-7483@masanjin.net> Date: Sat, 21 May 2011 00:38:30 +0900 Message-ID: From: Horacio Sanson To: Sup developer discussion Content-Type: multipart/mixed; boundary=bcaec5489e5be18b2c04a3b6e9e3 Subject: Re: [sup-devel] Query for largest msg_id? X-BeenThere: sup-devel@rubyforge.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: Sup developer discussion List-Id: Sup developer discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: sup-devel-bounces@rubyforge.org Errors-To: sup-devel-bounces@rubyforge.org --bcaec5489e5be18b2c04a3b6e9e3 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Wed, May 18, 2011 at 2:05 PM, William Morgan wrote: > Reformatted excerpts from Horacio Sanson's message of 2011-05-17: >> I implemented a new version of the GMail -> Heliotrope sync script and >> attach it here in hopes someone will test it and provide some >> feedback/comments. > > Great! This is very exciting. > >> - I am seeing some negative thread_id's in the response. Need to check >> if this is normal or a bug in Heliotrope or my script. > > This is normal. It indicates a thread in which the root message can't be > found (so Heliotrope must construct a pseudo-message to hold the tree > together). Nothing to worry about, except as an indicator that you're > missing email refefred to by something else in the thread. > Is there a way to use GMail supplied thread ids?? there is an extension X-GM-THRID that provides such information. >> =A0 - GMail inbox is with a capital "I" (e.g. Inbox) while heliotrope >> uses a small "i". >> =A0 =A0 Shall I down case all labels? or make a special treatment for In= box? > > I suggest special-casing inbox. > Perfect, the new script special cases inbox >> To use this script I had to modify heliotrope-server.rb to allow >> setting labels and states when posting new messages (see attached >> patch). > > I apologize for the confusion in this, but this is actually the wrong > endpoint to use. POST "/message" (no .json) is for adding new emails. > This endpoint was introduced temporarily for outgoing emails, i.e. =A0whe= n > you compose or reply via turnsole. But I'm going to rename it as well as > implement it. > Great I rewrote the GMail -> Heliotrope script to use the improved POST "/message" and works wonderfully. I am attaching the new version that is cleaner and seems to work without problems. > Anyways, I've added the relevant code to /message, so your script should > work against that. > -- > William > _______________________________________________ > Sup-devel mailing list > Sup-devel@rubyforge.org > http://rubyforge.org/mailman/listinfo/sup-devel > --bcaec5489e5be18b2c04a3b6e9e3 Content-Type: application/x-ruby; name="gmail.rb" Content-Disposition: attachment; filename="gmail.rb" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gnxangly0 IyBlbmNvZGluZzogVVRGLTgKcmVxdWlyZSAibmV0L2ltYXAiCnJlcXVpcmUgInJ1YnlnZW1zIgpy ZXF1aXJlICdyZXN0X2NsaWVudCcKcmVxdWlyZSAnanNvbicKcmVxdWlyZSAiZmlsZXV0aWxzIgpy ZXF1aXJlICJjZ2kiCgojIE1vbmtleXBhdGNoIE5ldDo6SU1BUCB0byBzdXBwb3J0IEdNYWlsIElN QVAgZXh0ZW5zaW9ucy4KIyBodHRwOi8vY29kZS5nb29nbGUuY29tL2FwaXMvZ21haWwvaW1hcC8K bW9kdWxlIE5ldAogIGNsYXNzIElNQVAKCiAgICAjIEltcGxlbWVudCBHTWFpbCBYTElTVCBjb21t YW5kCiAgICBkZWYgeGxpc3QocmVmbmFtZSwgbWFpbGJveCkKICAgICAgc3luY2hyb25pemUgZG8K ICAgICAgICBzZW5kX2NvbW1hbmQoIlhMSVNUIiwgcmVmbmFtZSwgbWFpbGJveCkKICAgICAgICBy ZXR1cm4gQHJlc3BvbnNlcy5kZWxldGUoIlhMSVNUIikKICAgICAgZW5kCiAgICBlbmQKCiAgICBj bGFzcyBSZXNwb25zZVBhcnNlcgogICAgICBkZWYgcmVzcG9uc2VfdW50YWdnZWQKICAgICAgICBt YXRjaChUX1NUQVIpCiAgICAgICAgbWF0Y2goVF9TUEFDRSkKICAgICAgICB0b2tlbiA9IGxvb2th aGVhZAogICAgICAgIGlmIHRva2VuLnN5bWJvbCA9PSBUX05VTUJFUgogICAgICAgICAgcmV0dXJu IG51bWVyaWNfcmVzcG9uc2UKICAgICAgICBlbHNpZiB0b2tlbi5zeW1ib2wgPT0gVF9BVE9NCiAg ICAgICAgICBjYXNlIHRva2VuLnZhbHVlCiAgICAgICAgICB3aGVuIC9cQSg/Ok9LfE5PfEJBRHxC WUV8UFJFQVVUSClcei9uaQogICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VfY29uZAogICAgICAg ICAgd2hlbiAvXEEoPzpGTEFHUylcei9uaQogICAgICAgICAgICByZXR1cm4gZmxhZ3NfcmVzcG9u c2UKICAgICAgICAgIHdoZW4gL1xBKD86TElTVHxMU1VCfFhMSVNUKVx6L25pICAjIEFkZGVkIFhM SVNUCiAgICAgICAgICAgIHJldHVybiBsaXN0X3Jlc3BvbnNlCiAgICAgICAgICB3aGVuIC9cQSg/ OlFVT1RBKVx6L25pCiAgICAgICAgICAgIHJldHVybiBnZXRxdW90YV9yZXNwb25zZQogICAgICAg ICAgd2hlbiAvXEEoPzpRVU9UQVJPT1QpXHovbmkKICAgICAgICAgICAgcmV0dXJuIGdldHF1b3Rh cm9vdF9yZXNwb25zZQogICAgICAgICAgd2hlbiAvXEEoPzpBQ0wpXHovbmkKICAgICAgICAgICAg cmV0dXJuIGdldGFjbF9yZXNwb25zZQogICAgICAgICAgd2hlbiAvXEEoPzpTRUFSQ0h8U09SVClc ei9uaQogICAgICAgICAgICByZXR1cm4gc2VhcmNoX3Jlc3BvbnNlCiAgICAgICAgICB3aGVuIC9c QSg/OlRIUkVBRClcei9uaQogICAgICAgICAgICByZXR1cm4gdGhyZWFkX3Jlc3BvbnNlCiAgICAg ICAgICB3aGVuIC9cQSg/OlNUQVRVUylcei9uaQogICAgICAgICAgICByZXR1cm4gc3RhdHVzX3Jl c3BvbnNlCiAgICAgICAgICB3aGVuIC9cQSg/OkNBUEFCSUxJVFkpXHovbmkKICAgICAgICAgICAg cmV0dXJuIGNhcGFiaWxpdHlfcmVzcG9uc2UKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgcmV0 dXJuIHRleHRfcmVzcG9uc2UKICAgICAgICAgIGVuZAogICAgICAgIGVsc2UKICAgICAgICAgIHBh cnNlX2Vycm9yKCJ1bmV4cGVjdGVkIHRva2VuICVzIiwgdG9rZW4uc3ltYm9sKQogICAgICAgIGVu ZAogICAgICBlbmQKCiAgICAgIGRlZiByZXNwb25zZV90YWdnZWQKICAgICAgICB0YWcgPSBhdG9t CiAgICAgICAgbWF0Y2goVF9TUEFDRSkKICAgICAgICB0b2tlbiA9IG1hdGNoKFRfQVRPTSkKICAg ICAgICBuYW1lID0gdG9rZW4udmFsdWUudXBjYXNlCiAgICAgICAgbWF0Y2goVF9TUEFDRSkKICAg ICAgICAjcHV0cyAiQUFBQUFBQUEgICN7dGFnfSAje25hbWV9ICN7cmVzcF90ZXh0fSAje0BzdHJ9 IgogICAgICAgIHJldHVybiBUYWdnZWRSZXNwb25zZS5uZXcodGFnLCBuYW1lLCByZXNwX3RleHQs IEBzdHIpCiAgICAgIGVuZAoKICAgICAgZGVmIG1zZ19hdHQKICAgICAgICBtYXRjaChUX0xQQVIp CiAgICAgICAgYXR0ciA9IHt9CiAgICAgICAgd2hpbGUgdHJ1ZQogICAgICAgICAgdG9rZW4gPSBs b29rYWhlYWQKICAgICAgICAgIGNhc2UgdG9rZW4uc3ltYm9sCiAgICAgICAgICB3aGVuIFRfUlBB UgogICAgICAgICAgICBzaGlmdF90b2tlbgogICAgICAgICAgICBicmVhawogICAgICAgICAgd2hl biBUX1NQQUNFCiAgICAgICAgICAgIHNoaWZ0X3Rva2VuCiAgICAgICAgICAgIHRva2VuID0gbG9v a2FoZWFkCiAgICAgICAgICBlbmQKICAgICAgICAgIGNhc2UgdG9rZW4udmFsdWUKICAgICAgICAg IHdoZW4gL1xBKD86RU5WRUxPUEUpXHovbmkKICAgICAgICAgICAgbmFtZSwgdmFsID0gZW52ZWxv cGVfZGF0YQogICAgICAgICAgd2hlbiAvXEEoPzpGTEFHUylcei9uaQogICAgICAgICAgICBuYW1l LCB2YWwgPSBmbGFnc19kYXRhCiAgICAgICAgICB3aGVuIC9cQSg/OlgtR00tTEFCRUxTKVx6L25p ICAjIEFkZGVkIFgtR00tTEFCRUxTIGV4dGVuc2lvbgogICAgICAgICAgICBuYW1lLCB2YWwgPSBm bGFnc19kYXRhCiAgICAgICAgICB3aGVuIC9cQSg/OklOVEVSTkFMREFURSlcei9uaQogICAgICAg ICAgICBuYW1lLCB2YWwgPSBpbnRlcm5hbGRhdGVfZGF0YQogICAgICAgICAgd2hlbiAvXEEoPzpS RkM4MjIoPzpcLkhFQURFUnxcLlRFWFQpPylcei9uaQogICAgICAgICAgICBuYW1lLCB2YWwgPSBy ZmM4MjJfdGV4dAogICAgICAgICAgd2hlbiAvXEEoPzpSRkM4MjJcLlNJWkUpXHovbmkKICAgICAg ICAgICAgbmFtZSwgdmFsID0gcmZjODIyX3NpemUKICAgICAgICAgIHdoZW4gL1xBKD86Qk9EWSg/ OlNUUlVDVFVSRSk/KVx6L25pCiAgICAgICAgICAgIG5hbWUsIHZhbCA9IGJvZHlfZGF0YQogICAg ICAgICAgd2hlbiAvXEEoPzpVSUQpXHovbmkKICAgICAgICAgICAgbmFtZSwgdmFsID0gdWlkX2Rh dGEKICAgICAgICAgIHdoZW4gL1xBKD86WC1HTS1NU0dJRClcei9uaSAgIyBBZGRlZCBYLUdNLU1T R0lEIGV4dGVuc2lvbgogICAgICAgICAgICBuYW1lLCB2YWwgPSB1aWRfZGF0YQogICAgICAgICAg d2hlbiAvXEEoPzpYLUdNLVRIUklEKVx6L25pICAjIEFkZGVkIFgtR00tVEhSSUQgZXh0ZW5zaW9u CiAgICAgICAgICAgIG5hbWUsIHZhbCA9IHVpZF9kYXRhCiAgICAgICAgICBlbHNlCiAgICAgICAg ICAgIHBhcnNlX2Vycm9yKCJ1bmtub3duIGF0dHJpYnV0ZSBgJXMnIiwgdG9rZW4udmFsdWUpCiAg ICAgICAgICBlbmQKICAgICAgICAgIGF0dHJbbmFtZV0gPSB2YWwKICAgICAgICBlbmQKICAgICAg ICByZXR1cm4gYXR0cgogICAgICBlbmQKICAgIGVuZAogIGVuZAplbmQKCgpjbGFzcyBHTWFpbAoK ICBAQGlnbm9yZV9hdHRyID0gWzpBbGxtYWlsLCA6U3BhbSwgOlRyYXNoLCA6Tm9zZWxlY3RdCiAg QEBpZ25vcmVfbWFpbGJveCA9IFtdCgogIGNsYXNzIE1haWxib3gKCiAgICBhdHRyX2FjY2Vzc29y IDp1aWRtYXgKICAgIGF0dHJfcmVhZGVyIDpudW1fc2VlbiwgOm51bV9pbmRleGVkLCA6bnVtX2Jh ZAogICAgYXR0cl9yZWFkZXIgOnVpZHZhbGlkaXR5LCA6dWlkbmV4dAoKICAgIEBtYWlsYm94X2Nh Y2hlID0gIiN7RU5WWydIT01FJ119Ly5nbWFpbC1jYWNoZSIKCiAgICBkZWYgTWFpbGJveC5jYWNo ZV9kaXIKICAgICAgQG1haWxib3hfY2FjaGUKICAgIGVuZAoKICAgIGRlZiBNYWlsYm94LmNyZWF0 ZShpbWFwLCBuYW1lKQogICAgICByYWlzZSAiUmVxdWlyZXMgTmV0OjpJTUFQIG9iamVjdCIgaWYg ISBpbWFwLmlzX2E/KE5ldDo6SU1BUCkKCiAgICAgIEZpbGVVdGlscy5ta2Rpcl9wKEBtYWlsYm94 X2NhY2hlKQoKICAgICAgKGxvYWRfbWFpbGJveChuYW1lKSB8fCBNYWlsYm94Lm5ldyhuYW1lKSku c2VuZCg6ZXhhbWluZSwgaW1hcCkKCiAgICBlbmQKCiAgICBkZWYgbmFtZQogICAgICBOZXQ6OklN QVAuZGVjb2RlX3V0ZjcoQG5hbWUpCiAgICBlbmQKCiAgICBkZWYgaW1hcAogICAgICBAaW1hcAog ICAgZW5kCgogICAgIyBSZXR1cm5zIHRydWUgaWYgdGhlIGNhY2hlZCB1aWR2YWxpZGl0eSBpcyBl cXVhbAogICAgIyB0byB0aGUgcmVtb3RlIHVpZHZhbGlkaXR5LgogICAgZGVmIHZhbGlkPwogICAg ICBAdmFsaWQKICAgIGVuZAoKICAgICMgUmV0dXJuIHRydWUgaWYgbmV3IG1lc3NhZ2VzIGhhdmUg YmVlbiBhcHBlbmRlZCB0byB0aGUgcmVtb3RlCiAgICAjIG1haWxib3ggc2luY2Ugb3VyIGxhc3Qg c3luYy4gVGhhdCBpcyBvdXIgY2hhY2hlZCB1aWRuZXh0IGRpZmZlcnMKICAgICMgZnJvbSB0aGUg c2VydmVyIHVpZG5leHQKICAgIGRlZiBuZXdfbXNnPwogICAgICBAbmV3X21zZwogICAgZW5kCgog ICAgZGVmIG5leHRfbWVzc2FnZQogICAgICBAaWRzIHx8PSBiZWdpbgogICAgICAgIGlmIHZhbGlk PyBhbmQgISBuZXdfbXNnPwogICAgICAgICAgcHV0cyAiOyB2YWxpZCBidXQgbm8gbmV3IG1lc3Nh Z2VzLi4uIgogICAgICAgICAgaWRzID0gW10KICAgICAgICBlbHNpZiB2YWxpZD8gYW5kIG5ld19t c2c/CiAgICAgICAgICBwdXRzICI7IHZhbGlkIGFuZCBuZXcgbWVzc2FnZXMuLi4uIgogICAgICAg ICAgaWRzID0gKChAdWlkbWF4ICsgMSkgLi4gQHVpZG5leHQpLnRvX2EKICAgICAgICBlbHNlCiAg ICAgICAgICBwdXRzICI7IHVpZHZhbGlkaXR5IG1pc21hdGNoLi4uLiIKICAgICAgICAgIGlkcyA9 IEBpbWFwLnNlYXJjaChbIk5PVCIsICJERUxFVEVEIl0pIHx8IFtdCiAgICAgICAgZW5kCiAgICAg ICAgcHV0cyAiOyBnb3QgI3tpZHMuc2l6ZX0gbWVzc2FnZXMiCiAgICAgICAgaWRzCiAgICAgIGVu ZAoKICAgICAgaWYgQG1zZ3MuZW1wdHk/IGFuZCAhIEBpZHMuZW1wdHk/CiAgICAgICAgaWRzID0g QGlkcy5zaGlmdCgxMCkKICAgICAgICBxdWVyeSA9IGlkcy5maXJzdCAuLiBpZHMubGFzdAogICAg ICAgIHB1dHMgIjsgcmVxdWVzdGluZyBtZXNzYWdlcyAje3F1ZXJ5Lmluc3BlY3R9IGZyb20gaW1h cCBzZXJ2ZXIiCiAgICAgICAgc3RhcnR0ID0gVGltZS5ub3cKICAgICAgICBiZWdpbgogICAgICAg ICAgaWYgdmFsaWQ/IGFuZCBuZXdfbXNnPwogICAgICAgICAgICBAbXNncyA9IEBpbWFwLnVpZF9m ZXRjaChxdWVyeSwgWyJVSUQiLCAiWC1HTS1NU0dJRCIsICJYLUdNLVRIUklEIiwgIlgtR00tTEFC RUxTIiwgIkZMQUdTIiwgIlJGQzgyMiJdKQogICAgICAgICAgZWxzZQogICAgICAgICAgICBAbXNn cyA9IEBpbWFwLmZldGNoKHF1ZXJ5LCBbIlVJRCIsICJYLUdNLU1TR0lEIiwgIlgtR00tVEhSSUQi LCAiWC1HTS1MQUJFTFMiLCAiRkxBR1MiLCAiUkZDODIyIl0pCiAgICAgICAgICBlbmQKICAgICAg ICByZXNjdWUgTmV0OjpJTUFQOjpCeWVSZXNwb25zZUVycm9yCiAgICAgICAgICBwdXRzICJTZXJ2 ZXIgc2FpZCBCWUUgdG8gdXMiCiAgICAgICAgcmVzY3VlID0+IGUKICAgICAgICAgIHB1dHMgIkV4 Y2VwdGlvbiBkdXJpbmcgZmV0Y2ggOiAje2V9IgogICAgICAgIGVuZAogICAgICAgIGVsYXBzZWQg PSBUaW1lLm5vdyAtIHN0YXJ0dAoKICAgICAgICBpZiBAbXNncwogICAgICAgICAgQG1zZ3MgPSBA bXNncy5tYXAgZG8gfG18CgogICAgICAgICAgICAjIExvYWQgdGhlIG1lc3NhZ2UgcmF3IGRhdGEK ICAgICAgICAgICAgYm9keSA9IG0uYXR0clsiUkZDODIyIl0KICAgICAgICAgICAgYm9keS5mb3Jj ZV9lbmNvZGluZygiYmluYXJ5IikgaWYgYm9keS5yZXNwb25kX3RvPyg6Zm9yY2VfZW5jb2Rpbmcp CiAgICAgICAgICAgIGJvZHkuZ3N1YigiXHJcbiIsICJcbiIpCgogICAgICAgICAgICAjIExvYWQg dGhlIG1lc3NhZ2UgbGFiZWxzIGFuZCBhZGQgdGhlIG1haWxib3ggbmFtZSBhcyBsYWJlbC4KICAg ICAgICAgICAgIyBBbHNvIGRvd25jYXNlIHRoZSBzcGVjaWFsIEluYm94IG1haWxib3guCiAgICAg ICAgICAgIGxhYmVscyA9IG0uYXR0clsiWC1HTS1MQUJFTFMiXS5wdXNoKEBuYW1lKS5jb2xsZWN0 IHsgfGxhYmVsfAogICAgICAgICAgICAgIGlmIGxhYmVsID09ICJJbmJveCIgICAjIFNwZWNpYWwg Y2FzZSBmb3IgSW5ib3gKICAgICAgICAgICAgICAgIGxhYmVsLmRvd25jYXNlCiAgICAgICAgICAg ICAgZWxzZQogICAgICAgICAgICAgICAgTmV0OjpJTUFQLmRlY29kZV91dGY3KGxhYmVsLnRvX3Mp CiAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTG9hZCB0aGUg bWVzc2FnZSBzdGF0ZSBmbGFncy4KICAgICAgICAgICAgc3RhdGUgPSBtLmF0dHJbIkZMQUdTIl0u Y29sbGVjdCB7IHxmbGFnfCBmbGFnLnRvX3MuZG93bmNhc2UudG9fc3ltIH0KCiAgICAgICAgICAg ICMgUmV0dXJuIGEgaGFzaCB3aXRoIGFsbCBpbnRlcmVzdGluZyBkZXRhaWxzIG9mIHRoZSBtZXNz YWdlCiAgICAgICAgICAgIHsgOmJvZHkgPT4gYm9keSwgOmxhYmVscyA9PiBsYWJlbHMsIDpzdGF0 ZSA9PiBzdGF0ZSwgOnVpZCA9PiBtLmF0dHJbIlVJRCJdIH0KICAgICAgICAgIGVuZAogICAgICAg ICAgc2F2ZQogICAgICAgICAgcHJpbnRmICI7IHRoZSBpbWFwIHNlcnZlciBsb3ZpbmcgZ2F2ZSB1 cyAje0Btc2dzLnNpemV9IG1lc3NhZ2VzIGluICUuMWZzID0gYSB3aG9wcGluZyAlLjFmbS9zXG4i LCBlbGFwc2VkLCBAbXNncy5zaXplIC8gZWxhcHNlZAogICAgICAgICAgcHV0cyAibWF4IFVJRCBp cyAje0B1aWRtYXh9IgogICAgICAgIGVsc2UKICAgICAgICAgIHB1dHMgIldhcm5pbmc6IGZldGNo IHJldHVybmVkIG5vIG5ldyBtZXNzYWdlcyIKICAgICAgICAgIEBtc2dzID0gW10KICAgICAgICBl bmQKICAgICAgZW5kCgogICAgICBtc2cgPSBAbXNncy5zaGlmdAogICAgICBAdWlkbWF4ID0gW0B1 aWRtYXgsIG1zZ1s6dWlkXV0ubWF4ICBpZiBtc2cKICAgICAgbXNnCiAgICBlbmQKCiAgICBkZWYg ZG9uZT8KICAgICAgaWYgQGlkcyAmJiBAaWRzLmVtcHR5PyAmJiBAbXNncy5lbXB0eT8KICAgICAg ICBAdWlkbmV4dCA9IEBpbWFwLnJlc3BvbnNlc1siVUlETkVYVCJdWy0xXQogICAgICAgIHNhdmUK ICAgICAgICByZXR1cm4gdHJ1ZQogICAgICBlbmQKICAgICAgZmFsc2UKICAgIGVuZAoKICAgIGRl ZiBzYXZlCiAgICAgIGZpbGVuYW1lID0gRmlsZS5qb2luKE1haWxib3guY2FjaGVfZGlyLCBOZXQ6 OklNQVAuZGVjb2RlX3V0ZjcoQG5hbWUpLmdzdWIoIi8iLCJfX18iKSkKICAgICAgdG1wX2ltYXAg PSBAaW1hcAogICAgICBAaW1hcCA9IG5pbAogICAgICBGaWxlLm9wZW4oZmlsZW5hbWUsIndiIikg eyB8ZmR8CiAgICAgICAgZmQgPDwgTWFyc2hhbC5kdW1wKHNlbGYpCiAgICAgIH0KICAgICAgQGlt YXAgPSB0bXBfaW1hcAogICAgICBzZWxmCiAgICBlbmQKCiAgICBwcml2YXRlCgogICAgZGVmIGV4 YW1pbmUodmFsKQogICAgICBAaW1hcCA9IHZhbAogICAgICBAaW1hcC5leGFtaW5lKEBuYW1lKQog ICAgICBAdmFsaWQgPSAoQHVpZHZhbGlkaXR5ID09IEBpbWFwLnJlc3BvbnNlc1siVUlEVkFMSURJ VFkiXVstMV0pCiAgICAgIEBuZXdfbXNnID0gKEB1aWRuZXh0ICE9IEBpbWFwLnJlc3BvbnNlc1si VUlETkVYVCJdWy0xXSkKICAgICAgQHVpZHZhbGlkaXR5ID0gQGltYXAucmVzcG9uc2VzWyJVSURW QUxJRElUWSJdWy0xXQogICAgICBAaWRzID0gbmlsCiAgICAgIEBtc2dzID0gW10KICAgICAgc2Vs ZgogICAgZW5kCgogICAgZGVmIGluaXRpYWxpemUobmFtZSkKICAgICAgcHV0cyAiQ3JlYXRpbmcg bmV3IE1haWxib3hDYWNoZSAje05ldDo6SU1BUC5kZWNvZGVfdXRmNyhuYW1lKX0iCiAgICAgIEBu YW1lID0gbmFtZQogICAgICBAdWlkbWF4ID0gMAogICAgICBAbnVtX3NlZW4gPSAwCiAgICAgIEBu dW1faW5kZXhlZCA9IDAKICAgICAgQG51bV9iYWQgPSAwCiAgICBlbmQKCiAgICBkZWYgTWFpbGJv eC5sb2FkX21haWxib3gobmFtZSkKICAgICAgZmlsZW5hbWUgPSBGaWxlLmpvaW4oQG1haWxib3hf Y2FjaGUsIE5ldDo6SU1BUC5kZWNvZGVfdXRmNyhuYW1lKS5nc3ViKCIvIiwiX19fIikpCiAgICAg IG1haWxib3ggPSBuaWwKICAgICAgaWYgRmlsZS5leGlzdHM/KGZpbGVuYW1lKQogICAgICAgIEZp bGUub3BlbihmaWxlbmFtZSwicmIiKSB7IHxmZHwKICAgICAgICAgIG1haWxib3ggPSBNYXJzaGFs LmxvYWQoZmQucmVhZCkKICAgICAgICB9CiAgICAgIGVuZAogICAgICBtYWlsYm94CiAgICBlbmQK CiAgICBkZWYgTWFpbGJveC5zYW5pdGl6ZV9maWxlbmFtZShmaWxlbmFtZSkKICAgICAgcmV0dXJu IGZpbGVuYW1lLnN0cmlwIGRvIHxuYW1lfAogICAgICAgICMgTk9URTogRmlsZS5iYXNlbmFtZSBk b2Vzbid0IHdvcmsgcmlnaHQgd2l0aCBXaW5kb3dzIHBhdGhzIG9uIFVuaXgKICAgICAgICAjIGdl dCBvbmx5IHRoZSBmaWxlbmFtZSwgbm90IHRoZSB3aG9sZSBwYXRoCiAgICAgICAgbmFtZS5nc3Vi ISAvXi4qKFxcfFwvKS8sICcnCgogICAgICAgICMgRmluYWxseSwgcmVwbGFjZSBhbGwgbm9uIGFs cGhhbnVtZXJpYywgdW5kZXJzY29yZSAKICAgICAgICAjIG9yIHBlcmlvZHMgd2l0aCB1bmRlcnNj b3JlCiAgICAgICAgIyBuYW1lLmdzdWIhIC9bXlx3XC5cLV0vLCAnXycKICAgICAgICAjIEJhc2lj YWxseSBzdHJpcCBvdXQgdGhlIG5vbi1hc2NpaSBhbHBoYWJldHMgdG9vIAogICAgICAgICMgYW5k IHJlcGxhY2Ugd2l0aCB4LiAKICAgICAgICAjIFlvdSBkb24ndCB3YW50IGFsbCBfIDopCiAgICAg ICAgbmFtZS5nc3ViISgvW14wLTlBLVphLXouXC1dLywgJ3gnKQogICAgICBlbmQKICAgIGVuZAog IGVuZAoKICBkZWYgaW5pdGlhbGl6ZSh1c2VyLCBwYXNzKQogICAgcHV0cyAiQ29ubmVjdGluZyB0 byBHbWFpbCAuLi4iCiAgICBAaW1hcCA9IE5ldDo6SU1BUC5uZXcgImltYXAuZ21haWwuY29tIiwg OTkzLCA6c3NsID0+IHRydWUKICAgIHB1dHMgIkxvZ2luIGFzICN7dXNlcn0gLi4uIgogICAgQGlt YXAubG9naW4gdXNlciwgcGFzcwoKICAgICMgSW5zdGFsbCByZXNwb25zZSBoYW5kbGVyIHRvIGNh dGNoIFVJRFBMVVMgcmVwb25zZSBVSUQKICAgIEBpbWFwLmFkZF9yZXNwb25zZV9oYW5kbGVyIHsg fHJlc3B8CiAgICAgIyBwdXRzICJERUJVRzogI3tyZXNwfSIKICAgICAgaWYgcmVzcC5raW5kX29m PyhOZXQ6OklNQVA6OlRhZ2dlZFJlc3BvbnNlKQogICAgICAgaWYgcmVzcC5kYXRhLmlzX2E/TmV0 OjpJTUFQOjpSZXNwb25zZVRleHQgYW5kIHJlc3AuZGF0YS5jb2RlIGFuZCByZXNwLmRhdGEuY29k ZS5uYW1lID09ICJBUFBFTkRVSUQiCiAgICAgICAgIHB1dHMgIkFwcGVuZCBNZXNzYWdlIFVJRCAj e3Jlc3AuZGF0YS5jb2RlLmRhdGF9IgogICAgICAgZW5kCiAgICAgZW5kCiAgICB9CgogICAgQHJ1 bm5pbmcgPSB0cnVlCiAgZW5kCgogICMgUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgbWFpbGJveGVz IGluIHRoZSBHTWFpbCBhY2NvdW50CiAgIyB1c2luZyB0aGUgWC1HTS1YTElTVCBJTUFQIGV4dGVu c2lvbi4gVGhpcyBleHRlbnNpb24gCiAgIyBwcm92aWRlcyBhZGRpdGlvbmFsIG1ldGFkYXRhIGFi b3V0IGVhY2ggbWFpbGJveC4KICBkZWYgeGxpc3QKICAgIEBpbWFwLnhsaXN0KCIiLCAiKiIpCiAg ICAjQGltYXAueGxpc3QoIiIsICJCb29rbWFya3MiKQogIGVuZAoKICBkZWYgc3RhcnQKICAgIHhs aXN0LmVhY2ggeyB8bWFpbGJveHwKICAgICAgc3luY19uZXcobWFpbGJveCkKICAgIH0KICBlbmQK CiAgZGVmIHN0b3AKICAgIEBydW5uaW5nID0gZmFsc2UKICBlbmQKCiAgIyBNZXRob2QgdGhhdCBj aGVja3MgYSBtYWlsYm94IGZvciBuZXcgbWVzc2FnZXMgYW5kIAogICMgZmVlZCB0aGVtIHRvIEhl bGlvdHJvcGUuIEFzc3VtZXMgSGVsaW90cm9wZSBzZXJ2aWNlCiAgIyBpcyBydW5uaW5nIGF0IGh0 dHA6Ly9sb2NhbGhvc3Q6ODA0MgogIGRlZiBzeW5jX25ldyhtYWlsYm94KQogICAgICAjIFNraXAg YW55IG1haWxib3ggd2l0aCBhdHRyaWJ1dGVzIGluIGlnbm9yZV9hdHRyCiAgICAgIHJldHVybiBp ZiAhIChtYWlsYm94LmF0dHIgJiBAQGlnbm9yZV9hdHRyKS5lbXB0eT8KICAgICAgcmV0dXJuIGlm ICFAcnVubmluZwoKICAgICAgY2FjaGUgPSBNYWlsYm94LmNyZWF0ZShAaW1hcCwgbWFpbGJveC5u YW1lKQoKICAgICAgcHV0cyAiRXhhbWluaW5nIG1haWxib3ggI3tjYWNoZS5uYW1lfSIKCiAgICAg IHVudGlsIGNhY2hlLmRvbmU/IG9yICEgQHJ1bm5pbmcKCiAgICAgICAgbXNnID0gY2FjaGUubmV4 dF9tZXNzYWdlCgogICAgICAgIG5leHQgaWYgISBtc2cKCgogICAgICAgIGJlZ2luCiAgICAgICAg ICByZXNwb25zZSA9IFJlc3RDbGllbnQucG9zdCAiaHR0cDovL2xvY2FsaG9zdDo4MDQyL21lc3Nh Z2UiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDptZXNzYWdlID0+IG1z Z1s6Ym9keV0sIDpsYWJlbHMgPT4gbXNnWzpsYWJlbHNdLnRvX2pzb24sIDpzdGF0ZSA9PiBtc2db OnN0YXRlXS50b19qc29uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpl eHRyYSA9PiB7IDptYWlsYm94ID0+IGNhY2hlLm5hbWUgfS50b19qc29uCiAgICAgICAgICBwdXRz IHJlc3BvbnNlIAogICAgICAgICAgcmVzcG9uc2UgPSBKU09OLnBhcnNlKHJlc3BvbnNlKQoKICAg ICAgICAgIGlmIHJlc3BvbnNlWyJyZXNwb25zZSJdID09ICJvayIKICAgICAgICAgICAgI3B1dHMg Ik1lc3NhZ2UgI3ttc2dbOnVpZF19IFNUQVRFOiAje21zZ1s6c3RhdGVdLmluc3BlY3R9IExBQkVM UzogI3ttc2dbOmxhYmVsc10uaW5zcGVjdH0gTUFYOiAje2NhY2hlLnVpZG1heH0gTkVYVDogI3tj YWNoZS51aWRuZXh0fSIKICAgICAgICAgIGVuZAogICAgICAgIHJlc2N1ZSBSZXN0Q2xpZW50OjpS ZXNvdXJjZU5vdEZvdW5kID0+IGUKICAgICAgICAgIHB1dHMgIldhcm5pbmc6IHJlc291cmNlIG5v dCBmb3VuZCIKICAgICAgICByZXNjdWUgPT4gZQogICAgICAgICAgcHV0cyAiRmFpbGVkIHRvIGNv bW11bmljYXRlIHdpdGggaGVsaW90cm9wZSA6ICN7ZS5jbGFzc30iCiAgICAgICAgICBwdXRzIGUu YmFja3RyYWNlCiAgICAgICAgZW5kCgogICAgICBlbmQKICBlbmQKCiAgcHJpdmF0ZQoKCmVuZAoK aWYgX19GSUxFX18gPT0gJDAKCiAgaWYgQVJHVi5zaXplIDwgMgogICAgcHV0cyAiVXNhZ2U6ICBn bWFpbC5yYiAgPHVzZXJuYW1lPiA8cGFzc3dvcmQ+IgogICAgZXhpdCAwCiAgZW5kCgogIGdtYWls ID0gR01haWwubmV3KEFSR1ZbMF0sIEFSR1ZbMV0pCgogIHRyYXAoIlNJR0lOVCIpIHsgICBwdXRz ICItLSBTSUdJTlQgU3RvcHBpbmcgLS0iOyAgIGdtYWlsLnN0b3AgIH0KICB0cmFwKCJTSUdURVJN IikgeyAgIHB1dHMgIi0tIFNJR1RFUk0gU3RvcHBpbmcgLS0iOyAgIGdtYWlsLnN0b3AgIH0KICB0 cmFwKCJTSUdQSVBFIikgeyAgIHB1dHMgIi0tIFNJR1BJUEUgU3RvcHBpbmcgLS0iOyAgIGdtYWls LnN0b3AgIH0KICB0cmFwKCJTSUdIVVAiKSB7ICAgcHV0cyAiLS0gU0lHSFVQIFN0b3BwaW5nIC0t IjsgICBnbWFpbC5zdG9wICB9CgogIGdtYWlsLnN0YXJ0CgplbmQKCiMgR01haWwgQVBJIGFsbG93 cyBzZWFyY2ggdmlhIFgtR00tUkFXIGV4dGVuc2lvbgojcHV0cyAiU2VhcmNoIHZpYSBYLUdNLVJB VyBleHRlbnNpb24iCiNpZHMgPSBpbWFwLnNlYXJjaChbIlgtR00tUkFXIiwgInRvOiBoc2Fuc29u Il0pCgojIEV4YW1wbGUgaG93IHRvIGFwcGVuZCBhIG1lc3NhZ2UgdG8gR01haWwKI3B1dHMgIlRl c3QgYXBwZW5kIG1lc3NhZ2UiCiNpbWFwLmFwcGVuZCgiaW5ib3giLCA8PEVPRi5nc3ViKC9cbi8s ICJcclxuIiksIFs6U2Vlbl0sIFRpbWUubm93KQojU3ViamVjdDogaGVsbG8KI0Zyb206IHNodWdv QHJ1YnktbGFuZy5vcmcKI1RvOiBzaHVnb0BydWJ5LWxhbmcub3JnCgojaGVsbG8gd29ybGQKI0VP RgoK --bcaec5489e5be18b2c04a3b6e9e3 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Sup-devel mailing list Sup-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/sup-devel --bcaec5489e5be18b2c04a3b6e9e3--