-
-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rename official_resolver
to schema_official_resolver
#1506
Conversation
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark (macos/llvm)
Benchmark suite | Current: a5b48e4 | Previous: eeee8b4 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.9826296035920166 ns/iter |
1.574202409082606 ns/iter |
1.26 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.0675655022747024 ns/iter |
1.5657428802363467 ns/iter |
1.32 |
Regex_Period_Asterisk |
2.05256331823895 ns/iter |
1.5659842824326367 ns/iter |
1.31 |
Regex_Group_Period_Asterisk_Group |
1.947185369901109 ns/iter |
1.5674228475532592 ns/iter |
1.24 |
Regex_Period_Plus |
2.481017501605519 ns/iter |
1.898787437750302 ns/iter |
1.31 |
Regex_Period |
3.342605236702501 ns/iter |
1.8829918490383135 ns/iter |
1.78 |
Regex_Caret_Period_Plus_Dollar |
2.631870131523974 ns/iter |
1.882915898498629 ns/iter |
1.40 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.51772683813808 ns/iter |
1.905824796771796 ns/iter |
1.32 |
Regex_Caret_Period_Asterisk_Dollar |
2.150864689590471 ns/iter |
1.59475142672225 ns/iter |
1.35 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.084413489168092 ns/iter |
1.5868629255267144 ns/iter |
1.31 |
Regex_Caret_X_Hyphen |
8.158384080080852 ns/iter |
6.5817484066807594 ns/iter |
1.24 |
Regex_Period_Md_Dollar |
89.52703520682165 ns/iter |
67.85782382468453 ns/iter |
1.32 |
Regex_Caret_Slash_Period_Asterisk |
6.899029871567418 ns/iter |
5.014689280780032 ns/iter |
1.38 |
Regex_Caret_Period_Range_Dollar |
3.067835109681681 ns/iter |
2.199914738072529 ns/iter |
1.39 |
Regex_Nested_Backtrack |
926.2523040996671 ns/iter |
729.2853780854929 ns/iter |
1.27 |
JSON_Array_Of_Objects_Unique |
445.561466317105 ns/iter |
326.9754026152866 ns/iter |
1.36 |
JSON_Parse_1 |
31438.7158732981 ns/iter |
21126.853058872028 ns/iter |
1.49 |
JSON_Fast_Hash_Helm_Chart_Lock |
66.68156422399572 ns/iter |
47.58255428294501 ns/iter |
1.40 |
JSON_Equality_Helm_Chart_Lock |
165.64727597747117 ns/iter |
118.57622544285837 ns/iter |
1.40 |
JSON_String_Equal/10 |
11.024432431064975 ns/iter |
7.678094502144012 ns/iter |
1.44 |
JSON_String_Equal/100 |
8.04350950515419 ns/iter |
6.1281257834745055 ns/iter |
1.31 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.4044264602465247 ns/iter |
0.31338319838212725 ns/iter |
1.29 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.907613483199853 ns/iter |
2.93901215535019 ns/iter |
1.33 |
JSON_String_Fast_Hash/10 |
1.8493630772230016 ns/iter |
1.5763973810940526 ns/iter |
1.17 |
JSON_String_Fast_Hash/100 |
2.1373760859760926 ns/iter |
1.8795224827166008 ns/iter |
1.14 |
JSON_String_Key_Hash/10 |
1.5255605465952398 ns/iter |
1.2574323264793936 ns/iter |
1.21 |
JSON_String_Key_Hash/100 |
1.3791157320407623 ns/iter |
1.2519948337264935 ns/iter |
1.10 |
JSON_Object_Defines_Miss_Same_Length |
2.428976434465756 ns/iter |
2.1913480483975265 ns/iter |
1.11 |
JSON_Object_Defines_Miss_Too_Small |
2.555999454715354 ns/iter |
2.193168216985182 ns/iter |
1.17 |
JSON_Object_Defines_Miss_Too_Large |
2.9594969022446076 ns/iter |
2.1933265007941087 ns/iter |
1.35 |
Pointer_Object_Traverse |
21.48856900054515 ns/iter |
17.05045251971464 ns/iter |
1.26 |
Pointer_Object_Try_Traverse |
28.085087265052675 ns/iter |
21.914687888085858 ns/iter |
1.28 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
208.07953695309357 ns/iter |
170.1382242346276 ns/iter |
1.22 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark (linux/llvm)
Benchmark suite | Current: a5b48e4 | Previous: eeee8b4 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.1966147040278976 ns/iter |
2.2108609081051327 ns/iter |
0.99 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.1890236165971206 ns/iter |
2.2391461119359164 ns/iter |
0.98 |
Regex_Period_Asterisk |
2.202507940456767 ns/iter |
2.217377433681511 ns/iter |
0.99 |
Regex_Group_Period_Asterisk_Group |
2.2034268762293143 ns/iter |
2.1967525432352 ns/iter |
1.00 |
Regex_Period_Plus |
2.798894295789099 ns/iter |
2.7997467245200753 ns/iter |
1.00 |
Regex_Period |
2.828520180613776 ns/iter |
2.7979387257615738 ns/iter |
1.01 |
Regex_Caret_Period_Plus_Dollar |
2.8012032081203917 ns/iter |
2.7972639864760698 ns/iter |
1.00 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.7972934345271527 ns/iter |
2.7977596602194037 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
3.4205497939945744 ns/iter |
3.4173203704813244 ns/iter |
1.00 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.417489596881461 ns/iter |
3.4185838072179626 ns/iter |
1.00 |
Regex_Caret_X_Hyphen |
13.0608575240843 ns/iter |
13.076664256032164 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
81.47446555888459 ns/iter |
81.91786274558321 ns/iter |
0.99 |
Regex_Caret_Slash_Period_Asterisk |
5.592789619258998 ns/iter |
6.836560091173742 ns/iter |
0.82 |
Regex_Caret_Period_Range_Dollar |
3.106954566046398 ns/iter |
4.045269326306317 ns/iter |
0.77 |
Regex_Nested_Backtrack |
499.36579305821306 ns/iter |
505.55881620691866 ns/iter |
0.99 |
JSON_Array_Of_Objects_Unique |
404.50867570773465 ns/iter |
402.5793725894212 ns/iter |
1.00 |
JSON_Parse_1 |
30403.21065459663 ns/iter |
30629.35695457375 ns/iter |
0.99 |
JSON_Fast_Hash_Helm_Chart_Lock |
59.40938142013007 ns/iter |
59.16715966175035 ns/iter |
1.00 |
JSON_Equality_Helm_Chart_Lock |
164.4918322217302 ns/iter |
163.80073124345293 ns/iter |
1.00 |
JSON_String_Equal/10 |
7.167304871293637 ns/iter |
6.596144406313535 ns/iter |
1.09 |
JSON_String_Equal/100 |
6.854773745882104 ns/iter |
6.53600380896747 ns/iter |
1.05 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9341276961469817 ns/iter |
0.9346347063756293 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
10.257387908404892 ns/iter |
10.255262549088286 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
2.4870484661731234 ns/iter |
2.4869836319494545 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
2.4893312918110455 ns/iter |
2.488012849998057 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
2.1775782650054802 ns/iter |
2.179015289769519 ns/iter |
1.00 |
JSON_String_Key_Hash/100 |
1.8657741321645025 ns/iter |
1.868400614682435 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.733962650531103 ns/iter |
3.73761693357406 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.735759559135268 ns/iter |
3.734014650846587 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.7361337111105413 ns/iter |
3.735140688225413 ns/iter |
1.00 |
Pointer_Object_Traverse |
44.32056178325763 ns/iter |
44.328882511155875 ns/iter |
1.00 |
Pointer_Object_Try_Traverse |
53.267689043758025 ns/iter |
52.36549571406911 ns/iter |
1.02 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
308.8652276763098 ns/iter |
295.62387604684784 ns/iter |
1.04 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark (linux/gcc)
Benchmark suite | Current: a5b48e4 | Previous: eeee8b4 | Ratio |
---|---|---|---|
Pointer_Object_Traverse |
45.89749365582923 ns/iter |
47.42922090772828 ns/iter |
0.97 |
Pointer_Object_Try_Traverse |
26.142238552848994 ns/iter |
26.140447423766194 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
144.88489490922018 ns/iter |
145.09313957607228 ns/iter |
1.00 |
JSON_Array_Of_Objects_Unique |
411.90200841699897 ns/iter |
412.278373934213 ns/iter |
1.00 |
JSON_Parse_1 |
33070.085511699624 ns/iter |
33514.63315451741 ns/iter |
0.99 |
JSON_Fast_Hash_Helm_Chart_Lock |
67.89503509432443 ns/iter |
62.604196760388994 ns/iter |
1.08 |
JSON_Equality_Helm_Chart_Lock |
150.3629435304975 ns/iter |
155.41379053811733 ns/iter |
0.97 |
JSON_String_Equal/10 |
6.3356933226122045 ns/iter |
6.345650765284901 ns/iter |
1.00 |
JSON_String_Equal/100 |
6.656102570993758 ns/iter |
6.959308775192976 ns/iter |
0.96 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9340380728336983 ns/iter |
0.9354138145919799 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.293494399654307 ns/iter |
14.301061794932604 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
0.9323564269172049 ns/iter |
0.934107881897671 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
0.9322836347255143 ns/iter |
0.9331749462058775 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.6738079339324192 ns/iter |
1.6823855385306303 ns/iter |
0.99 |
JSON_String_Key_Hash/100 |
1.9843210394178314 ns/iter |
1.982661164724045 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
2.4898877552342977 ns/iter |
2.4861200932604657 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
2.4890016761268194 ns/iter |
2.493268337228044 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.110617258232351 ns/iter |
3.1077040305454076 ns/iter |
1.00 |
Regex_Lower_S_Or_Upper_S_Asterisk |
3.43040415852681 ns/iter |
3.4239330505716 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
3.4208769208523426 ns/iter |
3.4237884840221047 ns/iter |
1.00 |
Regex_Period_Asterisk |
3.4399143343258505 ns/iter |
3.4254418758036063 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
3.420415898850195 ns/iter |
3.4187849066785683 ns/iter |
1.00 |
Regex_Period_Plus |
3.729973717385138 ns/iter |
3.7361456486782294 ns/iter |
1.00 |
Regex_Period |
3.734665148693812 ns/iter |
3.4332139012992164 ns/iter |
1.09 |
Regex_Caret_Period_Plus_Dollar |
3.734251451890133 ns/iter |
3.4236967898583783 ns/iter |
1.09 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
3.6601296574224027 ns/iter |
3.435638237607592 ns/iter |
1.07 |
Regex_Caret_Period_Asterisk_Dollar |
3.7335550402297244 ns/iter |
3.7366243792150575 ns/iter |
1.00 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.7396397545287856 ns/iter |
3.731207123182937 ns/iter |
1.00 |
Regex_Caret_X_Hyphen |
13.113924481122107 ns/iter |
13.118059189297366 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
96.2978971753914 ns/iter |
89.18252972071971 ns/iter |
1.08 |
Regex_Caret_Slash_Period_Asterisk |
8.10573855681442 ns/iter |
8.087251057690779 ns/iter |
1.00 |
Regex_Caret_Period_Range_Dollar |
4.674640519715004 ns/iter |
3.7485553856067773 ns/iter |
1.25 |
Regex_Nested_Backtrack |
827.4067231775724 ns/iter |
833.9326712895022 ns/iter |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark (windows/msvc)
Benchmark suite | Current: a5b48e4 | Previous: eeee8b4 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
6.865217633928365 ns/iter |
6.848189285713196 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
7.135362723215926 ns/iter |
6.937060267855344 ns/iter |
1.03 |
Regex_Period_Asterisk |
7.186082589285548 ns/iter |
7.117039062501464 ns/iter |
1.01 |
Regex_Group_Period_Asterisk_Group |
6.916282366071463 ns/iter |
6.829004464286977 ns/iter |
1.01 |
Regex_Period_Plus |
7.341952199368255 ns/iter |
7.406154017855573 ns/iter |
0.99 |
Regex_Period |
7.234445056987809 ns/iter |
7.33842184223911 ns/iter |
0.99 |
Regex_Caret_Period_Plus_Dollar |
7.339623883930406 ns/iter |
7.155025669641293 ns/iter |
1.03 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
7.271840401783843 ns/iter |
7.271935267856934 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
6.866818080357717 ns/iter |
6.917888392857309 ns/iter |
0.99 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
7.222189732143392 ns/iter |
6.965229464285016 ns/iter |
1.04 |
Regex_Caret_X_Hyphen |
14.265387659527725 ns/iter |
11.778487500002655 ns/iter |
1.21 |
Regex_Period_Md_Dollar |
150.3710714285741 ns/iter |
150.4613839285542 ns/iter |
1.00 |
Regex_Caret_Slash_Period_Asterisk |
10.375521428573263 ns/iter |
10.442978124999058 ns/iter |
0.99 |
Regex_Caret_Period_Range_Dollar |
7.591610491071471 ns/iter |
7.493752198689184 ns/iter |
1.01 |
Regex_Nested_Backtrack |
622.1738392856732 ns/iter |
605.7165178570959 ns/iter |
1.03 |
JSON_Array_Of_Objects_Unique |
516.34080000008 ns/iter |
521.1084000000028 ns/iter |
0.99 |
JSON_Parse_1 |
81820.82589284687 ns/iter |
81933.06919643817 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
68.1723035714299 ns/iter |
71.06539285712999 ns/iter |
0.96 |
JSON_Equality_Helm_Chart_Lock |
189.16733186390223 ns/iter |
190.73224917256536 ns/iter |
0.99 |
JSON_String_Equal/10 |
9.008645049069141 ns/iter |
8.988910674154537 ns/iter |
1.00 |
JSON_String_Equal/100 |
9.926195044971902 ns/iter |
9.921728125000584 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.166853749999831 ns/iter |
2.1711937500001 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.814727678569284 ns/iter |
14.595638392858998 ns/iter |
1.02 |
JSON_String_Fast_Hash/10 |
4.035826450893763 ns/iter |
4.047149560798574 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
4.029162388391937 ns/iter |
4.024541167900606 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
8.115602642340647 ns/iter |
8.000974517852038 ns/iter |
1.01 |
JSON_String_Key_Hash/100 |
4.025892239331873 ns/iter |
4.0376630429245575 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.7175003505038102 ns/iter |
3.7240071362072236 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
4.958364999999958 ns/iter |
4.9718719999987115 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.4180049492531515 ns/iter |
3.440082538499864 ns/iter |
0.99 |
Pointer_Object_Traverse |
48.90101886896511 ns/iter |
50.60863999999583 ns/iter |
0.97 |
Pointer_Object_Try_Traverse |
68.20721428571882 ns/iter |
67.66316964284361 ns/iter |
1.01 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
162.0653794642887 ns/iter |
182.50236450912308 ns/iter |
0.89 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmark (macos/gcc)
Benchmark suite | Current: a5b48e4 | Previous: eeee8b4 | Ratio |
---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.9616223473219832 ns/iter |
1.9775467675749383 ns/iter |
0.99 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.051837130447305 ns/iter |
1.9815095212805114 ns/iter |
1.04 |
Regex_Period_Asterisk |
2.012164933362114 ns/iter |
1.9007176336790017 ns/iter |
1.06 |
Regex_Group_Period_Asterisk_Group |
1.9995314976494536 ns/iter |
2.0863586954698823 ns/iter |
0.96 |
Regex_Period_Plus |
1.985000698263984 ns/iter |
2.741259582632124 ns/iter |
0.72 |
Regex_Period |
1.9851631124966371 ns/iter |
2.1043798957412183 ns/iter |
0.94 |
Regex_Caret_Period_Plus_Dollar |
1.9126254288821891 ns/iter |
2.091920562348601 ns/iter |
0.91 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.9415540687641377 ns/iter |
1.9713966899053583 ns/iter |
0.98 |
Regex_Caret_Period_Asterisk_Dollar |
1.9934139583629729 ns/iter |
2.160401478303646 ns/iter |
0.92 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.3576689846512253 ns/iter |
2.416267927768212 ns/iter |
0.98 |
Regex_Caret_X_Hyphen |
6.200785155790758 ns/iter |
6.627031176475574 ns/iter |
0.94 |
Regex_Period_Md_Dollar |
74.05454518462885 ns/iter |
76.62784787795925 ns/iter |
0.97 |
Regex_Caret_Slash_Period_Asterisk |
4.488567675373845 ns/iter |
4.6852978945564585 ns/iter |
0.96 |
Regex_Caret_Period_Range_Dollar |
1.9569617270051056 ns/iter |
1.9607279775558117 ns/iter |
1.00 |
Regex_Nested_Backtrack |
885.3063507293517 ns/iter |
843.3256077166175 ns/iter |
1.05 |
JSON_Array_Of_Objects_Unique |
211.61657613194126 ns/iter |
218.6498051968864 ns/iter |
0.97 |
JSON_Parse_1 |
23605.100925775605 ns/iter |
23838.17808574992 ns/iter |
0.99 |
JSON_Fast_Hash_Helm_Chart_Lock |
24.117077683471944 ns/iter |
24.394426363415388 ns/iter |
0.99 |
JSON_Equality_Helm_Chart_Lock |
115.60349908124117 ns/iter |
118.91069340343599 ns/iter |
0.97 |
JSON_String_Equal/10 |
5.478030376644607 ns/iter |
5.722924343804009 ns/iter |
0.96 |
JSON_String_Equal/100 |
5.265712227312757 ns/iter |
5.354344762190323 ns/iter |
0.98 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.7851619199638923 ns/iter |
0.8141188089566251 ns/iter |
0.96 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.5187271386170647 ns/iter |
3.6705832530238665 ns/iter |
0.96 |
JSON_String_Fast_Hash/10 |
1.9401644686554282 ns/iter |
2.007866434191008 ns/iter |
0.97 |
JSON_String_Fast_Hash/100 |
1.9648480209937265 ns/iter |
1.9580395168619087 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.4571783619699137 ns/iter |
1.4362981128128565 ns/iter |
1.01 |
JSON_String_Key_Hash/100 |
2.2029098125727513 ns/iter |
1.9252299082431414 ns/iter |
1.14 |
JSON_Object_Defines_Miss_Same_Length |
1.8157667895402654 ns/iter |
1.7241320811771217 ns/iter |
1.05 |
JSON_Object_Defines_Miss_Too_Small |
2.0074562517369863 ns/iter |
1.8814336928115438 ns/iter |
1.07 |
JSON_Object_Defines_Miss_Too_Large |
1.8908531283964036 ns/iter |
1.7236810369418731 ns/iter |
1.10 |
Pointer_Object_Traverse |
63.43258675959198 ns/iter |
54.08054521630487 ns/iter |
1.17 |
Pointer_Object_Try_Traverse |
36.645042494073614 ns/iter |
36.46296678134313 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
160.844798094462 ns/iter |
165.14505028220867 ns/iter |
0.97 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com