lightningcss/
compat.rs

1// This file is autogenerated by build-prefixes.js. DO NOT EDIT!
2
3use crate::targets::Browsers;
4
5#[allow(dead_code)]
6#[derive(Clone, Copy, PartialEq)]
7pub enum Feature {
8  AbsFunction,
9  AccentSystemColor,
10  AfarListStyleType,
11  AmharicAbegedeListStyleType,
12  AmharicListStyleType,
13  AnchorSizeSize,
14  AnimationTimelineShorthand,
15  AnyLink,
16  AnyPseudo,
17  ArabicIndicListStyleType,
18  ArmenianListStyleType,
19  AsterisksListStyleType,
20  AutoSize,
21  Autofill,
22  BengaliListStyleType,
23  BinaryListStyleType,
24  BorderImageRepeatRound,
25  BorderImageRepeatSpace,
26  CalcFunction,
27  CambodianListStyleType,
28  CapUnit,
29  CaseInsensitive,
30  ChUnit,
31  Checkmark,
32  CircleListStyleType,
33  CjkDecimalListStyleType,
34  CjkEarthlyBranchListStyleType,
35  CjkHeavenlyStemListStyleType,
36  ClampFunction,
37  ColorFunction,
38  ConicGradient,
39  ContainerQueryLengthUnits,
40  Cue,
41  CueFunction,
42  CustomMediaQueries,
43  DecimalLeadingZeroListStyleType,
44  DecimalListStyleType,
45  DefaultPseudo,
46  DetailsContent,
47  DevanagariListStyleType,
48  Dialog,
49  DirSelector,
50  DiscListStyleType,
51  DisclosureClosedListStyleType,
52  DisclosureOpenListStyleType,
53  DoublePositionGradients,
54  EmUnit,
55  EthiopicAbegedeAmEtListStyleType,
56  EthiopicAbegedeGezListStyleType,
57  EthiopicAbegedeListStyleType,
58  EthiopicAbegedeTiErListStyleType,
59  EthiopicAbegedeTiEtListStyleType,
60  EthiopicHalehameAaErListStyleType,
61  EthiopicHalehameAaEtListStyleType,
62  EthiopicHalehameAmEtListStyleType,
63  EthiopicHalehameGezListStyleType,
64  EthiopicHalehameOmEtListStyleType,
65  EthiopicHalehameSidEtListStyleType,
66  EthiopicHalehameSoEtListStyleType,
67  EthiopicHalehameTigListStyleType,
68  EthiopicListStyleType,
69  EthiopicNumericListStyleType,
70  ExUnit,
71  ExtendedSystemFonts,
72  FirstLetter,
73  FirstLine,
74  FitContentFunctionSize,
75  FitContentSize,
76  FocusVisible,
77  FocusWithin,
78  FontFamilySystemUi,
79  FontSizeRem,
80  FontSizeXXXLarge,
81  FontStretchPercentage,
82  FontStyleObliqueAngle,
83  FontWeightNumber,
84  FootnotesListStyleType,
85  FormValidation,
86  Fullscreen,
87  Gencontent,
88  GeorgianListStyleType,
89  GradientInterpolationHints,
90  GrammarError,
91  GujaratiListStyleType,
92  GurmukhiListStyleType,
93  HasSelector,
94  HebrewListStyleType,
95  HexAlphaColors,
96  HiraganaIrohaListStyleType,
97  HiraganaListStyleType,
98  HypotFunction,
99  IcUnit,
100  ImageSet,
101  InOutOfRange,
102  IndeterminatePseudo,
103  IsAnimatableSize,
104  IsSelector,
105  JapaneseFormalListStyleType,
106  JapaneseInformalListStyleType,
107  KannadaListStyleType,
108  KatakanaIrohaListStyleType,
109  KatakanaListStyleType,
110  KhmerListStyleType,
111  KoreanHangulFormalListStyleType,
112  KoreanHanjaFormalListStyleType,
113  KoreanHanjaInformalListStyleType,
114  LabColors,
115  LangSelectorList,
116  LaoListStyleType,
117  LhUnit,
118  LightDark,
119  LinearGradient,
120  LogicalBorderRadius,
121  LogicalBorderShorthand,
122  LogicalBorders,
123  LogicalInset,
124  LogicalMargin,
125  LogicalMarginShorthand,
126  LogicalPadding,
127  LogicalPaddingShorthand,
128  LogicalSize,
129  LogicalTextAlign,
130  LowerAlphaListStyleType,
131  LowerArmenianListStyleType,
132  LowerGreekListStyleType,
133  LowerHexadecimalListStyleType,
134  LowerLatinListStyleType,
135  LowerNorwegianListStyleType,
136  LowerRomanListStyleType,
137  MalayalamListStyleType,
138  MarkerPseudo,
139  MaxContentSize,
140  MaxFunction,
141  MediaIntervalSyntax,
142  MediaRangeSyntax,
143  MinContentSize,
144  MinFunction,
145  ModFunction,
146  MongolianListStyleType,
147  MozAvailableSize,
148  MyanmarListStyleType,
149  Namespaces,
150  Nesting,
151  NoneListStyleType,
152  NotSelectorList,
153  NthChildOf,
154  OctalListStyleType,
155  OklabColors,
156  OptionalPseudo,
157  OriyaListStyleType,
158  OromoListStyleType,
159  OverflowShorthand,
160  P3Colors,
161  PartPseudo,
162  PersianListStyleType,
163  Picker,
164  PickerIcon,
165  PlaceContent,
166  PlaceItems,
167  PlaceSelf,
168  Placeholder,
169  PlaceholderShown,
170  QUnit,
171  RadialGradient,
172  RcapUnit,
173  RchUnit,
174  ReadOnlyWrite,
175  RemFunction,
176  RemUnit,
177  RepeatingConicGradient,
178  RepeatingLinearGradient,
179  RepeatingRadialGradient,
180  RexUnit,
181  RicUnit,
182  RlhUnit,
183  RoundFunction,
184  Selection,
185  Selectors2,
186  Selectors3,
187  Shadowdomv1,
188  SidamaListStyleType,
189  SignFunction,
190  SimpChineseFormalListStyleType,
191  SimpChineseInformalListStyleType,
192  SomaliListStyleType,
193  SpaceSeparatedColorNotation,
194  SpellingError,
195  SquareListStyleType,
196  StretchSize,
197  StringListStyleType,
198  SymbolsListStyleType,
199  TamilListStyleType,
200  TargetText,
201  TeluguListStyleType,
202  TextDecorationThicknessPercent,
203  TextDecorationThicknessShorthand,
204  ThaiListStyleType,
205  TibetanListStyleType,
206  TigreListStyleType,
207  TigrinyaErAbegedeListStyleType,
208  TigrinyaErListStyleType,
209  TigrinyaEtAbegedeListStyleType,
210  TigrinyaEtListStyleType,
211  TradChineseFormalListStyleType,
212  TradChineseInformalListStyleType,
213  UpperAlphaListStyleType,
214  UpperArmenianListStyleType,
215  UpperHexadecimalListStyleType,
216  UpperLatinListStyleType,
217  UpperNorwegianListStyleType,
218  UpperRomanListStyleType,
219  VbUnit,
220  VhUnit,
221  ViUnit,
222  ViewTransition,
223  ViewportPercentageUnitsDynamic,
224  ViewportPercentageUnitsLarge,
225  ViewportPercentageUnitsSmall,
226  VmaxUnit,
227  VminUnit,
228  VwUnit,
229  WebkitFillAvailableSize,
230  XResolutionUnit,
231}
232
233impl Feature {
234  pub fn is_compatible(&self, browsers: Browsers) -> bool {
235    match self {
236      Feature::Selectors2 => {
237        if let Some(version) = browsers.ie {
238          if version < 458752 {
239            return false;
240          }
241        }
242        if let Some(version) = browsers.edge {
243          if version < 786432 {
244            return false;
245          }
246        }
247        if let Some(version) = browsers.firefox {
248          if version < 131072 {
249            return false;
250          }
251        }
252        if let Some(version) = browsers.chrome {
253          if version < 262144 {
254            return false;
255          }
256        }
257        if let Some(version) = browsers.safari {
258          if version < 196864 {
259            return false;
260          }
261        }
262        if let Some(version) = browsers.opera {
263          if version < 589824 {
264            return false;
265          }
266        }
267        if let Some(version) = browsers.ios_saf {
268          if version < 197120 {
269            return false;
270          }
271        }
272        if let Some(version) = browsers.android {
273          if version < 131328 {
274            return false;
275          }
276        }
277        if let Some(version) = browsers.samsung {
278          if version < 262144 {
279            return false;
280          }
281        }
282      }
283      Feature::Selectors3 => {
284        if let Some(version) = browsers.ie {
285          if version < 589824 {
286            return false;
287          }
288        }
289        if let Some(version) = browsers.edge {
290          if version < 786432 {
291            return false;
292          }
293        }
294        if let Some(version) = browsers.firefox {
295          if version < 197888 {
296            return false;
297          }
298        }
299        if let Some(version) = browsers.chrome {
300          if version < 262144 {
301            return false;
302          }
303        }
304        if let Some(version) = browsers.safari {
305          if version < 197120 {
306            return false;
307          }
308        }
309        if let Some(version) = browsers.opera {
310          if version < 591104 {
311            return false;
312          }
313        }
314        if let Some(version) = browsers.ios_saf {
315          if version < 197120 {
316            return false;
317          }
318        }
319        if let Some(version) = browsers.android {
320          if version < 131328 {
321            return false;
322          }
323        }
324        if let Some(version) = browsers.samsung {
325          if version < 262144 {
326            return false;
327          }
328        }
329      }
330      Feature::Gencontent | Feature::FirstLine => {
331        if let Some(version) = browsers.ie {
332          if version < 589824 {
333            return false;
334          }
335        }
336        if let Some(version) = browsers.edge {
337          if version < 786432 {
338            return false;
339          }
340        }
341        if let Some(version) = browsers.firefox {
342          if version < 131072 {
343            return false;
344          }
345        }
346        if let Some(version) = browsers.chrome {
347          if version < 262144 {
348            return false;
349          }
350        }
351        if let Some(version) = browsers.safari {
352          if version < 196864 {
353            return false;
354          }
355        }
356        if let Some(version) = browsers.opera {
357          if version < 589824 {
358            return false;
359          }
360        }
361        if let Some(version) = browsers.ios_saf {
362          if version < 197120 {
363            return false;
364          }
365        }
366        if let Some(version) = browsers.android {
367          if version < 131328 {
368            return false;
369          }
370        }
371        if let Some(version) = browsers.samsung {
372          if version < 262144 {
373            return false;
374          }
375        }
376      }
377      Feature::FirstLetter => {
378        if let Some(version) = browsers.ie {
379          if version < 589824 {
380            return false;
381          }
382        }
383        if let Some(version) = browsers.edge {
384          if version < 786432 {
385            return false;
386          }
387        }
388        if let Some(version) = browsers.firefox {
389          if version < 197888 {
390            return false;
391          }
392        }
393        if let Some(version) = browsers.chrome {
394          if version < 589824 {
395            return false;
396          }
397        }
398        if let Some(version) = browsers.safari {
399          if version < 327936 {
400            return false;
401          }
402        }
403        if let Some(version) = browsers.opera {
404          if version < 722432 {
405            return false;
406          }
407        }
408        if let Some(version) = browsers.ios_saf {
409          if version < 327680 {
410            return false;
411          }
412        }
413        if let Some(version) = browsers.android {
414          if version < 196608 {
415            return false;
416          }
417        }
418        if let Some(version) = browsers.samsung {
419          if version < 262144 {
420            return false;
421          }
422        }
423      }
424      Feature::InOutOfRange => {
425        if let Some(version) = browsers.edge {
426          if version < 5177344 {
427            return false;
428          }
429        }
430        if let Some(version) = browsers.firefox {
431          if version < 3276800 {
432            return false;
433          }
434        }
435        if let Some(version) = browsers.chrome {
436          if version < 3473408 {
437            return false;
438          }
439        }
440        if let Some(version) = browsers.safari {
441          if version < 655616 {
442            return false;
443          }
444        }
445        if let Some(version) = browsers.opera {
446          if version < 2621440 {
447            return false;
448          }
449        }
450        if let Some(version) = browsers.ios_saf {
451          if version < 656128 {
452            return false;
453          }
454        }
455        if let Some(version) = browsers.android {
456          if version < 9175040 {
457            return false;
458          }
459        }
460        if let Some(version) = browsers.samsung {
461          if version < 327680 {
462            return false;
463          }
464        }
465        if browsers.ie.is_some() {
466          return false;
467        }
468      }
469      Feature::FormValidation => {
470        if let Some(version) = browsers.ie {
471          if version < 655360 {
472            return false;
473          }
474        }
475        if let Some(version) = browsers.edge {
476          if version < 786432 {
477            return false;
478          }
479        }
480        if let Some(version) = browsers.firefox {
481          if version < 262144 {
482            return false;
483          }
484        }
485        if let Some(version) = browsers.chrome {
486          if version < 655360 {
487            return false;
488          }
489        }
490        if let Some(version) = browsers.safari {
491          if version < 655616 {
492            return false;
493          }
494        }
495        if let Some(version) = browsers.opera {
496          if version < 655360 {
497            return false;
498          }
499        }
500        if let Some(version) = browsers.ios_saf {
501          if version < 656128 {
502            return false;
503          }
504        }
505        if let Some(version) = browsers.android {
506          if version < 263171 {
507            return false;
508          }
509        }
510        if let Some(version) = browsers.samsung {
511          if version < 262144 {
512            return false;
513          }
514        }
515      }
516      Feature::AnyLink => {
517        if let Some(version) = browsers.edge {
518          if version < 5177344 {
519            return false;
520          }
521        }
522        if let Some(version) = browsers.firefox {
523          if version < 3276800 {
524            return false;
525          }
526        }
527        if let Some(version) = browsers.chrome {
528          if version < 4259840 {
529            return false;
530          }
531        }
532        if let Some(version) = browsers.safari {
533          if version < 589824 {
534            return false;
535          }
536        }
537        if let Some(version) = browsers.opera {
538          if version < 3407872 {
539            return false;
540          }
541        }
542        if let Some(version) = browsers.ios_saf {
543          if version < 589824 {
544            return false;
545          }
546        }
547        if let Some(version) = browsers.android {
548          if version < 9175040 {
549            return false;
550          }
551        }
552        if let Some(version) = browsers.samsung {
553          if version < 590336 {
554            return false;
555          }
556        }
557        if browsers.ie.is_some() {
558          return false;
559        }
560      }
561      Feature::DefaultPseudo => {
562        if let Some(version) = browsers.edge {
563          if version < 5177344 {
564            return false;
565          }
566        }
567        if let Some(version) = browsers.firefox {
568          if version < 262144 {
569            return false;
570          }
571        }
572        if let Some(version) = browsers.chrome {
573          if version < 3342336 {
574            return false;
575          }
576        }
577        if let Some(version) = browsers.safari {
578          if version < 655616 {
579            return false;
580          }
581        }
582        if let Some(version) = browsers.opera {
583          if version < 2490368 {
584            return false;
585          }
586        }
587        if let Some(version) = browsers.ios_saf {
588          if version < 656128 {
589            return false;
590          }
591        }
592        if let Some(version) = browsers.android {
593          if version < 9175040 {
594            return false;
595          }
596        }
597        if let Some(version) = browsers.samsung {
598          if version < 327680 {
599            return false;
600          }
601        }
602        if browsers.ie.is_some() {
603          return false;
604        }
605      }
606      Feature::DirSelector => {
607        if let Some(version) = browsers.edge {
608          if version < 7864320 {
609            return false;
610          }
611        }
612        if let Some(version) = browsers.firefox {
613          if version < 3211264 {
614            return false;
615          }
616        }
617        if let Some(version) = browsers.chrome {
618          if version < 7864320 {
619            return false;
620          }
621        }
622        if let Some(version) = browsers.safari {
623          if version < 1049600 {
624            return false;
625          }
626        }
627        if let Some(version) = browsers.opera {
628          if version < 6946816 {
629            return false;
630          }
631        }
632        if let Some(version) = browsers.ios_saf {
633          if version < 1049600 {
634            return false;
635          }
636        }
637        if let Some(version) = browsers.android {
638          if version < 9175040 {
639            return false;
640          }
641        }
642        if let Some(version) = browsers.samsung {
643          if version < 1638400 {
644            return false;
645          }
646        }
647        if browsers.ie.is_some() {
648          return false;
649        }
650      }
651      Feature::FocusWithin => {
652        if let Some(version) = browsers.edge {
653          if version < 5177344 {
654            return false;
655          }
656        }
657        if let Some(version) = browsers.firefox {
658          if version < 3407872 {
659            return false;
660          }
661        }
662        if let Some(version) = browsers.chrome {
663          if version < 3932160 {
664            return false;
665          }
666        }
667        if let Some(version) = browsers.safari {
668          if version < 655616 {
669            return false;
670          }
671        }
672        if let Some(version) = browsers.opera {
673          if version < 3080192 {
674            return false;
675          }
676        }
677        if let Some(version) = browsers.ios_saf {
678          if version < 656128 {
679            return false;
680          }
681        }
682        if let Some(version) = browsers.android {
683          if version < 9175040 {
684            return false;
685          }
686        }
687        if let Some(version) = browsers.samsung {
688          if version < 524800 {
689            return false;
690          }
691        }
692        if browsers.ie.is_some() {
693          return false;
694        }
695      }
696      Feature::FocusVisible => {
697        if let Some(version) = browsers.edge {
698          if version < 5636096 {
699            return false;
700          }
701        }
702        if let Some(version) = browsers.firefox {
703          if version < 5570560 {
704            return false;
705          }
706        }
707        if let Some(version) = browsers.chrome {
708          if version < 5636096 {
709            return false;
710          }
711        }
712        if let Some(version) = browsers.safari {
713          if version < 984064 {
714            return false;
715          }
716        }
717        if let Some(version) = browsers.opera {
718          if version < 4718592 {
719            return false;
720          }
721        }
722        if let Some(version) = browsers.ios_saf {
723          if version < 984064 {
724            return false;
725          }
726        }
727        if let Some(version) = browsers.android {
728          if version < 9175040 {
729            return false;
730          }
731        }
732        if let Some(version) = browsers.samsung {
733          if version < 917504 {
734            return false;
735          }
736        }
737        if browsers.ie.is_some() {
738          return false;
739        }
740      }
741      Feature::IndeterminatePseudo => {
742        if let Some(version) = browsers.edge {
743          if version < 5177344 {
744            return false;
745          }
746        }
747        if let Some(version) = browsers.firefox {
748          if version < 3342336 {
749            return false;
750          }
751        }
752        if let Some(version) = browsers.chrome {
753          if version < 2555904 {
754            return false;
755          }
756        }
757        if let Some(version) = browsers.safari {
758          if version < 655616 {
759            return false;
760          }
761        }
762        if let Some(version) = browsers.opera {
763          if version < 1703936 {
764            return false;
765          }
766        }
767        if let Some(version) = browsers.ios_saf {
768          if version < 656128 {
769            return false;
770          }
771        }
772        if let Some(version) = browsers.android {
773          if version < 9175040 {
774            return false;
775          }
776        }
777        if let Some(version) = browsers.samsung {
778          if version < 262144 {
779            return false;
780          }
781        }
782        if browsers.ie.is_some() {
783          return false;
784        }
785      }
786      Feature::IsSelector => {
787        if let Some(version) = browsers.edge {
788          if version < 5767168 {
789            return false;
790          }
791        }
792        if let Some(version) = browsers.firefox {
793          if version < 5111808 {
794            return false;
795          }
796        }
797        if let Some(version) = browsers.chrome {
798          if version < 5767168 {
799            return false;
800          }
801        }
802        if let Some(version) = browsers.safari {
803          if version < 917504 {
804            return false;
805          }
806        }
807        if let Some(version) = browsers.opera {
808          if version < 4915200 {
809            return false;
810          }
811        }
812        if let Some(version) = browsers.ios_saf {
813          if version < 917504 {
814            return false;
815          }
816        }
817        if let Some(version) = browsers.android {
818          if version < 9175040 {
819            return false;
820          }
821        }
822        if let Some(version) = browsers.samsung {
823          if version < 983040 {
824            return false;
825          }
826        }
827        if browsers.ie.is_some() {
828          return false;
829        }
830      }
831      Feature::OptionalPseudo => {
832        if let Some(version) = browsers.ie {
833          if version < 655360 {
834            return false;
835          }
836        }
837        if let Some(version) = browsers.edge {
838          if version < 786432 {
839            return false;
840          }
841        }
842        if let Some(version) = browsers.firefox {
843          if version < 262144 {
844            return false;
845          }
846        }
847        if let Some(version) = browsers.chrome {
848          if version < 983040 {
849            return false;
850          }
851        }
852        if let Some(version) = browsers.safari {
853          if version < 327680 {
854            return false;
855          }
856        }
857        if let Some(version) = browsers.opera {
858          if version < 983040 {
859            return false;
860          }
861        }
862        if let Some(version) = browsers.ios_saf {
863          if version < 327680 {
864            return false;
865          }
866        }
867        if let Some(version) = browsers.android {
868          if version < 131840 {
869            return false;
870          }
871        }
872        if let Some(version) = browsers.samsung {
873          if version < 262144 {
874            return false;
875          }
876        }
877      }
878      Feature::PlaceholderShown => {
879        if let Some(version) = browsers.edge {
880          if version < 5177344 {
881            return false;
882          }
883        }
884        if let Some(version) = browsers.firefox {
885          if version < 3342336 {
886            return false;
887          }
888        }
889        if let Some(version) = browsers.chrome {
890          if version < 3080192 {
891            return false;
892          }
893        }
894        if let Some(version) = browsers.safari {
895          if version < 589824 {
896            return false;
897          }
898        }
899        if let Some(version) = browsers.opera {
900          if version < 2228224 {
901            return false;
902          }
903        }
904        if let Some(version) = browsers.ios_saf {
905          if version < 589824 {
906            return false;
907          }
908        }
909        if let Some(version) = browsers.android {
910          if version < 9175040 {
911            return false;
912          }
913        }
914        if let Some(version) = browsers.samsung {
915          if version < 327680 {
916            return false;
917          }
918        }
919        if browsers.ie.is_some() {
920          return false;
921        }
922      }
923      Feature::Dialog => {
924        if let Some(version) = browsers.edge {
925          if version < 5177344 {
926            return false;
927          }
928        }
929        if let Some(version) = browsers.firefox {
930          if version < 6422528 {
931            return false;
932          }
933        }
934        if let Some(version) = browsers.chrome {
935          if version < 2424832 {
936            return false;
937          }
938        }
939        if let Some(version) = browsers.safari {
940          if version < 984064 {
941            return false;
942          }
943        }
944        if let Some(version) = browsers.opera {
945          if version < 1572864 {
946            return false;
947          }
948        }
949        if let Some(version) = browsers.ios_saf {
950          if version < 984064 {
951            return false;
952          }
953        }
954        if let Some(version) = browsers.android {
955          if version < 9175040 {
956            return false;
957          }
958        }
959        if let Some(version) = browsers.samsung {
960          if version < 262144 {
961            return false;
962          }
963        }
964        if browsers.ie.is_some() {
965          return false;
966        }
967      }
968      Feature::Fullscreen => {
969        if let Some(version) = browsers.edge {
970          if version < 5177344 {
971            return false;
972          }
973        }
974        if let Some(version) = browsers.firefox {
975          if version < 4194304 {
976            return false;
977          }
978        }
979        if let Some(version) = browsers.chrome {
980          if version < 4653056 {
981            return false;
982          }
983        }
984        if let Some(version) = browsers.safari {
985          if version < 1049600 {
986            return false;
987          }
988        }
989        if let Some(version) = browsers.opera {
990          if version < 786688 {
991            return false;
992          }
993        }
994        if let Some(version) = browsers.samsung {
995          if version < 655616 {
996            return false;
997          }
998        }
999        if browsers.android.is_some() || browsers.ie.is_some() || browsers.ios_saf.is_some() {
1000          return false;
1001        }
1002      }
1003      Feature::MarkerPseudo => {
1004        if let Some(version) = browsers.edge {
1005          if version < 5636096 {
1006            return false;
1007          }
1008        }
1009        if let Some(version) = browsers.firefox {
1010          if version < 4456448 {
1011            return false;
1012          }
1013        }
1014        if let Some(version) = browsers.chrome {
1015          if version < 5636096 {
1016            return false;
1017          }
1018        }
1019        if let Some(version) = browsers.opera {
1020          if version < 4718592 {
1021            return false;
1022          }
1023        }
1024        if let Some(version) = browsers.android {
1025          if version < 9175040 {
1026            return false;
1027          }
1028        }
1029        if let Some(version) = browsers.samsung {
1030          if version < 917504 {
1031            return false;
1032          }
1033        }
1034        if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
1035          return false;
1036        }
1037      }
1038      Feature::Placeholder => {
1039        if let Some(version) = browsers.edge {
1040          if version < 5177344 {
1041            return false;
1042          }
1043        }
1044        if let Some(version) = browsers.firefox {
1045          if version < 3342336 {
1046            return false;
1047          }
1048        }
1049        if let Some(version) = browsers.chrome {
1050          if version < 3735552 {
1051            return false;
1052          }
1053        }
1054        if let Some(version) = browsers.safari {
1055          if version < 655616 {
1056            return false;
1057          }
1058        }
1059        if let Some(version) = browsers.opera {
1060          if version < 2883584 {
1061            return false;
1062          }
1063        }
1064        if let Some(version) = browsers.ios_saf {
1065          if version < 656128 {
1066            return false;
1067          }
1068        }
1069        if let Some(version) = browsers.android {
1070          if version < 9175040 {
1071            return false;
1072          }
1073        }
1074        if let Some(version) = browsers.samsung {
1075          if version < 459264 {
1076            return false;
1077          }
1078        }
1079        if browsers.ie.is_some() {
1080          return false;
1081        }
1082      }
1083      Feature::Selection => {
1084        if let Some(version) = browsers.ie {
1085          if version < 589824 {
1086            return false;
1087          }
1088        }
1089        if let Some(version) = browsers.edge {
1090          if version < 786432 {
1091            return false;
1092          }
1093        }
1094        if let Some(version) = browsers.firefox {
1095          if version < 4063232 {
1096            return false;
1097          }
1098        }
1099        if let Some(version) = browsers.chrome {
1100          if version < 262144 {
1101            return false;
1102          }
1103        }
1104        if let Some(version) = browsers.safari {
1105          if version < 196864 {
1106            return false;
1107          }
1108        }
1109        if let Some(version) = browsers.opera {
1110          if version < 591104 {
1111            return false;
1112          }
1113        }
1114        if let Some(version) = browsers.android {
1115          if version < 263168 {
1116            return false;
1117          }
1118        }
1119        if let Some(version) = browsers.samsung {
1120          if version < 262144 {
1121            return false;
1122          }
1123        }
1124        if browsers.ios_saf.is_some() {
1125          return false;
1126        }
1127      }
1128      Feature::CaseInsensitive => {
1129        if let Some(version) = browsers.edge {
1130          if version < 5177344 {
1131            return false;
1132          }
1133        }
1134        if let Some(version) = browsers.firefox {
1135          if version < 3080192 {
1136            return false;
1137          }
1138        }
1139        if let Some(version) = browsers.chrome {
1140          if version < 3211264 {
1141            return false;
1142          }
1143        }
1144        if let Some(version) = browsers.safari {
1145          if version < 589824 {
1146            return false;
1147          }
1148        }
1149        if let Some(version) = browsers.opera {
1150          if version < 2359296 {
1151            return false;
1152          }
1153        }
1154        if let Some(version) = browsers.ios_saf {
1155          if version < 589824 {
1156            return false;
1157          }
1158        }
1159        if let Some(version) = browsers.android {
1160          if version < 9175040 {
1161            return false;
1162          }
1163        }
1164        if let Some(version) = browsers.samsung {
1165          if version < 327680 {
1166            return false;
1167          }
1168        }
1169        if browsers.ie.is_some() {
1170          return false;
1171        }
1172      }
1173      Feature::ReadOnlyWrite => {
1174        if let Some(version) = browsers.edge {
1175          if version < 851968 {
1176            return false;
1177          }
1178        }
1179        if let Some(version) = browsers.firefox {
1180          if version < 5111808 {
1181            return false;
1182          }
1183        }
1184        if let Some(version) = browsers.chrome {
1185          if version < 2359296 {
1186            return false;
1187          }
1188        }
1189        if let Some(version) = browsers.safari {
1190          if version < 589824 {
1191            return false;
1192          }
1193        }
1194        if let Some(version) = browsers.opera {
1195          if version < 1507328 {
1196            return false;
1197          }
1198        }
1199        if let Some(version) = browsers.ios_saf {
1200          if version < 589824 {
1201            return false;
1202          }
1203        }
1204        if let Some(version) = browsers.android {
1205          if version < 9175040 {
1206            return false;
1207          }
1208        }
1209        if let Some(version) = browsers.samsung {
1210          if version < 262144 {
1211            return false;
1212          }
1213        }
1214        if browsers.ie.is_some() {
1215          return false;
1216        }
1217      }
1218      Feature::Autofill => {
1219        if let Some(version) = browsers.chrome {
1220          if version < 7208960 {
1221            return false;
1222          }
1223        }
1224        if let Some(version) = browsers.edge {
1225          if version < 7208960 {
1226            return false;
1227          }
1228        }
1229        if let Some(version) = browsers.firefox {
1230          if version < 5636096 {
1231            return false;
1232          }
1233        }
1234        if let Some(version) = browsers.opera {
1235          if version < 6291456 {
1236            return false;
1237          }
1238        }
1239        if let Some(version) = browsers.safari {
1240          if version < 983040 {
1241            return false;
1242          }
1243        }
1244        if let Some(version) = browsers.ios_saf {
1245          if version < 983040 {
1246            return false;
1247          }
1248        }
1249        if let Some(version) = browsers.samsung {
1250          if version < 1376256 {
1251            return false;
1252          }
1253        }
1254        if let Some(version) = browsers.android {
1255          if version < 9175040 {
1256            return false;
1257          }
1258        }
1259        if browsers.ie.is_some() {
1260          return false;
1261        }
1262      }
1263      Feature::Namespaces => {
1264        if let Some(version) = browsers.ie {
1265          if version < 589824 {
1266            return false;
1267          }
1268        }
1269        if let Some(version) = browsers.edge {
1270          if version < 786432 {
1271            return false;
1272          }
1273        }
1274        if let Some(version) = browsers.firefox {
1275          if version < 131072 {
1276            return false;
1277          }
1278        }
1279        if let Some(version) = browsers.chrome {
1280          if version < 262144 {
1281            return false;
1282          }
1283        }
1284        if let Some(version) = browsers.safari {
1285          if version < 262144 {
1286            return false;
1287          }
1288        }
1289        if let Some(version) = browsers.opera {
1290          if version < 589824 {
1291            return false;
1292          }
1293        }
1294        if let Some(version) = browsers.ios_saf {
1295          if version < 262656 {
1296            return false;
1297          }
1298        }
1299        if let Some(version) = browsers.android {
1300          if version < 131328 {
1301            return false;
1302          }
1303        }
1304        if let Some(version) = browsers.samsung {
1305          if version < 262144 {
1306            return false;
1307          }
1308        }
1309      }
1310      Feature::Shadowdomv1 => {
1311        if let Some(version) = browsers.edge {
1312          if version < 5177344 {
1313            return false;
1314          }
1315        }
1316        if let Some(version) = browsers.firefox {
1317          if version < 4128768 {
1318            return false;
1319          }
1320        }
1321        if let Some(version) = browsers.chrome {
1322          if version < 3473408 {
1323            return false;
1324          }
1325        }
1326        if let Some(version) = browsers.safari {
1327          if version < 655360 {
1328            return false;
1329          }
1330        }
1331        if let Some(version) = browsers.opera {
1332          if version < 2621440 {
1333            return false;
1334          }
1335        }
1336        if let Some(version) = browsers.ios_saf {
1337          if version < 720896 {
1338            return false;
1339          }
1340        }
1341        if let Some(version) = browsers.android {
1342          if version < 9175040 {
1343            return false;
1344          }
1345        }
1346        if let Some(version) = browsers.samsung {
1347          if version < 393728 {
1348            return false;
1349          }
1350        }
1351        if browsers.ie.is_some() {
1352          return false;
1353        }
1354      }
1355      Feature::HexAlphaColors => {
1356        if let Some(version) = browsers.edge {
1357          if version < 5177344 {
1358            return false;
1359          }
1360        }
1361        if let Some(version) = browsers.firefox {
1362          if version < 3211264 {
1363            return false;
1364          }
1365        }
1366        if let Some(version) = browsers.chrome {
1367          if version < 4063232 {
1368            return false;
1369          }
1370        }
1371        if let Some(version) = browsers.safari {
1372          if version < 655360 {
1373            return false;
1374          }
1375        }
1376        if let Some(version) = browsers.opera {
1377          if version < 3407872 {
1378            return false;
1379          }
1380        }
1381        if let Some(version) = browsers.ios_saf {
1382          if version < 655360 {
1383            return false;
1384          }
1385        }
1386        if let Some(version) = browsers.android {
1387          if version < 9175040 {
1388            return false;
1389          }
1390        }
1391        if let Some(version) = browsers.samsung {
1392          if version < 524800 {
1393            return false;
1394          }
1395        }
1396        if browsers.ie.is_some() {
1397          return false;
1398        }
1399      }
1400      Feature::Nesting => {
1401        if let Some(version) = browsers.edge {
1402          if version < 7864320 {
1403            return false;
1404          }
1405        }
1406        if let Some(version) = browsers.firefox {
1407          if version < 7667712 {
1408            return false;
1409          }
1410        }
1411        if let Some(version) = browsers.chrome {
1412          if version < 7864320 {
1413            return false;
1414          }
1415        }
1416        if let Some(version) = browsers.safari {
1417          if version < 1114624 {
1418            return false;
1419          }
1420        }
1421        if let Some(version) = browsers.opera {
1422          if version < 6946816 {
1423            return false;
1424          }
1425        }
1426        if let Some(version) = browsers.ios_saf {
1427          if version < 1114624 {
1428            return false;
1429          }
1430        }
1431        if let Some(version) = browsers.android {
1432          if version < 9175040 {
1433            return false;
1434          }
1435        }
1436        if let Some(version) = browsers.samsung {
1437          if version < 1638400 {
1438            return false;
1439          }
1440        }
1441        if browsers.ie.is_some() {
1442          return false;
1443        }
1444      }
1445      Feature::NotSelectorList => {
1446        if let Some(version) = browsers.edge {
1447          if version < 5767168 {
1448            return false;
1449          }
1450        }
1451        if let Some(version) = browsers.firefox {
1452          if version < 5505024 {
1453            return false;
1454          }
1455        }
1456        if let Some(version) = browsers.chrome {
1457          if version < 5767168 {
1458            return false;
1459          }
1460        }
1461        if let Some(version) = browsers.safari {
1462          if version < 589824 {
1463            return false;
1464          }
1465        }
1466        if let Some(version) = browsers.opera {
1467          if version < 4915200 {
1468            return false;
1469          }
1470        }
1471        if let Some(version) = browsers.ios_saf {
1472          if version < 589824 {
1473            return false;
1474          }
1475        }
1476        if let Some(version) = browsers.android {
1477          if version < 9175040 {
1478            return false;
1479          }
1480        }
1481        if let Some(version) = browsers.samsung {
1482          if version < 983040 {
1483            return false;
1484          }
1485        }
1486        if browsers.ie.is_some() {
1487          return false;
1488        }
1489      }
1490      Feature::HasSelector => {
1491        if let Some(version) = browsers.edge {
1492          if version < 6881280 {
1493            return false;
1494          }
1495        }
1496        if let Some(version) = browsers.firefox {
1497          if version < 7929856 {
1498            return false;
1499          }
1500        }
1501        if let Some(version) = browsers.chrome {
1502          if version < 6881280 {
1503            return false;
1504          }
1505        }
1506        if let Some(version) = browsers.safari {
1507          if version < 984064 {
1508            return false;
1509          }
1510        }
1511        if let Some(version) = browsers.opera {
1512          if version < 5963776 {
1513            return false;
1514          }
1515        }
1516        if let Some(version) = browsers.ios_saf {
1517          if version < 984064 {
1518            return false;
1519          }
1520        }
1521        if let Some(version) = browsers.android {
1522          if version < 9175040 {
1523            return false;
1524          }
1525        }
1526        if let Some(version) = browsers.samsung {
1527          if version < 1310720 {
1528            return false;
1529          }
1530        }
1531        if browsers.ie.is_some() {
1532          return false;
1533        }
1534      }
1535      Feature::FontFamilySystemUi => {
1536        if let Some(version) = browsers.edge {
1537          if version < 5177344 {
1538            return false;
1539          }
1540        }
1541        if let Some(version) = browsers.firefox {
1542          if version < 6029312 {
1543            return false;
1544          }
1545        }
1546        if let Some(version) = browsers.chrome {
1547          if version < 3670016 {
1548            return false;
1549          }
1550        }
1551        if let Some(version) = browsers.safari {
1552          if version < 720896 {
1553            return false;
1554          }
1555        }
1556        if let Some(version) = browsers.opera {
1557          if version < 2818048 {
1558            return false;
1559          }
1560        }
1561        if let Some(version) = browsers.ios_saf {
1562          if version < 720896 {
1563            return false;
1564          }
1565        }
1566        if let Some(version) = browsers.android {
1567          if version < 9175040 {
1568            return false;
1569          }
1570        }
1571        if let Some(version) = browsers.samsung {
1572          if version < 393728 {
1573            return false;
1574          }
1575        }
1576        if browsers.ie.is_some() {
1577          return false;
1578        }
1579      }
1580      Feature::ExtendedSystemFonts => {
1581        if let Some(version) = browsers.safari {
1582          if version < 852224 {
1583            return false;
1584          }
1585        }
1586        if let Some(version) = browsers.ios_saf {
1587          if version < 852992 {
1588            return false;
1589          }
1590        }
1591        if browsers.android.is_some()
1592          || browsers.chrome.is_some()
1593          || browsers.edge.is_some()
1594          || browsers.firefox.is_some()
1595          || browsers.ie.is_some()
1596          || browsers.opera.is_some()
1597          || browsers.samsung.is_some()
1598        {
1599          return false;
1600        }
1601      }
1602      Feature::CalcFunction => {
1603        if let Some(version) = browsers.edge {
1604          if version < 786432 {
1605            return false;
1606          }
1607        }
1608        if let Some(version) = browsers.firefox {
1609          if version < 1048576 {
1610            return false;
1611          }
1612        }
1613        if let Some(version) = browsers.chrome {
1614          if version < 1703936 {
1615            return false;
1616          }
1617        }
1618        if let Some(version) = browsers.safari {
1619          if version < 393472 {
1620            return false;
1621          }
1622        }
1623        if let Some(version) = browsers.opera {
1624          if version < 983040 {
1625            return false;
1626          }
1627        }
1628        if let Some(version) = browsers.ios_saf {
1629          if version < 458752 {
1630            return false;
1631          }
1632        }
1633        if let Some(version) = browsers.android {
1634          if version < 9175040 {
1635            return false;
1636          }
1637        }
1638        if let Some(version) = browsers.samsung {
1639          if version < 262144 {
1640            return false;
1641          }
1642        }
1643        if browsers.ie.is_some() {
1644          return false;
1645        }
1646      }
1647      Feature::CustomMediaQueries | Feature::FitContentFunctionSize => return false,
1648      Feature::DoublePositionGradients => {
1649        if let Some(version) = browsers.chrome {
1650          if version < 4653056 {
1651            return false;
1652          }
1653        }
1654        if let Some(version) = browsers.edge {
1655          if version < 5177344 {
1656            return false;
1657          }
1658        }
1659        if let Some(version) = browsers.firefox {
1660          if version < 4194304 {
1661            return false;
1662          }
1663        }
1664        if let Some(version) = browsers.opera {
1665          if version < 3276800 {
1666            return false;
1667          }
1668        }
1669        if let Some(version) = browsers.safari {
1670          if version < 786688 {
1671            return false;
1672          }
1673        }
1674        if let Some(version) = browsers.ios_saf {
1675          if version < 786944 {
1676            return false;
1677          }
1678        }
1679        if let Some(version) = browsers.samsung {
1680          if version < 655360 {
1681            return false;
1682          }
1683        }
1684        if let Some(version) = browsers.android {
1685          if version < 4653056 {
1686            return false;
1687          }
1688        }
1689        if browsers.ie.is_some() {
1690          return false;
1691        }
1692      }
1693      Feature::ClampFunction => {
1694        if let Some(version) = browsers.chrome {
1695          if version < 5177344 {
1696            return false;
1697          }
1698        }
1699        if let Some(version) = browsers.edge {
1700          if version < 5177344 {
1701            return false;
1702          }
1703        }
1704        if let Some(version) = browsers.firefox {
1705          if version < 5177344 {
1706            return false;
1707          }
1708        }
1709        if let Some(version) = browsers.opera {
1710          if version < 3735552 {
1711            return false;
1712          }
1713        }
1714        if let Some(version) = browsers.safari {
1715          if version < 852224 {
1716            return false;
1717          }
1718        }
1719        if let Some(version) = browsers.ios_saf {
1720          if version < 852992 {
1721            return false;
1722          }
1723        }
1724        if let Some(version) = browsers.samsung {
1725          if version < 786432 {
1726            return false;
1727          }
1728        }
1729        if let Some(version) = browsers.android {
1730          if version < 5177344 {
1731            return false;
1732          }
1733        }
1734        if browsers.ie.is_some() {
1735          return false;
1736        }
1737      }
1738      Feature::PlaceSelf | Feature::PlaceItems => {
1739        if let Some(version) = browsers.chrome {
1740          if version < 3866624 {
1741            return false;
1742          }
1743        }
1744        if let Some(version) = browsers.edge {
1745          if version < 5177344 {
1746            return false;
1747          }
1748        }
1749        if let Some(version) = browsers.firefox {
1750          if version < 2949120 {
1751            return false;
1752          }
1753        }
1754        if let Some(version) = browsers.opera {
1755          if version < 2818048 {
1756            return false;
1757          }
1758        }
1759        if let Some(version) = browsers.safari {
1760          if version < 720896 {
1761            return false;
1762          }
1763        }
1764        if let Some(version) = browsers.ios_saf {
1765          if version < 720896 {
1766            return false;
1767          }
1768        }
1769        if let Some(version) = browsers.samsung {
1770          if version < 458752 {
1771            return false;
1772          }
1773        }
1774        if let Some(version) = browsers.android {
1775          if version < 3866624 {
1776            return false;
1777          }
1778        }
1779        if browsers.ie.is_some() {
1780          return false;
1781        }
1782      }
1783      Feature::PlaceContent => {
1784        if let Some(version) = browsers.chrome {
1785          if version < 3866624 {
1786            return false;
1787          }
1788        }
1789        if let Some(version) = browsers.edge {
1790          if version < 5177344 {
1791            return false;
1792          }
1793        }
1794        if let Some(version) = browsers.firefox {
1795          if version < 2949120 {
1796            return false;
1797          }
1798        }
1799        if let Some(version) = browsers.opera {
1800          if version < 2818048 {
1801            return false;
1802          }
1803        }
1804        if let Some(version) = browsers.safari {
1805          if version < 589824 {
1806            return false;
1807          }
1808        }
1809        if let Some(version) = browsers.ios_saf {
1810          if version < 589824 {
1811            return false;
1812          }
1813        }
1814        if let Some(version) = browsers.samsung {
1815          if version < 458752 {
1816            return false;
1817          }
1818        }
1819        if let Some(version) = browsers.android {
1820          if version < 3866624 {
1821            return false;
1822          }
1823        }
1824        if browsers.ie.is_some() {
1825          return false;
1826        }
1827      }
1828      Feature::OverflowShorthand => {
1829        if let Some(version) = browsers.chrome {
1830          if version < 4456448 {
1831            return false;
1832          }
1833        }
1834        if let Some(version) = browsers.edge {
1835          if version < 5177344 {
1836            return false;
1837          }
1838        }
1839        if let Some(version) = browsers.firefox {
1840          if version < 3997696 {
1841            return false;
1842          }
1843        }
1844        if let Some(version) = browsers.opera {
1845          if version < 3145728 {
1846            return false;
1847          }
1848        }
1849        if let Some(version) = browsers.safari {
1850          if version < 852224 {
1851            return false;
1852          }
1853        }
1854        if let Some(version) = browsers.ios_saf {
1855          if version < 852992 {
1856            return false;
1857          }
1858        }
1859        if let Some(version) = browsers.samsung {
1860          if version < 655360 {
1861            return false;
1862          }
1863        }
1864        if let Some(version) = browsers.android {
1865          if version < 4456448 {
1866            return false;
1867          }
1868        }
1869        if browsers.ie.is_some() {
1870          return false;
1871        }
1872      }
1873      Feature::MediaRangeSyntax => {
1874        if let Some(version) = browsers.chrome {
1875          if version < 6815744 {
1876            return false;
1877          }
1878        }
1879        if let Some(version) = browsers.edge {
1880          if version < 6815744 {
1881            return false;
1882          }
1883        }
1884        if let Some(version) = browsers.firefox {
1885          if version < 4128768 {
1886            return false;
1887          }
1888        }
1889        if let Some(version) = browsers.opera {
1890          if version < 4653056 {
1891            return false;
1892          }
1893        }
1894        if let Some(version) = browsers.safari {
1895          if version < 1049600 {
1896            return false;
1897          }
1898        }
1899        if let Some(version) = browsers.ios_saf {
1900          if version < 1049600 {
1901            return false;
1902          }
1903        }
1904        if let Some(version) = browsers.samsung {
1905          if version < 1310720 {
1906            return false;
1907          }
1908        }
1909        if let Some(version) = browsers.android {
1910          if version < 6815744 {
1911            return false;
1912          }
1913        }
1914        if browsers.ie.is_some() {
1915          return false;
1916        }
1917      }
1918      Feature::MediaIntervalSyntax => {
1919        if let Some(version) = browsers.chrome {
1920          if version < 6815744 {
1921            return false;
1922          }
1923        }
1924        if let Some(version) = browsers.edge {
1925          if version < 6815744 {
1926            return false;
1927          }
1928        }
1929        if let Some(version) = browsers.firefox {
1930          if version < 6684672 {
1931            return false;
1932          }
1933        }
1934        if let Some(version) = browsers.opera {
1935          if version < 4653056 {
1936            return false;
1937          }
1938        }
1939        if let Some(version) = browsers.safari {
1940          if version < 1049600 {
1941            return false;
1942          }
1943        }
1944        if let Some(version) = browsers.ios_saf {
1945          if version < 1049600 {
1946            return false;
1947          }
1948        }
1949        if let Some(version) = browsers.samsung {
1950          if version < 1310720 {
1951            return false;
1952          }
1953        }
1954        if let Some(version) = browsers.android {
1955          if version < 6815744 {
1956            return false;
1957          }
1958        }
1959        if browsers.ie.is_some() {
1960          return false;
1961        }
1962      }
1963      Feature::LogicalBorders => {
1964        if let Some(version) = browsers.chrome {
1965          if version < 4521984 {
1966            return false;
1967          }
1968        }
1969        if let Some(version) = browsers.edge {
1970          if version < 5177344 {
1971            return false;
1972          }
1973        }
1974        if let Some(version) = browsers.firefox {
1975          if version < 2686976 {
1976            return false;
1977          }
1978        }
1979        if let Some(version) = browsers.opera {
1980          if version < 3145728 {
1981            return false;
1982          }
1983        }
1984        if let Some(version) = browsers.safari {
1985          if version < 786688 {
1986            return false;
1987          }
1988        }
1989        if let Some(version) = browsers.ios_saf {
1990          if version < 786944 {
1991            return false;
1992          }
1993        }
1994        if let Some(version) = browsers.samsung {
1995          if version < 655360 {
1996            return false;
1997          }
1998        }
1999        if let Some(version) = browsers.android {
2000          if version < 4521984 {
2001            return false;
2002          }
2003        }
2004        if browsers.ie.is_some() {
2005          return false;
2006        }
2007      }
2008      Feature::LogicalBorderShorthand | Feature::LogicalMarginShorthand | Feature::LogicalPaddingShorthand => {
2009        if let Some(version) = browsers.chrome {
2010          if version < 5701632 {
2011            return false;
2012          }
2013        }
2014        if let Some(version) = browsers.edge {
2015          if version < 5701632 {
2016            return false;
2017          }
2018        }
2019        if let Some(version) = browsers.firefox {
2020          if version < 4325376 {
2021            return false;
2022          }
2023        }
2024        if let Some(version) = browsers.opera {
2025          if version < 4063232 {
2026            return false;
2027          }
2028        }
2029        if let Some(version) = browsers.safari {
2030          if version < 917760 {
2031            return false;
2032          }
2033        }
2034        if let Some(version) = browsers.ios_saf {
2035          if version < 918784 {
2036            return false;
2037          }
2038        }
2039        if let Some(version) = browsers.samsung {
2040          if version < 917504 {
2041            return false;
2042          }
2043        }
2044        if let Some(version) = browsers.android {
2045          if version < 5701632 {
2046            return false;
2047          }
2048        }
2049        if browsers.ie.is_some() {
2050          return false;
2051        }
2052      }
2053      Feature::LogicalBorderRadius => {
2054        if let Some(version) = browsers.chrome {
2055          if version < 5832704 {
2056            return false;
2057          }
2058        }
2059        if let Some(version) = browsers.edge {
2060          if version < 5832704 {
2061            return false;
2062          }
2063        }
2064        if let Some(version) = browsers.firefox {
2065          if version < 4325376 {
2066            return false;
2067          }
2068        }
2069        if let Some(version) = browsers.opera {
2070          if version < 4128768 {
2071            return false;
2072          }
2073        }
2074        if let Some(version) = browsers.safari {
2075          if version < 983040 {
2076            return false;
2077          }
2078        }
2079        if let Some(version) = browsers.ios_saf {
2080          if version < 983040 {
2081            return false;
2082          }
2083        }
2084        if let Some(version) = browsers.samsung {
2085          if version < 983040 {
2086            return false;
2087          }
2088        }
2089        if let Some(version) = browsers.android {
2090          if version < 5832704 {
2091            return false;
2092          }
2093        }
2094        if browsers.ie.is_some() {
2095          return false;
2096        }
2097      }
2098      Feature::LogicalMargin | Feature::LogicalPadding => {
2099        if let Some(version) = browsers.chrome {
2100          if version < 4521984 {
2101            return false;
2102          }
2103        }
2104        if let Some(version) = browsers.edge {
2105          if version < 5177344 {
2106            return false;
2107          }
2108        }
2109        if let Some(version) = browsers.firefox {
2110          if version < 2686976 {
2111            return false;
2112          }
2113        }
2114        if let Some(version) = browsers.opera {
2115          if version < 3145728 {
2116            return false;
2117          }
2118        }
2119        if let Some(version) = browsers.safari {
2120          if version < 786688 {
2121            return false;
2122          }
2123        }
2124        if let Some(version) = browsers.ios_saf {
2125          if version < 786944 {
2126            return false;
2127          }
2128        }
2129        if let Some(version) = browsers.samsung {
2130          if version < 655360 {
2131            return false;
2132          }
2133        }
2134        if let Some(version) = browsers.android {
2135          if version < 5701632 {
2136            return false;
2137          }
2138        }
2139        if browsers.ie.is_some() {
2140          return false;
2141        }
2142      }
2143      Feature::LogicalInset => {
2144        if let Some(version) = browsers.chrome {
2145          if version < 5701632 {
2146            return false;
2147          }
2148        }
2149        if let Some(version) = browsers.edge {
2150          if version < 5701632 {
2151            return false;
2152          }
2153        }
2154        if let Some(version) = browsers.firefox {
2155          if version < 4128768 {
2156            return false;
2157          }
2158        }
2159        if let Some(version) = browsers.opera {
2160          if version < 4063232 {
2161            return false;
2162          }
2163        }
2164        if let Some(version) = browsers.safari {
2165          if version < 917760 {
2166            return false;
2167          }
2168        }
2169        if let Some(version) = browsers.ios_saf {
2170          if version < 918784 {
2171            return false;
2172          }
2173        }
2174        if let Some(version) = browsers.samsung {
2175          if version < 917504 {
2176            return false;
2177          }
2178        }
2179        if let Some(version) = browsers.android {
2180          if version < 5701632 {
2181            return false;
2182          }
2183        }
2184        if browsers.ie.is_some() {
2185          return false;
2186        }
2187      }
2188      Feature::LogicalSize => {
2189        if let Some(version) = browsers.chrome {
2190          if version < 3735552 {
2191            return false;
2192          }
2193        }
2194        if let Some(version) = browsers.edge {
2195          if version < 5177344 {
2196            return false;
2197          }
2198        }
2199        if let Some(version) = browsers.firefox {
2200          if version < 2686976 {
2201            return false;
2202          }
2203        }
2204        if let Some(version) = browsers.opera {
2205          if version < 2818048 {
2206            return false;
2207          }
2208        }
2209        if let Some(version) = browsers.safari {
2210          if version < 786688 {
2211            return false;
2212          }
2213        }
2214        if let Some(version) = browsers.ios_saf {
2215          if version < 786944 {
2216            return false;
2217          }
2218        }
2219        if let Some(version) = browsers.samsung {
2220          if version < 327680 {
2221            return false;
2222          }
2223        }
2224        if let Some(version) = browsers.android {
2225          if version < 3735552 {
2226            return false;
2227          }
2228        }
2229        if browsers.ie.is_some() {
2230          return false;
2231        }
2232      }
2233      Feature::LogicalTextAlign => {
2234        if let Some(version) = browsers.chrome {
2235          if version < 1179648 {
2236            return false;
2237          }
2238        }
2239        if let Some(version) = browsers.edge {
2240          if version < 5177344 {
2241            return false;
2242          }
2243        }
2244        if let Some(version) = browsers.firefox {
2245          if version < 262144 {
2246            return false;
2247          }
2248        }
2249        if let Some(version) = browsers.opera {
2250          if version < 917504 {
2251            return false;
2252          }
2253        }
2254        if let Some(version) = browsers.safari {
2255          if version < 196864 {
2256            return false;
2257          }
2258        }
2259        if let Some(version) = browsers.ios_saf {
2260          if version < 131072 {
2261            return false;
2262          }
2263        }
2264        if let Some(version) = browsers.samsung {
2265          if version < 65536 {
2266            return false;
2267          }
2268        }
2269        if let Some(version) = browsers.android {
2270          if version < 2424832 {
2271            return false;
2272          }
2273        }
2274        if browsers.ie.is_some() {
2275          return false;
2276        }
2277      }
2278      Feature::LabColors => {
2279        if let Some(version) = browsers.chrome {
2280          if version < 7274496 {
2281            return false;
2282          }
2283        }
2284        if let Some(version) = browsers.edge {
2285          if version < 7274496 {
2286            return false;
2287          }
2288        }
2289        if let Some(version) = browsers.firefox {
2290          if version < 7405568 {
2291            return false;
2292          }
2293        }
2294        if let Some(version) = browsers.opera {
2295          if version < 4915200 {
2296            return false;
2297          }
2298        }
2299        if let Some(version) = browsers.safari {
2300          if version < 983040 {
2301            return false;
2302          }
2303        }
2304        if let Some(version) = browsers.ios_saf {
2305          if version < 983040 {
2306            return false;
2307          }
2308        }
2309        if let Some(version) = browsers.samsung {
2310          if version < 1441792 {
2311            return false;
2312          }
2313        }
2314        if let Some(version) = browsers.android {
2315          if version < 7274496 {
2316            return false;
2317          }
2318        }
2319        if browsers.ie.is_some() {
2320          return false;
2321        }
2322      }
2323      Feature::OklabColors => {
2324        if let Some(version) = browsers.chrome {
2325          if version < 7274496 {
2326            return false;
2327          }
2328        }
2329        if let Some(version) = browsers.edge {
2330          if version < 7274496 {
2331            return false;
2332          }
2333        }
2334        if let Some(version) = browsers.firefox {
2335          if version < 7405568 {
2336            return false;
2337          }
2338        }
2339        if let Some(version) = browsers.opera {
2340          if version < 4915200 {
2341            return false;
2342          }
2343        }
2344        if let Some(version) = browsers.safari {
2345          if version < 984064 {
2346            return false;
2347          }
2348        }
2349        if let Some(version) = browsers.ios_saf {
2350          if version < 984064 {
2351            return false;
2352          }
2353        }
2354        if let Some(version) = browsers.samsung {
2355          if version < 1441792 {
2356            return false;
2357          }
2358        }
2359        if let Some(version) = browsers.android {
2360          if version < 7274496 {
2361            return false;
2362          }
2363        }
2364        if browsers.ie.is_some() {
2365          return false;
2366        }
2367      }
2368      Feature::ColorFunction => {
2369        if let Some(version) = browsers.chrome {
2370          if version < 7274496 {
2371            return false;
2372          }
2373        }
2374        if let Some(version) = browsers.edge {
2375          if version < 7274496 {
2376            return false;
2377          }
2378        }
2379        if let Some(version) = browsers.firefox {
2380          if version < 7405568 {
2381            return false;
2382          }
2383        }
2384        if let Some(version) = browsers.opera {
2385          if version < 4915200 {
2386            return false;
2387          }
2388        }
2389        if let Some(version) = browsers.safari {
2390          if version < 655616 {
2391            return false;
2392          }
2393        }
2394        if let Some(version) = browsers.ios_saf {
2395          if version < 656128 {
2396            return false;
2397          }
2398        }
2399        if let Some(version) = browsers.samsung {
2400          if version < 1441792 {
2401            return false;
2402          }
2403        }
2404        if let Some(version) = browsers.android {
2405          if version < 7274496 {
2406            return false;
2407          }
2408        }
2409        if browsers.ie.is_some() {
2410          return false;
2411        }
2412      }
2413      Feature::SpaceSeparatedColorNotation => {
2414        if let Some(version) = browsers.chrome {
2415          if version < 4259840 {
2416            return false;
2417          }
2418        }
2419        if let Some(version) = browsers.edge {
2420          if version < 5177344 {
2421            return false;
2422          }
2423        }
2424        if let Some(version) = browsers.firefox {
2425          if version < 3407872 {
2426            return false;
2427          }
2428        }
2429        if let Some(version) = browsers.opera {
2430          if version < 3080192 {
2431            return false;
2432          }
2433        }
2434        if let Some(version) = browsers.safari {
2435          if version < 786688 {
2436            return false;
2437          }
2438        }
2439        if let Some(version) = browsers.ios_saf {
2440          if version < 786944 {
2441            return false;
2442          }
2443        }
2444        if let Some(version) = browsers.samsung {
2445          if version < 589824 {
2446            return false;
2447          }
2448        }
2449        if let Some(version) = browsers.android {
2450          if version < 4259840 {
2451            return false;
2452          }
2453        }
2454        if browsers.ie.is_some() {
2455          return false;
2456        }
2457      }
2458      Feature::TextDecorationThicknessPercent => {
2459        if let Some(version) = browsers.chrome {
2460          if version < 5701632 {
2461            return false;
2462          }
2463        }
2464        if let Some(version) = browsers.edge {
2465          if version < 5701632 {
2466            return false;
2467          }
2468        }
2469        if let Some(version) = browsers.firefox {
2470          if version < 5177344 {
2471            return false;
2472          }
2473        }
2474        if let Some(version) = browsers.opera {
2475          if version < 4063232 {
2476            return false;
2477          }
2478        }
2479        if let Some(version) = browsers.safari {
2480          if version < 1115136 {
2481            return false;
2482          }
2483        }
2484        if let Some(version) = browsers.ios_saf {
2485          if version < 1115136 {
2486            return false;
2487          }
2488        }
2489        if let Some(version) = browsers.samsung {
2490          if version < 917504 {
2491            return false;
2492          }
2493        }
2494        if let Some(version) = browsers.android {
2495          if version < 5701632 {
2496            return false;
2497          }
2498        }
2499        if browsers.ie.is_some() {
2500          return false;
2501        }
2502      }
2503      Feature::TextDecorationThicknessShorthand => {
2504        if let Some(version) = browsers.chrome {
2505          if version < 5701632 {
2506            return false;
2507          }
2508        }
2509        if let Some(version) = browsers.edge {
2510          if version < 5701632 {
2511            return false;
2512          }
2513        }
2514        if let Some(version) = browsers.firefox {
2515          if version < 5177344 {
2516            return false;
2517          }
2518        }
2519        if let Some(version) = browsers.opera {
2520          if version < 4063232 {
2521            return false;
2522          }
2523        }
2524        if let Some(version) = browsers.samsung {
2525          if version < 917504 {
2526            return false;
2527          }
2528        }
2529        if let Some(version) = browsers.android {
2530          if version < 5701632 {
2531            return false;
2532          }
2533        }
2534        if browsers.ie.is_some() || browsers.ios_saf.is_some() || browsers.safari.is_some() {
2535          return false;
2536        }
2537      }
2538      Feature::Cue => {
2539        if let Some(version) = browsers.chrome {
2540          if version < 1703936 {
2541            return false;
2542          }
2543        }
2544        if let Some(version) = browsers.edge {
2545          if version < 5177344 {
2546            return false;
2547          }
2548        }
2549        if let Some(version) = browsers.firefox {
2550          if version < 3604480 {
2551            return false;
2552          }
2553        }
2554        if let Some(version) = browsers.opera {
2555          if version < 917504 {
2556            return false;
2557          }
2558        }
2559        if let Some(version) = browsers.safari {
2560          if version < 458752 {
2561            return false;
2562          }
2563        }
2564        if let Some(version) = browsers.ios_saf {
2565          if version < 458752 {
2566            return false;
2567          }
2568        }
2569        if let Some(version) = browsers.samsung {
2570          if version < 66816 {
2571            return false;
2572          }
2573        }
2574        if let Some(version) = browsers.android {
2575          if version < 263168 {
2576            return false;
2577          }
2578        }
2579        if browsers.ie.is_some() {
2580          return false;
2581        }
2582      }
2583      Feature::CueFunction => {
2584        if let Some(version) = browsers.chrome {
2585          if version < 1703936 {
2586            return false;
2587          }
2588        }
2589        if let Some(version) = browsers.edge {
2590          if version < 5177344 {
2591            return false;
2592          }
2593        }
2594        if let Some(version) = browsers.opera {
2595          if version < 917504 {
2596            return false;
2597          }
2598        }
2599        if let Some(version) = browsers.safari {
2600          if version < 458752 {
2601            return false;
2602          }
2603        }
2604        if let Some(version) = browsers.ios_saf {
2605          if version < 458752 {
2606            return false;
2607          }
2608        }
2609        if let Some(version) = browsers.samsung {
2610          if version < 66816 {
2611            return false;
2612          }
2613        }
2614        if let Some(version) = browsers.android {
2615          if version < 263168 {
2616            return false;
2617          }
2618        }
2619        if browsers.firefox.is_some() || browsers.ie.is_some() {
2620          return false;
2621        }
2622      }
2623      Feature::AnyPseudo => {
2624        if let Some(version) = browsers.chrome {
2625          if version < 1179648 {
2626            return false;
2627          }
2628        }
2629        if let Some(version) = browsers.edge {
2630          if version < 5177344 {
2631            return false;
2632          }
2633        }
2634        if let Some(version) = browsers.firefox {
2635          if version < 262144 {
2636            return false;
2637          }
2638        }
2639        if let Some(version) = browsers.opera {
2640          if version < 917504 {
2641            return false;
2642          }
2643        }
2644        if let Some(version) = browsers.safari {
2645          if version < 327680 {
2646            return false;
2647          }
2648        }
2649        if let Some(version) = browsers.ios_saf {
2650          if version < 327680 {
2651            return false;
2652          }
2653        }
2654        if let Some(version) = browsers.samsung {
2655          if version < 65536 {
2656            return false;
2657          }
2658        }
2659        if let Some(version) = browsers.android {
2660          if version < 263168 {
2661            return false;
2662          }
2663        }
2664        if browsers.ie.is_some() {
2665          return false;
2666        }
2667      }
2668      Feature::PartPseudo => {
2669        if let Some(version) = browsers.chrome {
2670          if version < 4784128 {
2671            return false;
2672          }
2673        }
2674        if let Some(version) = browsers.edge {
2675          if version < 5177344 {
2676            return false;
2677          }
2678        }
2679        if let Some(version) = browsers.firefox {
2680          if version < 5177344 {
2681            return false;
2682          }
2683        }
2684        if let Some(version) = browsers.opera {
2685          if version < 3407872 {
2686            return false;
2687          }
2688        }
2689        if let Some(version) = browsers.safari {
2690          if version < 852224 {
2691            return false;
2692          }
2693        }
2694        if let Some(version) = browsers.ios_saf {
2695          if version < 852992 {
2696            return false;
2697          }
2698        }
2699        if let Some(version) = browsers.samsung {
2700          if version < 720896 {
2701            return false;
2702          }
2703        }
2704        if let Some(version) = browsers.android {
2705          if version < 4784128 {
2706            return false;
2707          }
2708        }
2709        if browsers.ie.is_some() {
2710          return false;
2711        }
2712      }
2713      Feature::ImageSet => {
2714        if let Some(version) = browsers.chrome {
2715          if version < 1638400 {
2716            return false;
2717          }
2718        }
2719        if let Some(version) = browsers.edge {
2720          if version < 5177344 {
2721            return false;
2722          }
2723        }
2724        if let Some(version) = browsers.firefox {
2725          if version < 5767168 {
2726            return false;
2727          }
2728        }
2729        if let Some(version) = browsers.opera {
2730          if version < 917504 {
2731            return false;
2732          }
2733        }
2734        if let Some(version) = browsers.safari {
2735          if version < 393216 {
2736            return false;
2737          }
2738        }
2739        if let Some(version) = browsers.ios_saf {
2740          if version < 393216 {
2741            return false;
2742          }
2743        }
2744        if let Some(version) = browsers.samsung {
2745          if version < 66816 {
2746            return false;
2747          }
2748        }
2749        if let Some(version) = browsers.android {
2750          if version < 263168 {
2751            return false;
2752          }
2753        }
2754        if browsers.ie.is_some() {
2755          return false;
2756        }
2757      }
2758      Feature::XResolutionUnit => {
2759        if let Some(version) = browsers.chrome {
2760          if version < 4456448 {
2761            return false;
2762          }
2763        }
2764        if let Some(version) = browsers.edge {
2765          if version < 5177344 {
2766            return false;
2767          }
2768        }
2769        if let Some(version) = browsers.firefox {
2770          if version < 4063232 {
2771            return false;
2772          }
2773        }
2774        if let Some(version) = browsers.opera {
2775          if version < 3145728 {
2776            return false;
2777          }
2778        }
2779        if let Some(version) = browsers.safari {
2780          if version < 1048576 {
2781            return false;
2782          }
2783        }
2784        if let Some(version) = browsers.ios_saf {
2785          if version < 1048576 {
2786            return false;
2787          }
2788        }
2789        if let Some(version) = browsers.samsung {
2790          if version < 655360 {
2791            return false;
2792          }
2793        }
2794        if let Some(version) = browsers.android {
2795          if version < 4456448 {
2796            return false;
2797          }
2798        }
2799        if browsers.ie.is_some() {
2800          return false;
2801        }
2802      }
2803      Feature::NthChildOf => {
2804        if let Some(version) = browsers.chrome {
2805          if version < 7274496 {
2806            return false;
2807          }
2808        }
2809        if let Some(version) = browsers.edge {
2810          if version < 7274496 {
2811            return false;
2812          }
2813        }
2814        if let Some(version) = browsers.firefox {
2815          if version < 7405568 {
2816            return false;
2817          }
2818        }
2819        if let Some(version) = browsers.opera {
2820          if version < 4915200 {
2821            return false;
2822          }
2823        }
2824        if let Some(version) = browsers.safari {
2825          if version < 589824 {
2826            return false;
2827          }
2828        }
2829        if let Some(version) = browsers.ios_saf {
2830          if version < 589824 {
2831            return false;
2832          }
2833        }
2834        if let Some(version) = browsers.samsung {
2835          if version < 1441792 {
2836            return false;
2837          }
2838        }
2839        if let Some(version) = browsers.android {
2840          if version < 7274496 {
2841            return false;
2842          }
2843        }
2844        if browsers.ie.is_some() {
2845          return false;
2846        }
2847      }
2848      Feature::MinFunction | Feature::MaxFunction => {
2849        if let Some(version) = browsers.chrome {
2850          if version < 5177344 {
2851            return false;
2852          }
2853        }
2854        if let Some(version) = browsers.edge {
2855          if version < 5177344 {
2856            return false;
2857          }
2858        }
2859        if let Some(version) = browsers.firefox {
2860          if version < 5177344 {
2861            return false;
2862          }
2863        }
2864        if let Some(version) = browsers.opera {
2865          if version < 3735552 {
2866            return false;
2867          }
2868        }
2869        if let Some(version) = browsers.safari {
2870          if version < 721152 {
2871            return false;
2872          }
2873        }
2874        if let Some(version) = browsers.ios_saf {
2875          if version < 721664 {
2876            return false;
2877          }
2878        }
2879        if let Some(version) = browsers.samsung {
2880          if version < 786432 {
2881            return false;
2882          }
2883        }
2884        if let Some(version) = browsers.android {
2885          if version < 5177344 {
2886            return false;
2887          }
2888        }
2889        if browsers.ie.is_some() {
2890          return false;
2891        }
2892      }
2893      Feature::RoundFunction | Feature::RemFunction | Feature::ModFunction => {
2894        if let Some(version) = browsers.chrome {
2895          if version < 8192000 {
2896            return false;
2897          }
2898        }
2899        if let Some(version) = browsers.edge {
2900          if version < 8192000 {
2901            return false;
2902          }
2903        }
2904        if let Some(version) = browsers.firefox {
2905          if version < 7733248 {
2906            return false;
2907          }
2908        }
2909        if let Some(version) = browsers.opera {
2910          if version < 5439488 {
2911            return false;
2912          }
2913        }
2914        if let Some(version) = browsers.safari {
2915          if version < 984064 {
2916            return false;
2917          }
2918        }
2919        if let Some(version) = browsers.ios_saf {
2920          if version < 984064 {
2921            return false;
2922          }
2923        }
2924        if let Some(version) = browsers.samsung {
2925          if version < 1769472 {
2926            return false;
2927          }
2928        }
2929        if let Some(version) = browsers.android {
2930          if version < 8192000 {
2931            return false;
2932          }
2933        }
2934        if browsers.ie.is_some() {
2935          return false;
2936        }
2937      }
2938      Feature::AbsFunction | Feature::SignFunction => {
2939        if let Some(version) = browsers.chrome {
2940          if version < 9043968 {
2941            return false;
2942          }
2943        }
2944        if let Some(version) = browsers.edge {
2945          if version < 9043968 {
2946            return false;
2947          }
2948        }
2949        if let Some(version) = browsers.firefox {
2950          if version < 7733248 {
2951            return false;
2952          }
2953        }
2954        if let Some(version) = browsers.opera {
2955          if version < 5963776 {
2956            return false;
2957          }
2958        }
2959        if let Some(version) = browsers.safari {
2960          if version < 984064 {
2961            return false;
2962          }
2963        }
2964        if let Some(version) = browsers.ios_saf {
2965          if version < 984064 {
2966            return false;
2967          }
2968        }
2969        if let Some(version) = browsers.android {
2970          if version < 9043968 {
2971            return false;
2972          }
2973        }
2974        if browsers.ie.is_some() || browsers.samsung.is_some() {
2975          return false;
2976        }
2977      }
2978      Feature::HypotFunction => {
2979        if let Some(version) = browsers.chrome {
2980          if version < 7864320 {
2981            return false;
2982          }
2983        }
2984        if let Some(version) = browsers.edge {
2985          if version < 7864320 {
2986            return false;
2987          }
2988        }
2989        if let Some(version) = browsers.firefox {
2990          if version < 7733248 {
2991            return false;
2992          }
2993        }
2994        if let Some(version) = browsers.opera {
2995          if version < 5242880 {
2996            return false;
2997          }
2998        }
2999        if let Some(version) = browsers.safari {
3000          if version < 984064 {
3001            return false;
3002          }
3003        }
3004        if let Some(version) = browsers.ios_saf {
3005          if version < 984064 {
3006            return false;
3007          }
3008        }
3009        if let Some(version) = browsers.samsung {
3010          if version < 1638400 {
3011            return false;
3012          }
3013        }
3014        if let Some(version) = browsers.android {
3015          if version < 7864320 {
3016            return false;
3017          }
3018        }
3019        if browsers.ie.is_some() {
3020          return false;
3021        }
3022      }
3023      Feature::GradientInterpolationHints => {
3024        if let Some(version) = browsers.chrome {
3025          if version < 2621440 {
3026            return false;
3027          }
3028        }
3029        if let Some(version) = browsers.edge {
3030          if version < 5177344 {
3031            return false;
3032          }
3033        }
3034        if let Some(version) = browsers.firefox {
3035          if version < 2359296 {
3036            return false;
3037          }
3038        }
3039        if let Some(version) = browsers.opera {
3040          if version < 1769472 {
3041            return false;
3042          }
3043        }
3044        if let Some(version) = browsers.safari {
3045          if version < 458752 {
3046            return false;
3047          }
3048        }
3049        if let Some(version) = browsers.ios_saf {
3050          if version < 458752 {
3051            return false;
3052          }
3053        }
3054        if let Some(version) = browsers.samsung {
3055          if version < 262144 {
3056            return false;
3057          }
3058        }
3059        if let Some(version) = browsers.android {
3060          if version < 2621440 {
3061            return false;
3062          }
3063        }
3064        if browsers.ie.is_some() {
3065          return false;
3066        }
3067      }
3068      Feature::BorderImageRepeatRound => {
3069        if let Some(version) = browsers.chrome {
3070          if version < 1966080 {
3071            return false;
3072          }
3073        }
3074        if let Some(version) = browsers.edge {
3075          if version < 786432 {
3076            return false;
3077          }
3078        }
3079        if let Some(version) = browsers.firefox {
3080          if version < 983040 {
3081            return false;
3082          }
3083        }
3084        if let Some(version) = browsers.ie {
3085          if version < 720896 {
3086            return false;
3087          }
3088        }
3089        if let Some(version) = browsers.opera {
3090          if version < 1179648 {
3091            return false;
3092          }
3093        }
3094        if let Some(version) = browsers.safari {
3095          if version < 590080 {
3096            return false;
3097          }
3098        }
3099        if let Some(version) = browsers.ios_saf {
3100          if version < 590592 {
3101            return false;
3102          }
3103        }
3104        if let Some(version) = browsers.samsung {
3105          if version < 131072 {
3106            return false;
3107          }
3108        }
3109        if let Some(version) = browsers.android {
3110          if version < 263168 {
3111            return false;
3112          }
3113        }
3114      }
3115      Feature::BorderImageRepeatSpace => {
3116        if let Some(version) = browsers.chrome {
3117          if version < 3670016 {
3118            return false;
3119          }
3120        }
3121        if let Some(version) = browsers.edge {
3122          if version < 786432 {
3123            return false;
3124          }
3125        }
3126        if let Some(version) = browsers.firefox {
3127          if version < 3276800 {
3128            return false;
3129          }
3130        }
3131        if let Some(version) = browsers.ie {
3132          if version < 720896 {
3133            return false;
3134          }
3135        }
3136        if let Some(version) = browsers.opera {
3137          if version < 2818048 {
3138            return false;
3139          }
3140        }
3141        if let Some(version) = browsers.safari {
3142          if version < 590080 {
3143            return false;
3144          }
3145        }
3146        if let Some(version) = browsers.ios_saf {
3147          if version < 590592 {
3148            return false;
3149          }
3150        }
3151        if let Some(version) = browsers.samsung {
3152          if version < 393216 {
3153            return false;
3154          }
3155        }
3156        if let Some(version) = browsers.android {
3157          if version < 3670016 {
3158            return false;
3159          }
3160        }
3161      }
3162      Feature::FontSizeRem => {
3163        if let Some(version) = browsers.chrome {
3164          if version < 2752512 {
3165            return false;
3166          }
3167        }
3168        if let Some(version) = browsers.edge {
3169          if version < 786432 {
3170            return false;
3171          }
3172        }
3173        if let Some(version) = browsers.firefox {
3174          if version < 2031616 {
3175            return false;
3176          }
3177        }
3178        if let Some(version) = browsers.ie {
3179          if version < 589824 {
3180            return false;
3181          }
3182        }
3183        if let Some(version) = browsers.opera {
3184          if version < 1835008 {
3185            return false;
3186          }
3187        }
3188        if let Some(version) = browsers.safari {
3189          if version < 458752 {
3190            return false;
3191          }
3192        }
3193        if let Some(version) = browsers.ios_saf {
3194          if version < 458752 {
3195            return false;
3196          }
3197        }
3198        if let Some(version) = browsers.samsung {
3199          if version < 262144 {
3200            return false;
3201          }
3202        }
3203        if let Some(version) = browsers.android {
3204          if version < 2752512 {
3205            return false;
3206          }
3207        }
3208      }
3209      Feature::FontSizeXXXLarge => {
3210        if let Some(version) = browsers.chrome {
3211          if version < 5177344 {
3212            return false;
3213          }
3214        }
3215        if let Some(version) = browsers.edge {
3216          if version < 5177344 {
3217            return false;
3218          }
3219        }
3220        if let Some(version) = browsers.firefox {
3221          if version < 5177344 {
3222            return false;
3223          }
3224        }
3225        if let Some(version) = browsers.opera {
3226          if version < 3735552 {
3227            return false;
3228          }
3229        }
3230        if let Some(version) = browsers.safari {
3231          if version < 1049600 {
3232            return false;
3233          }
3234        }
3235        if let Some(version) = browsers.ios_saf {
3236          if version < 1049600 {
3237            return false;
3238          }
3239        }
3240        if let Some(version) = browsers.samsung {
3241          if version < 786432 {
3242            return false;
3243          }
3244        }
3245        if let Some(version) = browsers.android {
3246          if version < 5177344 {
3247            return false;
3248          }
3249        }
3250        if browsers.ie.is_some() {
3251          return false;
3252        }
3253      }
3254      Feature::FontStyleObliqueAngle => {
3255        if let Some(version) = browsers.chrome {
3256          if version < 4063232 {
3257            return false;
3258          }
3259        }
3260        if let Some(version) = browsers.edge {
3261          if version < 5177344 {
3262            return false;
3263          }
3264        }
3265        if let Some(version) = browsers.firefox {
3266          if version < 3997696 {
3267            return false;
3268          }
3269        }
3270        if let Some(version) = browsers.opera {
3271          if version < 3014656 {
3272            return false;
3273          }
3274        }
3275        if let Some(version) = browsers.safari {
3276          if version < 721152 {
3277            return false;
3278          }
3279        }
3280        if let Some(version) = browsers.ios_saf {
3281          if version < 721664 {
3282            return false;
3283          }
3284        }
3285        if let Some(version) = browsers.samsung {
3286          if version < 524288 {
3287            return false;
3288          }
3289        }
3290        if let Some(version) = browsers.android {
3291          if version < 4063232 {
3292            return false;
3293          }
3294        }
3295        if browsers.ie.is_some() {
3296          return false;
3297        }
3298      }
3299      Feature::FontWeightNumber => {
3300        if let Some(version) = browsers.chrome {
3301          if version < 4063232 {
3302            return false;
3303          }
3304        }
3305        if let Some(version) = browsers.edge {
3306          if version < 1114112 {
3307            return false;
3308          }
3309        }
3310        if let Some(version) = browsers.firefox {
3311          if version < 3997696 {
3312            return false;
3313          }
3314        }
3315        if let Some(version) = browsers.opera {
3316          if version < 3014656 {
3317            return false;
3318          }
3319        }
3320        if let Some(version) = browsers.safari {
3321          if version < 720896 {
3322            return false;
3323          }
3324        }
3325        if let Some(version) = browsers.ios_saf {
3326          if version < 720896 {
3327            return false;
3328          }
3329        }
3330        if let Some(version) = browsers.samsung {
3331          if version < 524288 {
3332            return false;
3333          }
3334        }
3335        if let Some(version) = browsers.android {
3336          if version < 4063232 {
3337            return false;
3338          }
3339        }
3340        if browsers.ie.is_some() {
3341          return false;
3342        }
3343      }
3344      Feature::FontStretchPercentage => {
3345        if let Some(version) = browsers.chrome {
3346          if version < 4063232 {
3347            return false;
3348          }
3349        }
3350        if let Some(version) = browsers.edge {
3351          if version < 1179648 {
3352            return false;
3353          }
3354        }
3355        if let Some(version) = browsers.firefox {
3356          if version < 3997696 {
3357            return false;
3358          }
3359        }
3360        if let Some(version) = browsers.opera {
3361          if version < 3014656 {
3362            return false;
3363          }
3364        }
3365        if let Some(version) = browsers.safari {
3366          if version < 721152 {
3367            return false;
3368          }
3369        }
3370        if let Some(version) = browsers.ios_saf {
3371          if version < 721664 {
3372            return false;
3373          }
3374        }
3375        if let Some(version) = browsers.samsung {
3376          if version < 524288 {
3377            return false;
3378          }
3379        }
3380        if let Some(version) = browsers.android {
3381          if version < 4063232 {
3382            return false;
3383          }
3384        }
3385        if browsers.ie.is_some() {
3386          return false;
3387        }
3388      }
3389      Feature::LightDark => {
3390        if let Some(version) = browsers.chrome {
3391          if version < 8060928 {
3392            return false;
3393          }
3394        }
3395        if let Some(version) = browsers.edge {
3396          if version < 8060928 {
3397            return false;
3398          }
3399        }
3400        if let Some(version) = browsers.firefox {
3401          if version < 7864320 {
3402            return false;
3403          }
3404        }
3405        if let Some(version) = browsers.opera {
3406          if version < 5373952 {
3407            return false;
3408          }
3409        }
3410        if let Some(version) = browsers.safari {
3411          if version < 1115392 {
3412            return false;
3413          }
3414        }
3415        if let Some(version) = browsers.ios_saf {
3416          if version < 1115392 {
3417            return false;
3418          }
3419        }
3420        if let Some(version) = browsers.samsung {
3421          if version < 1769472 {
3422            return false;
3423          }
3424        }
3425        if let Some(version) = browsers.android {
3426          if version < 8060928 {
3427            return false;
3428          }
3429        }
3430        if browsers.ie.is_some() {
3431          return false;
3432        }
3433      }
3434      Feature::AccentSystemColor => {
3435        if let Some(version) = browsers.firefox {
3436          if version < 6750208 {
3437            return false;
3438          }
3439        }
3440        if let Some(version) = browsers.safari {
3441          if version < 1049856 {
3442            return false;
3443          }
3444        }
3445        if let Some(version) = browsers.ios_saf {
3446          if version < 1049856 {
3447            return false;
3448          }
3449        }
3450        if browsers.android.is_some()
3451          || browsers.chrome.is_some()
3452          || browsers.edge.is_some()
3453          || browsers.ie.is_some()
3454          || browsers.opera.is_some()
3455          || browsers.samsung.is_some()
3456        {
3457          return false;
3458        }
3459      }
3460      Feature::AnimationTimelineShorthand => {
3461        if let Some(version) = browsers.chrome {
3462          if version < 7536640 {
3463            return false;
3464          }
3465        }
3466        if let Some(version) = browsers.edge {
3467          if version < 7536640 {
3468            return false;
3469          }
3470        }
3471        if let Some(version) = browsers.opera {
3472          if version < 5046272 {
3473            return false;
3474          }
3475        }
3476        if let Some(version) = browsers.samsung {
3477          if version < 1507328 {
3478            return false;
3479          }
3480        }
3481        if let Some(version) = browsers.android {
3482          if version < 7536640 {
3483            return false;
3484          }
3485        }
3486        if browsers.firefox.is_some()
3487          || browsers.ie.is_some()
3488          || browsers.ios_saf.is_some()
3489          || browsers.safari.is_some()
3490        {
3491          return false;
3492        }
3493      }
3494      Feature::ViewTransition => {
3495        if let Some(version) = browsers.chrome {
3496          if version < 7143424 {
3497            return false;
3498          }
3499        }
3500        if let Some(version) = browsers.edge {
3501          if version < 7143424 {
3502            return false;
3503          }
3504        }
3505        if let Some(version) = browsers.firefox {
3506          if version < 9437184 {
3507            return false;
3508          }
3509        }
3510        if let Some(version) = browsers.opera {
3511          if version < 4849664 {
3512            return false;
3513          }
3514        }
3515        if let Some(version) = browsers.safari {
3516          if version < 1179648 {
3517            return false;
3518          }
3519        }
3520        if let Some(version) = browsers.ios_saf {
3521          if version < 1179648 {
3522            return false;
3523          }
3524        }
3525        if let Some(version) = browsers.samsung {
3526          if version < 1376256 {
3527            return false;
3528          }
3529        }
3530        if let Some(version) = browsers.android {
3531          if version < 7143424 {
3532            return false;
3533          }
3534        }
3535        if browsers.ie.is_some() {
3536          return false;
3537        }
3538      }
3539      Feature::DetailsContent => {
3540        if let Some(version) = browsers.chrome {
3541          if version < 8585216 {
3542            return false;
3543          }
3544        }
3545        if let Some(version) = browsers.edge {
3546          if version < 8585216 {
3547            return false;
3548          }
3549        }
3550        if let Some(version) = browsers.firefox {
3551          if version < 9371648 {
3552            return false;
3553          }
3554        }
3555        if let Some(version) = browsers.opera {
3556          if version < 5701632 {
3557            return false;
3558          }
3559        }
3560        if let Some(version) = browsers.safari {
3561          if version < 1180672 {
3562            return false;
3563          }
3564        }
3565        if let Some(version) = browsers.ios_saf {
3566          if version < 1180672 {
3567            return false;
3568          }
3569        }
3570        if let Some(version) = browsers.android {
3571          if version < 8585216 {
3572            return false;
3573          }
3574        }
3575        if browsers.ie.is_some() || browsers.samsung.is_some() {
3576          return false;
3577        }
3578      }
3579      Feature::TargetText => {
3580        if let Some(version) = browsers.chrome {
3581          if version < 5832704 {
3582            return false;
3583          }
3584        }
3585        if let Some(version) = browsers.edge {
3586          if version < 5832704 {
3587            return false;
3588          }
3589        }
3590        if let Some(version) = browsers.firefox {
3591          if version < 8585216 {
3592            return false;
3593          }
3594        }
3595        if let Some(version) = browsers.opera {
3596          if version < 4128768 {
3597            return false;
3598          }
3599        }
3600        if let Some(version) = browsers.safari {
3601          if version < 1180160 {
3602            return false;
3603          }
3604        }
3605        if let Some(version) = browsers.ios_saf {
3606          if version < 1180160 {
3607            return false;
3608          }
3609        }
3610        if let Some(version) = browsers.samsung {
3611          if version < 983040 {
3612            return false;
3613          }
3614        }
3615        if let Some(version) = browsers.android {
3616          if version < 5832704 {
3617            return false;
3618          }
3619        }
3620        if browsers.ie.is_some() {
3621          return false;
3622        }
3623      }
3624      Feature::Picker | Feature::PickerIcon | Feature::Checkmark => {
3625        if let Some(version) = browsers.chrome {
3626          if version < 8847360 {
3627            return false;
3628          }
3629        }
3630        if let Some(version) = browsers.edge {
3631          if version < 8847360 {
3632            return false;
3633          }
3634        }
3635        if let Some(version) = browsers.opera {
3636          if version < 5832704 {
3637            return false;
3638          }
3639        }
3640        if let Some(version) = browsers.android {
3641          if version < 8847360 {
3642            return false;
3643          }
3644        }
3645        if browsers.firefox.is_some()
3646          || browsers.ie.is_some()
3647          || browsers.ios_saf.is_some()
3648          || browsers.safari.is_some()
3649          || browsers.samsung.is_some()
3650        {
3651          return false;
3652        }
3653      }
3654      Feature::GrammarError | Feature::SpellingError => {
3655        if let Some(version) = browsers.chrome {
3656          if version < 7929856 {
3657            return false;
3658          }
3659        }
3660        if let Some(version) = browsers.edge {
3661          if version < 7929856 {
3662            return false;
3663          }
3664        }
3665        if let Some(version) = browsers.opera {
3666          if version < 5308416 {
3667            return false;
3668          }
3669        }
3670        if let Some(version) = browsers.safari {
3671          if version < 1115136 {
3672            return false;
3673          }
3674        }
3675        if let Some(version) = browsers.ios_saf {
3676          if version < 1115136 {
3677            return false;
3678          }
3679        }
3680        if let Some(version) = browsers.samsung {
3681          if version < 1638400 {
3682            return false;
3683          }
3684        }
3685        if let Some(version) = browsers.android {
3686          if version < 7929856 {
3687            return false;
3688          }
3689        }
3690        if browsers.firefox.is_some() || browsers.ie.is_some() {
3691          return false;
3692        }
3693      }
3694      Feature::QUnit => {
3695        if let Some(version) = browsers.chrome {
3696          if version < 4128768 {
3697            return false;
3698          }
3699        }
3700        if let Some(version) = browsers.edge {
3701          if version < 5177344 {
3702            return false;
3703          }
3704        }
3705        if let Some(version) = browsers.firefox {
3706          if version < 3211264 {
3707            return false;
3708          }
3709        }
3710        if let Some(version) = browsers.opera {
3711          if version < 3014656 {
3712            return false;
3713          }
3714        }
3715        if let Some(version) = browsers.safari {
3716          if version < 852224 {
3717            return false;
3718          }
3719        }
3720        if let Some(version) = browsers.ios_saf {
3721          if version < 852992 {
3722            return false;
3723          }
3724        }
3725        if let Some(version) = browsers.samsung {
3726          if version < 524288 {
3727            return false;
3728          }
3729        }
3730        if let Some(version) = browsers.android {
3731          if version < 4128768 {
3732            return false;
3733          }
3734        }
3735        if browsers.ie.is_some() {
3736          return false;
3737        }
3738      }
3739      Feature::CapUnit => {
3740        if let Some(version) = browsers.chrome {
3741          if version < 7733248 {
3742            return false;
3743          }
3744        }
3745        if let Some(version) = browsers.edge {
3746          if version < 7733248 {
3747            return false;
3748          }
3749        }
3750        if let Some(version) = browsers.firefox {
3751          if version < 6356992 {
3752            return false;
3753          }
3754        }
3755        if let Some(version) = browsers.opera {
3756          if version < 5177344 {
3757            return false;
3758          }
3759        }
3760        if let Some(version) = browsers.safari {
3761          if version < 1114624 {
3762            return false;
3763          }
3764        }
3765        if let Some(version) = browsers.ios_saf {
3766          if version < 1114624 {
3767            return false;
3768          }
3769        }
3770        if let Some(version) = browsers.samsung {
3771          if version < 1638400 {
3772            return false;
3773          }
3774        }
3775        if let Some(version) = browsers.android {
3776          if version < 7733248 {
3777            return false;
3778          }
3779        }
3780        if browsers.ie.is_some() {
3781          return false;
3782        }
3783      }
3784      Feature::ChUnit => {
3785        if let Some(version) = browsers.chrome {
3786          if version < 1769472 {
3787            return false;
3788          }
3789        }
3790        if let Some(version) = browsers.edge {
3791          if version < 786432 {
3792            return false;
3793          }
3794        }
3795        if let Some(version) = browsers.firefox {
3796          if version < 262144 {
3797            return false;
3798          }
3799        }
3800        if let Some(version) = browsers.ie {
3801          if version < 589824 {
3802            return false;
3803          }
3804        }
3805        if let Some(version) = browsers.opera {
3806          if version < 983040 {
3807            return false;
3808          }
3809        }
3810        if let Some(version) = browsers.safari {
3811          if version < 458752 {
3812            return false;
3813          }
3814        }
3815        if let Some(version) = browsers.ios_saf {
3816          if version < 458752 {
3817            return false;
3818          }
3819        }
3820        if let Some(version) = browsers.samsung {
3821          if version < 66816 {
3822            return false;
3823          }
3824        }
3825        if let Some(version) = browsers.android {
3826          if version < 263168 {
3827            return false;
3828          }
3829        }
3830      }
3831      Feature::ContainerQueryLengthUnits => {
3832        if let Some(version) = browsers.chrome {
3833          if version < 6881280 {
3834            return false;
3835          }
3836        }
3837        if let Some(version) = browsers.edge {
3838          if version < 6881280 {
3839            return false;
3840          }
3841        }
3842        if let Some(version) = browsers.firefox {
3843          if version < 7208960 {
3844            return false;
3845          }
3846        }
3847        if let Some(version) = browsers.opera {
3848          if version < 4718592 {
3849            return false;
3850          }
3851        }
3852        if let Some(version) = browsers.safari {
3853          if version < 1048576 {
3854            return false;
3855          }
3856        }
3857        if let Some(version) = browsers.ios_saf {
3858          if version < 1048576 {
3859            return false;
3860          }
3861        }
3862        if let Some(version) = browsers.samsung {
3863          if version < 1310720 {
3864            return false;
3865          }
3866        }
3867        if let Some(version) = browsers.android {
3868          if version < 6881280 {
3869            return false;
3870          }
3871        }
3872        if browsers.ie.is_some() {
3873          return false;
3874        }
3875      }
3876      Feature::EmUnit => {
3877        if let Some(version) = browsers.chrome {
3878          if version < 1179648 {
3879            return false;
3880          }
3881        }
3882        if let Some(version) = browsers.edge {
3883          if version < 786432 {
3884            return false;
3885          }
3886        }
3887        if let Some(version) = browsers.firefox {
3888          if version < 262144 {
3889            return false;
3890          }
3891        }
3892        if let Some(version) = browsers.ie {
3893          if version < 196608 {
3894            return false;
3895          }
3896        }
3897        if let Some(version) = browsers.opera {
3898          if version < 655616 {
3899            return false;
3900          }
3901        }
3902        if let Some(version) = browsers.safari {
3903          if version < 65536 {
3904            return false;
3905          }
3906        }
3907        if let Some(version) = browsers.ios_saf {
3908          if version < 65536 {
3909            return false;
3910          }
3911        }
3912        if let Some(version) = browsers.samsung {
3913          if version < 65536 {
3914            return false;
3915          }
3916        }
3917        if let Some(version) = browsers.android {
3918          if version < 65536 {
3919            return false;
3920          }
3921        }
3922      }
3923      Feature::ExUnit
3924      | Feature::CircleListStyleType
3925      | Feature::DecimalListStyleType
3926      | Feature::DiscListStyleType
3927      | Feature::SquareListStyleType => {
3928        if let Some(version) = browsers.chrome {
3929          if version < 1179648 {
3930            return false;
3931          }
3932        }
3933        if let Some(version) = browsers.edge {
3934          if version < 786432 {
3935            return false;
3936          }
3937        }
3938        if let Some(version) = browsers.firefox {
3939          if version < 262144 {
3940            return false;
3941          }
3942        }
3943        if let Some(version) = browsers.ie {
3944          if version < 262144 {
3945            return false;
3946          }
3947        }
3948        if let Some(version) = browsers.opera {
3949          if version < 655616 {
3950            return false;
3951          }
3952        }
3953        if let Some(version) = browsers.safari {
3954          if version < 65536 {
3955            return false;
3956          }
3957        }
3958        if let Some(version) = browsers.ios_saf {
3959          if version < 65536 {
3960            return false;
3961          }
3962        }
3963        if let Some(version) = browsers.samsung {
3964          if version < 65536 {
3965            return false;
3966          }
3967        }
3968        if let Some(version) = browsers.android {
3969          if version < 263168 {
3970            return false;
3971          }
3972        }
3973      }
3974      Feature::IcUnit => {
3975        if let Some(version) = browsers.chrome {
3976          if version < 6946816 {
3977            return false;
3978          }
3979        }
3980        if let Some(version) = browsers.edge {
3981          if version < 6946816 {
3982            return false;
3983          }
3984        }
3985        if let Some(version) = browsers.firefox {
3986          if version < 6356992 {
3987            return false;
3988          }
3989        }
3990        if let Some(version) = browsers.opera {
3991          if version < 4718592 {
3992            return false;
3993          }
3994        }
3995        if let Some(version) = browsers.safari {
3996          if version < 984064 {
3997            return false;
3998          }
3999        }
4000        if let Some(version) = browsers.ios_saf {
4001          if version < 984064 {
4002            return false;
4003          }
4004        }
4005        if let Some(version) = browsers.samsung {
4006          if version < 1310720 {
4007            return false;
4008          }
4009        }
4010        if let Some(version) = browsers.android {
4011          if version < 6946816 {
4012            return false;
4013          }
4014        }
4015        if browsers.ie.is_some() {
4016          return false;
4017        }
4018      }
4019      Feature::LhUnit => {
4020        if let Some(version) = browsers.chrome {
4021          if version < 7143424 {
4022            return false;
4023          }
4024        }
4025        if let Some(version) = browsers.edge {
4026          if version < 7143424 {
4027            return false;
4028          }
4029        }
4030        if let Some(version) = browsers.firefox {
4031          if version < 7864320 {
4032            return false;
4033          }
4034        }
4035        if let Some(version) = browsers.opera {
4036          if version < 4849664 {
4037            return false;
4038          }
4039        }
4040        if let Some(version) = browsers.safari {
4041          if version < 1049600 {
4042            return false;
4043          }
4044        }
4045        if let Some(version) = browsers.ios_saf {
4046          if version < 1049600 {
4047            return false;
4048          }
4049        }
4050        if let Some(version) = browsers.samsung {
4051          if version < 1376256 {
4052            return false;
4053          }
4054        }
4055        if let Some(version) = browsers.android {
4056          if version < 7143424 {
4057            return false;
4058          }
4059        }
4060        if browsers.ie.is_some() {
4061          return false;
4062        }
4063      }
4064      Feature::RcapUnit => {
4065        if let Some(version) = browsers.chrome {
4066          if version < 7733248 {
4067            return false;
4068          }
4069        }
4070        if let Some(version) = browsers.edge {
4071          if version < 7733248 {
4072            return false;
4073          }
4074        }
4075        if let Some(version) = browsers.opera {
4076          if version < 5177344 {
4077            return false;
4078          }
4079        }
4080        if let Some(version) = browsers.safari {
4081          if version < 1114624 {
4082            return false;
4083          }
4084        }
4085        if let Some(version) = browsers.ios_saf {
4086          if version < 1114624 {
4087            return false;
4088          }
4089        }
4090        if let Some(version) = browsers.samsung {
4091          if version < 1638400 {
4092            return false;
4093          }
4094        }
4095        if let Some(version) = browsers.android {
4096          if version < 7733248 {
4097            return false;
4098          }
4099        }
4100        if browsers.firefox.is_some() || browsers.ie.is_some() {
4101          return false;
4102        }
4103      }
4104      Feature::RchUnit | Feature::RexUnit | Feature::RicUnit => {
4105        if let Some(version) = browsers.chrome {
4106          if version < 7274496 {
4107            return false;
4108          }
4109        }
4110        if let Some(version) = browsers.edge {
4111          if version < 7274496 {
4112            return false;
4113          }
4114        }
4115        if let Some(version) = browsers.opera {
4116          if version < 4915200 {
4117            return false;
4118          }
4119        }
4120        if let Some(version) = browsers.safari {
4121          if version < 1114624 {
4122            return false;
4123          }
4124        }
4125        if let Some(version) = browsers.ios_saf {
4126          if version < 1114624 {
4127            return false;
4128          }
4129        }
4130        if let Some(version) = browsers.samsung {
4131          if version < 1441792 {
4132            return false;
4133          }
4134        }
4135        if let Some(version) = browsers.android {
4136          if version < 7274496 {
4137            return false;
4138          }
4139        }
4140        if browsers.firefox.is_some() || browsers.ie.is_some() {
4141          return false;
4142        }
4143      }
4144      Feature::RemUnit => {
4145        if let Some(version) = browsers.chrome {
4146          if version < 1179648 {
4147            return false;
4148          }
4149        }
4150        if let Some(version) = browsers.edge {
4151          if version < 786432 {
4152            return false;
4153          }
4154        }
4155        if let Some(version) = browsers.firefox {
4156          if version < 262144 {
4157            return false;
4158          }
4159        }
4160        if let Some(version) = browsers.ie {
4161          if version < 589824 {
4162            return false;
4163          }
4164        }
4165        if let Some(version) = browsers.opera {
4166          if version < 786432 {
4167            return false;
4168          }
4169        }
4170        if let Some(version) = browsers.safari {
4171          if version < 327680 {
4172            return false;
4173          }
4174        }
4175        if let Some(version) = browsers.ios_saf {
4176          if version < 262144 {
4177            return false;
4178          }
4179        }
4180        if let Some(version) = browsers.samsung {
4181          if version < 65536 {
4182            return false;
4183          }
4184        }
4185        if let Some(version) = browsers.android {
4186          if version < 131072 {
4187            return false;
4188          }
4189        }
4190      }
4191      Feature::RlhUnit => {
4192        if let Some(version) = browsers.chrome {
4193          if version < 7274496 {
4194            return false;
4195          }
4196        }
4197        if let Some(version) = browsers.edge {
4198          if version < 7274496 {
4199            return false;
4200          }
4201        }
4202        if let Some(version) = browsers.firefox {
4203          if version < 7864320 {
4204            return false;
4205          }
4206        }
4207        if let Some(version) = browsers.opera {
4208          if version < 4915200 {
4209            return false;
4210          }
4211        }
4212        if let Some(version) = browsers.safari {
4213          if version < 1049600 {
4214            return false;
4215          }
4216        }
4217        if let Some(version) = browsers.ios_saf {
4218          if version < 1049600 {
4219            return false;
4220          }
4221        }
4222        if let Some(version) = browsers.samsung {
4223          if version < 1441792 {
4224            return false;
4225          }
4226        }
4227        if let Some(version) = browsers.android {
4228          if version < 7274496 {
4229            return false;
4230          }
4231        }
4232        if browsers.ie.is_some() {
4233          return false;
4234        }
4235      }
4236      Feature::VbUnit
4237      | Feature::ViUnit
4238      | Feature::ViewportPercentageUnitsDynamic
4239      | Feature::ViewportPercentageUnitsLarge
4240      | Feature::ViewportPercentageUnitsSmall => {
4241        if let Some(version) = browsers.chrome {
4242          if version < 7077888 {
4243            return false;
4244          }
4245        }
4246        if let Some(version) = browsers.edge {
4247          if version < 7077888 {
4248            return false;
4249          }
4250        }
4251        if let Some(version) = browsers.firefox {
4252          if version < 6619136 {
4253            return false;
4254          }
4255        }
4256        if let Some(version) = browsers.opera {
4257          if version < 4784128 {
4258            return false;
4259          }
4260        }
4261        if let Some(version) = browsers.safari {
4262          if version < 984064 {
4263            return false;
4264          }
4265        }
4266        if let Some(version) = browsers.ios_saf {
4267          if version < 984064 {
4268            return false;
4269          }
4270        }
4271        if let Some(version) = browsers.samsung {
4272          if version < 1376256 {
4273            return false;
4274          }
4275        }
4276        if let Some(version) = browsers.android {
4277          if version < 7077888 {
4278            return false;
4279          }
4280        }
4281        if browsers.ie.is_some() {
4282          return false;
4283        }
4284      }
4285      Feature::VhUnit | Feature::VwUnit => {
4286        if let Some(version) = browsers.chrome {
4287          if version < 1638400 {
4288            return false;
4289          }
4290        }
4291        if let Some(version) = browsers.edge {
4292          if version < 786432 {
4293            return false;
4294          }
4295        }
4296        if let Some(version) = browsers.firefox {
4297          if version < 1245184 {
4298            return false;
4299          }
4300        }
4301        if let Some(version) = browsers.ie {
4302          if version < 589824 {
4303            return false;
4304          }
4305        }
4306        if let Some(version) = browsers.opera {
4307          if version < 917504 {
4308            return false;
4309          }
4310        }
4311        if let Some(version) = browsers.safari {
4312          if version < 393216 {
4313            return false;
4314          }
4315        }
4316        if let Some(version) = browsers.ios_saf {
4317          if version < 393216 {
4318            return false;
4319          }
4320        }
4321        if let Some(version) = browsers.samsung {
4322          if version < 66816 {
4323            return false;
4324          }
4325        }
4326        if let Some(version) = browsers.android {
4327          if version < 263168 {
4328            return false;
4329          }
4330        }
4331      }
4332      Feature::VmaxUnit => {
4333        if let Some(version) = browsers.chrome {
4334          if version < 1703936 {
4335            return false;
4336          }
4337        }
4338        if let Some(version) = browsers.edge {
4339          if version < 1048576 {
4340            return false;
4341          }
4342        }
4343        if let Some(version) = browsers.firefox {
4344          if version < 1245184 {
4345            return false;
4346          }
4347        }
4348        if let Some(version) = browsers.opera {
4349          if version < 917504 {
4350            return false;
4351          }
4352        }
4353        if let Some(version) = browsers.safari {
4354          if version < 458752 {
4355            return false;
4356          }
4357        }
4358        if let Some(version) = browsers.ios_saf {
4359          if version < 458752 {
4360            return false;
4361          }
4362        }
4363        if let Some(version) = browsers.samsung {
4364          if version < 66816 {
4365            return false;
4366          }
4367        }
4368        if let Some(version) = browsers.android {
4369          if version < 66816 {
4370            return false;
4371          }
4372        }
4373        if browsers.ie.is_some() {
4374          return false;
4375        }
4376      }
4377      Feature::VminUnit => {
4378        if let Some(version) = browsers.chrome {
4379          if version < 1703936 {
4380            return false;
4381          }
4382        }
4383        if let Some(version) = browsers.edge {
4384          if version < 786432 {
4385            return false;
4386          }
4387        }
4388        if let Some(version) = browsers.firefox {
4389          if version < 1245184 {
4390            return false;
4391          }
4392        }
4393        if let Some(version) = browsers.ie {
4394          if version < 655360 {
4395            return false;
4396          }
4397        }
4398        if let Some(version) = browsers.opera {
4399          if version < 917504 {
4400            return false;
4401          }
4402        }
4403        if let Some(version) = browsers.safari {
4404          if version < 458752 {
4405            return false;
4406          }
4407        }
4408        if let Some(version) = browsers.ios_saf {
4409          if version < 458752 {
4410            return false;
4411          }
4412        }
4413        if let Some(version) = browsers.samsung {
4414          if version < 66816 {
4415            return false;
4416          }
4417        }
4418        if let Some(version) = browsers.android {
4419          if version < 263168 {
4420            return false;
4421          }
4422        }
4423      }
4424      Feature::ConicGradient | Feature::RepeatingConicGradient => {
4425        if let Some(version) = browsers.chrome {
4426          if version < 4521984 {
4427            return false;
4428          }
4429        }
4430        if let Some(version) = browsers.edge {
4431          if version < 5177344 {
4432            return false;
4433          }
4434        }
4435        if let Some(version) = browsers.firefox {
4436          if version < 5439488 {
4437            return false;
4438          }
4439        }
4440        if let Some(version) = browsers.opera {
4441          if version < 3145728 {
4442            return false;
4443          }
4444        }
4445        if let Some(version) = browsers.safari {
4446          if version < 786688 {
4447            return false;
4448          }
4449        }
4450        if let Some(version) = browsers.ios_saf {
4451          if version < 786944 {
4452            return false;
4453          }
4454        }
4455        if let Some(version) = browsers.samsung {
4456          if version < 655360 {
4457            return false;
4458          }
4459        }
4460        if let Some(version) = browsers.android {
4461          if version < 4521984 {
4462            return false;
4463          }
4464        }
4465        if browsers.ie.is_some() {
4466          return false;
4467        }
4468      }
4469      Feature::LinearGradient | Feature::RepeatingLinearGradient => {
4470        if let Some(version) = browsers.chrome {
4471          if version < 1179648 {
4472            return false;
4473          }
4474        }
4475        if let Some(version) = browsers.edge {
4476          if version < 786432 {
4477            return false;
4478          }
4479        }
4480        if let Some(version) = browsers.firefox {
4481          if version < 262144 {
4482            return false;
4483          }
4484        }
4485        if let Some(version) = browsers.ie {
4486          if version < 655360 {
4487            return false;
4488          }
4489        }
4490        if let Some(version) = browsers.opera {
4491          if version < 720896 {
4492            return false;
4493          }
4494        }
4495        if let Some(version) = browsers.safari {
4496          if version < 327936 {
4497            return false;
4498          }
4499        }
4500        if let Some(version) = browsers.ios_saf {
4501          if version < 327680 {
4502            return false;
4503          }
4504        }
4505        if let Some(version) = browsers.samsung {
4506          if version < 65536 {
4507            return false;
4508          }
4509        }
4510        if let Some(version) = browsers.android {
4511          if version < 263168 {
4512            return false;
4513          }
4514        }
4515      }
4516      Feature::RadialGradient => {
4517        if let Some(version) = browsers.chrome {
4518          if version < 1179648 {
4519            return false;
4520          }
4521        }
4522        if let Some(version) = browsers.edge {
4523          if version < 786432 {
4524            return false;
4525          }
4526        }
4527        if let Some(version) = browsers.firefox {
4528          if version < 262144 {
4529            return false;
4530          }
4531        }
4532        if let Some(version) = browsers.ie {
4533          if version < 655360 {
4534            return false;
4535          }
4536        }
4537        if let Some(version) = browsers.opera {
4538          if version < 786432 {
4539            return false;
4540          }
4541        }
4542        if let Some(version) = browsers.safari {
4543          if version < 327936 {
4544            return false;
4545          }
4546        }
4547        if let Some(version) = browsers.ios_saf {
4548          if version < 327680 {
4549            return false;
4550          }
4551        }
4552        if let Some(version) = browsers.samsung {
4553          if version < 65536 {
4554            return false;
4555          }
4556        }
4557        if let Some(version) = browsers.android {
4558          if version < 263168 {
4559            return false;
4560          }
4561        }
4562      }
4563      Feature::RepeatingRadialGradient => {
4564        if let Some(version) = browsers.chrome {
4565          if version < 1179648 {
4566            return false;
4567          }
4568        }
4569        if let Some(version) = browsers.edge {
4570          if version < 786432 {
4571            return false;
4572          }
4573        }
4574        if let Some(version) = browsers.firefox {
4575          if version < 655360 {
4576            return false;
4577          }
4578        }
4579        if let Some(version) = browsers.ie {
4580          if version < 655360 {
4581            return false;
4582          }
4583        }
4584        if let Some(version) = browsers.opera {
4585          if version < 786432 {
4586            return false;
4587          }
4588        }
4589        if let Some(version) = browsers.safari {
4590          if version < 327936 {
4591            return false;
4592          }
4593        }
4594        if let Some(version) = browsers.ios_saf {
4595          if version < 327680 {
4596            return false;
4597          }
4598        }
4599        if let Some(version) = browsers.samsung {
4600          if version < 65536 {
4601            return false;
4602          }
4603        }
4604        if let Some(version) = browsers.android {
4605          if version < 263168 {
4606            return false;
4607          }
4608        }
4609      }
4610      Feature::AfarListStyleType
4611      | Feature::AmharicListStyleType
4612      | Feature::AmharicAbegedeListStyleType
4613      | Feature::EthiopicListStyleType
4614      | Feature::EthiopicAbegedeListStyleType
4615      | Feature::EthiopicAbegedeAmEtListStyleType
4616      | Feature::EthiopicAbegedeGezListStyleType
4617      | Feature::EthiopicAbegedeTiErListStyleType
4618      | Feature::EthiopicAbegedeTiEtListStyleType
4619      | Feature::EthiopicHalehameAaErListStyleType
4620      | Feature::EthiopicHalehameAaEtListStyleType
4621      | Feature::EthiopicHalehameAmEtListStyleType
4622      | Feature::EthiopicHalehameGezListStyleType
4623      | Feature::EthiopicHalehameOmEtListStyleType
4624      | Feature::EthiopicHalehameSidEtListStyleType
4625      | Feature::EthiopicHalehameSoEtListStyleType
4626      | Feature::EthiopicHalehameTigListStyleType
4627      | Feature::LowerHexadecimalListStyleType
4628      | Feature::LowerNorwegianListStyleType
4629      | Feature::UpperHexadecimalListStyleType
4630      | Feature::UpperNorwegianListStyleType => {
4631        if let Some(version) = browsers.chrome {
4632          if version < 1179648 {
4633            return false;
4634          }
4635        }
4636        if let Some(version) = browsers.edge {
4637          if version < 5963776 {
4638            return false;
4639          }
4640        }
4641        if let Some(version) = browsers.opera {
4642          if version < 917504 {
4643            return false;
4644          }
4645        }
4646        if let Some(version) = browsers.safari {
4647          if version < 327680 {
4648            return false;
4649          }
4650        }
4651        if let Some(version) = browsers.ios_saf {
4652          if version < 262656 {
4653            return false;
4654          }
4655        }
4656        if let Some(version) = browsers.samsung {
4657          if version < 65536 {
4658            return false;
4659          }
4660        }
4661        if let Some(version) = browsers.android {
4662          if version < 196608 {
4663            return false;
4664          }
4665        }
4666        if browsers.firefox.is_some() || browsers.ie.is_some() {
4667          return false;
4668        }
4669      }
4670      Feature::ArabicIndicListStyleType
4671      | Feature::BengaliListStyleType
4672      | Feature::CjkEarthlyBranchListStyleType
4673      | Feature::CjkHeavenlyStemListStyleType
4674      | Feature::DevanagariListStyleType
4675      | Feature::GujaratiListStyleType
4676      | Feature::GurmukhiListStyleType
4677      | Feature::KannadaListStyleType
4678      | Feature::KhmerListStyleType
4679      | Feature::LaoListStyleType
4680      | Feature::MalayalamListStyleType
4681      | Feature::MyanmarListStyleType
4682      | Feature::OriyaListStyleType
4683      | Feature::PersianListStyleType
4684      | Feature::TeluguListStyleType
4685      | Feature::ThaiListStyleType => {
4686        if let Some(version) = browsers.chrome {
4687          if version < 1179648 {
4688            return false;
4689          }
4690        }
4691        if let Some(version) = browsers.edge {
4692          if version < 5177344 {
4693            return false;
4694          }
4695        }
4696        if let Some(version) = browsers.firefox {
4697          if version < 262144 {
4698            return false;
4699          }
4700        }
4701        if let Some(version) = browsers.opera {
4702          if version < 917504 {
4703            return false;
4704          }
4705        }
4706        if let Some(version) = browsers.safari {
4707          if version < 327680 {
4708            return false;
4709          }
4710        }
4711        if let Some(version) = browsers.ios_saf {
4712          if version < 262656 {
4713            return false;
4714          }
4715        }
4716        if let Some(version) = browsers.samsung {
4717          if version < 65536 {
4718            return false;
4719          }
4720        }
4721        if let Some(version) = browsers.android {
4722          if version < 263168 {
4723            return false;
4724          }
4725        }
4726        if browsers.ie.is_some() {
4727          return false;
4728        }
4729      }
4730      Feature::ArmenianListStyleType
4731      | Feature::DecimalLeadingZeroListStyleType
4732      | Feature::GeorgianListStyleType
4733      | Feature::LowerAlphaListStyleType
4734      | Feature::LowerGreekListStyleType
4735      | Feature::LowerRomanListStyleType
4736      | Feature::UpperAlphaListStyleType
4737      | Feature::UpperLatinListStyleType
4738      | Feature::UpperRomanListStyleType => {
4739        if let Some(version) = browsers.chrome {
4740          if version < 1179648 {
4741            return false;
4742          }
4743        }
4744        if let Some(version) = browsers.edge {
4745          if version < 786432 {
4746            return false;
4747          }
4748        }
4749        if let Some(version) = browsers.firefox {
4750          if version < 262144 {
4751            return false;
4752          }
4753        }
4754        if let Some(version) = browsers.ie {
4755          if version < 524288 {
4756            return false;
4757          }
4758        }
4759        if let Some(version) = browsers.opera {
4760          if version < 655616 {
4761            return false;
4762          }
4763        }
4764        if let Some(version) = browsers.safari {
4765          if version < 65536 {
4766            return false;
4767          }
4768        }
4769        if let Some(version) = browsers.ios_saf {
4770          if version < 65536 {
4771            return false;
4772          }
4773        }
4774        if let Some(version) = browsers.samsung {
4775          if version < 65536 {
4776            return false;
4777          }
4778        }
4779        if let Some(version) = browsers.android {
4780          if version < 263168 {
4781            return false;
4782          }
4783        }
4784      }
4785      Feature::AsterisksListStyleType | Feature::FootnotesListStyleType => {
4786        if let Some(version) = browsers.chrome {
4787          if version < 1179648 {
4788            return false;
4789          }
4790        }
4791        if let Some(version) = browsers.edge {
4792          if version < 5963776 {
4793            return false;
4794          }
4795        }
4796        if let Some(version) = browsers.opera {
4797          if version < 917504 {
4798            return false;
4799          }
4800        }
4801        if let Some(version) = browsers.safari {
4802          if version < 327936 {
4803            return false;
4804          }
4805        }
4806        if let Some(version) = browsers.ios_saf {
4807          if version < 327680 {
4808            return false;
4809          }
4810        }
4811        if let Some(version) = browsers.samsung {
4812          if version < 65536 {
4813            return false;
4814          }
4815        }
4816        if let Some(version) = browsers.android {
4817          if version < 263168 {
4818            return false;
4819          }
4820        }
4821        if browsers.firefox.is_some() || browsers.ie.is_some() {
4822          return false;
4823        }
4824      }
4825      Feature::BinaryListStyleType
4826      | Feature::OctalListStyleType
4827      | Feature::OromoListStyleType
4828      | Feature::SidamaListStyleType
4829      | Feature::SomaliListStyleType
4830      | Feature::TigreListStyleType
4831      | Feature::TigrinyaErListStyleType
4832      | Feature::TigrinyaErAbegedeListStyleType
4833      | Feature::TigrinyaEtListStyleType
4834      | Feature::TigrinyaEtAbegedeListStyleType => {
4835        if let Some(version) = browsers.chrome {
4836          if version < 1179648 {
4837            return false;
4838          }
4839        }
4840        if let Some(version) = browsers.edge {
4841          if version < 5963776 {
4842            return false;
4843          }
4844        }
4845        if let Some(version) = browsers.opera {
4846          if version < 917504 {
4847            return false;
4848          }
4849        }
4850        if let Some(version) = browsers.safari {
4851          if version < 327680 {
4852            return false;
4853          }
4854        }
4855        if let Some(version) = browsers.ios_saf {
4856          if version < 262656 {
4857            return false;
4858          }
4859        }
4860        if let Some(version) = browsers.samsung {
4861          if version < 65536 {
4862            return false;
4863          }
4864        }
4865        if let Some(version) = browsers.android {
4866          if version < 263168 {
4867            return false;
4868          }
4869        }
4870        if browsers.firefox.is_some() || browsers.ie.is_some() {
4871          return false;
4872        }
4873      }
4874      Feature::CambodianListStyleType | Feature::MongolianListStyleType | Feature::TibetanListStyleType => {
4875        if let Some(version) = browsers.chrome {
4876          if version < 1179648 {
4877            return false;
4878          }
4879        }
4880        if let Some(version) = browsers.edge {
4881          if version < 5177344 {
4882            return false;
4883          }
4884        }
4885        if let Some(version) = browsers.firefox {
4886          if version < 2162688 {
4887            return false;
4888          }
4889        }
4890        if let Some(version) = browsers.opera {
4891          if version < 917504 {
4892            return false;
4893          }
4894        }
4895        if let Some(version) = browsers.safari {
4896          if version < 327680 {
4897            return false;
4898          }
4899        }
4900        if let Some(version) = browsers.ios_saf {
4901          if version < 262656 {
4902            return false;
4903          }
4904        }
4905        if let Some(version) = browsers.samsung {
4906          if version < 65536 {
4907            return false;
4908          }
4909        }
4910        if let Some(version) = browsers.android {
4911          if version < 263168 {
4912            return false;
4913          }
4914        }
4915        if browsers.ie.is_some() {
4916          return false;
4917        }
4918      }
4919      Feature::CjkDecimalListStyleType => {
4920        if let Some(version) = browsers.chrome {
4921          if version < 5963776 {
4922            return false;
4923          }
4924        }
4925        if let Some(version) = browsers.edge {
4926          if version < 5963776 {
4927            return false;
4928          }
4929        }
4930        if let Some(version) = browsers.firefox {
4931          if version < 1835008 {
4932            return false;
4933          }
4934        }
4935        if let Some(version) = browsers.opera {
4936          if version < 4194304 {
4937            return false;
4938          }
4939        }
4940        if let Some(version) = browsers.safari {
4941          if version < 983040 {
4942            return false;
4943          }
4944        }
4945        if let Some(version) = browsers.ios_saf {
4946          if version < 983040 {
4947            return false;
4948          }
4949        }
4950        if let Some(version) = browsers.samsung {
4951          if version < 1048576 {
4952            return false;
4953          }
4954        }
4955        if let Some(version) = browsers.android {
4956          if version < 5963776 {
4957            return false;
4958          }
4959        }
4960        if browsers.ie.is_some() {
4961          return false;
4962        }
4963      }
4964      Feature::DisclosureClosedListStyleType | Feature::DisclosureOpenListStyleType => {
4965        if let Some(version) = browsers.chrome {
4966          if version < 5832704 {
4967            return false;
4968          }
4969        }
4970        if let Some(version) = browsers.edge {
4971          if version < 5832704 {
4972            return false;
4973          }
4974        }
4975        if let Some(version) = browsers.firefox {
4976          if version < 2162688 {
4977            return false;
4978          }
4979        }
4980        if let Some(version) = browsers.opera {
4981          if version < 4128768 {
4982            return false;
4983          }
4984        }
4985        if let Some(version) = browsers.safari {
4986          if version < 983040 {
4987            return false;
4988          }
4989        }
4990        if let Some(version) = browsers.ios_saf {
4991          if version < 983040 {
4992            return false;
4993          }
4994        }
4995        if let Some(version) = browsers.samsung {
4996          if version < 983040 {
4997            return false;
4998          }
4999        }
5000        if let Some(version) = browsers.android {
5001          if version < 5832704 {
5002            return false;
5003          }
5004        }
5005        if browsers.ie.is_some() {
5006          return false;
5007        }
5008      }
5009      Feature::EthiopicNumericListStyleType
5010      | Feature::JapaneseFormalListStyleType
5011      | Feature::JapaneseInformalListStyleType
5012      | Feature::TamilListStyleType => {
5013        if let Some(version) = browsers.chrome {
5014          if version < 5963776 {
5015            return false;
5016          }
5017        }
5018        if let Some(version) = browsers.edge {
5019          if version < 5963776 {
5020            return false;
5021          }
5022        }
5023        if let Some(version) = browsers.firefox {
5024          if version < 262144 {
5025            return false;
5026          }
5027        }
5028        if let Some(version) = browsers.opera {
5029          if version < 4194304 {
5030            return false;
5031          }
5032        }
5033        if let Some(version) = browsers.safari {
5034          if version < 983040 {
5035            return false;
5036          }
5037        }
5038        if let Some(version) = browsers.ios_saf {
5039          if version < 983040 {
5040            return false;
5041          }
5042        }
5043        if let Some(version) = browsers.samsung {
5044          if version < 1048576 {
5045            return false;
5046          }
5047        }
5048        if let Some(version) = browsers.android {
5049          if version < 5963776 {
5050            return false;
5051          }
5052        }
5053        if browsers.ie.is_some() {
5054          return false;
5055        }
5056      }
5057      Feature::HebrewListStyleType
5058      | Feature::HiraganaListStyleType
5059      | Feature::HiraganaIrohaListStyleType
5060      | Feature::KatakanaListStyleType
5061      | Feature::KatakanaIrohaListStyleType
5062      | Feature::NoneListStyleType
5063      | Feature::AutoSize => {
5064        if let Some(version) = browsers.chrome {
5065          if version < 1179648 {
5066            return false;
5067          }
5068        }
5069        if let Some(version) = browsers.edge {
5070          if version < 786432 {
5071            return false;
5072          }
5073        }
5074        if let Some(version) = browsers.firefox {
5075          if version < 262144 {
5076            return false;
5077          }
5078        }
5079        if let Some(version) = browsers.ie {
5080          if version < 720896 {
5081            return false;
5082          }
5083        }
5084        if let Some(version) = browsers.opera {
5085          if version < 917504 {
5086            return false;
5087          }
5088        }
5089        if let Some(version) = browsers.safari {
5090          if version < 65536 {
5091            return false;
5092          }
5093        }
5094        if let Some(version) = browsers.ios_saf {
5095          if version < 65536 {
5096            return false;
5097          }
5098        }
5099        if let Some(version) = browsers.samsung {
5100          if version < 65536 {
5101            return false;
5102          }
5103        }
5104        if let Some(version) = browsers.android {
5105          if version < 263168 {
5106            return false;
5107          }
5108        }
5109      }
5110      Feature::KoreanHangulFormalListStyleType
5111      | Feature::KoreanHanjaFormalListStyleType
5112      | Feature::KoreanHanjaInformalListStyleType => {
5113        if let Some(version) = browsers.chrome {
5114          if version < 2949120 {
5115            return false;
5116          }
5117        }
5118        if let Some(version) = browsers.edge {
5119          if version < 5177344 {
5120            return false;
5121          }
5122        }
5123        if let Some(version) = browsers.firefox {
5124          if version < 1835008 {
5125            return false;
5126          }
5127        }
5128        if let Some(version) = browsers.opera {
5129          if version < 2097152 {
5130            return false;
5131          }
5132        }
5133        if let Some(version) = browsers.safari {
5134          if version < 983040 {
5135            return false;
5136          }
5137        }
5138        if let Some(version) = browsers.ios_saf {
5139          if version < 983040 {
5140            return false;
5141          }
5142        }
5143        if let Some(version) = browsers.samsung {
5144          if version < 327680 {
5145            return false;
5146          }
5147        }
5148        if let Some(version) = browsers.android {
5149          if version < 2949120 {
5150            return false;
5151          }
5152        }
5153        if browsers.ie.is_some() {
5154          return false;
5155        }
5156      }
5157      Feature::LowerArmenianListStyleType | Feature::UpperArmenianListStyleType => {
5158        if let Some(version) = browsers.chrome {
5159          if version < 1179648 {
5160            return false;
5161          }
5162        }
5163        if let Some(version) = browsers.edge {
5164          if version < 5177344 {
5165            return false;
5166          }
5167        }
5168        if let Some(version) = browsers.firefox {
5169          if version < 2162688 {
5170            return false;
5171          }
5172        }
5173        if let Some(version) = browsers.opera {
5174          if version < 917504 {
5175            return false;
5176          }
5177        }
5178        if let Some(version) = browsers.safari {
5179          if version < 327936 {
5180            return false;
5181          }
5182        }
5183        if let Some(version) = browsers.ios_saf {
5184          if version < 327680 {
5185            return false;
5186          }
5187        }
5188        if let Some(version) = browsers.samsung {
5189          if version < 65536 {
5190            return false;
5191          }
5192        }
5193        if let Some(version) = browsers.android {
5194          if version < 263168 {
5195            return false;
5196          }
5197        }
5198        if browsers.ie.is_some() {
5199          return false;
5200        }
5201      }
5202      Feature::LowerLatinListStyleType => {
5203        if let Some(version) = browsers.chrome {
5204          if version < 1179648 {
5205            return false;
5206          }
5207        }
5208        if let Some(version) = browsers.edge {
5209          if version < 786432 {
5210            return false;
5211          }
5212        }
5213        if let Some(version) = browsers.firefox {
5214          if version < 262144 {
5215            return false;
5216          }
5217        }
5218        if let Some(version) = browsers.ie {
5219          if version < 524288 {
5220            return false;
5221          }
5222        }
5223        if let Some(version) = browsers.opera {
5224          if version < 655616 {
5225            return false;
5226          }
5227        }
5228        if let Some(version) = browsers.safari {
5229          if version < 65536 {
5230            return false;
5231          }
5232        }
5233        if let Some(version) = browsers.ios_saf {
5234          if version < 65536 {
5235            return false;
5236          }
5237        }
5238        if let Some(version) = browsers.samsung {
5239          if version < 327680 {
5240            return false;
5241          }
5242        }
5243        if let Some(version) = browsers.android {
5244          if version < 263168 {
5245            return false;
5246          }
5247        }
5248      }
5249      Feature::SimpChineseFormalListStyleType
5250      | Feature::SimpChineseInformalListStyleType
5251      | Feature::TradChineseFormalListStyleType
5252      | Feature::TradChineseInformalListStyleType => {
5253        if let Some(version) = browsers.chrome {
5254          if version < 2949120 {
5255            return false;
5256          }
5257        }
5258        if let Some(version) = browsers.edge {
5259          if version < 5177344 {
5260            return false;
5261          }
5262        }
5263        if let Some(version) = browsers.firefox {
5264          if version < 262144 {
5265            return false;
5266          }
5267        }
5268        if let Some(version) = browsers.opera {
5269          if version < 2097152 {
5270            return false;
5271          }
5272        }
5273        if let Some(version) = browsers.safari {
5274          if version < 983040 {
5275            return false;
5276          }
5277        }
5278        if let Some(version) = browsers.ios_saf {
5279          if version < 983040 {
5280            return false;
5281          }
5282        }
5283        if let Some(version) = browsers.samsung {
5284          if version < 327680 {
5285            return false;
5286          }
5287        }
5288        if let Some(version) = browsers.android {
5289          if version < 2949120 {
5290            return false;
5291          }
5292        }
5293        if browsers.ie.is_some() {
5294          return false;
5295        }
5296      }
5297      Feature::StringListStyleType => {
5298        if let Some(version) = browsers.chrome {
5299          if version < 5177344 {
5300            return false;
5301          }
5302        }
5303        if let Some(version) = browsers.edge {
5304          if version < 5177344 {
5305            return false;
5306          }
5307        }
5308        if let Some(version) = browsers.firefox {
5309          if version < 2555904 {
5310            return false;
5311          }
5312        }
5313        if let Some(version) = browsers.opera {
5314          if version < 3735552 {
5315            return false;
5316          }
5317        }
5318        if let Some(version) = browsers.safari {
5319          if version < 917760 {
5320            return false;
5321          }
5322        }
5323        if let Some(version) = browsers.ios_saf {
5324          if version < 918784 {
5325            return false;
5326          }
5327        }
5328        if let Some(version) = browsers.samsung {
5329          if version < 786432 {
5330            return false;
5331          }
5332        }
5333        if let Some(version) = browsers.android {
5334          if version < 5177344 {
5335            return false;
5336          }
5337        }
5338        if browsers.ie.is_some() {
5339          return false;
5340        }
5341      }
5342      Feature::SymbolsListStyleType => {
5343        if let Some(version) = browsers.firefox {
5344          if version < 2293760 {
5345            return false;
5346          }
5347        }
5348        if browsers.android.is_some()
5349          || browsers.chrome.is_some()
5350          || browsers.edge.is_some()
5351          || browsers.ie.is_some()
5352          || browsers.ios_saf.is_some()
5353          || browsers.opera.is_some()
5354          || browsers.safari.is_some()
5355          || browsers.samsung.is_some()
5356        {
5357          return false;
5358        }
5359      }
5360      Feature::AnchorSizeSize => {
5361        if let Some(version) = browsers.chrome {
5362          if version < 8192000 {
5363            return false;
5364          }
5365        }
5366        if let Some(version) = browsers.edge {
5367          if version < 8192000 {
5368            return false;
5369          }
5370        }
5371        if let Some(version) = browsers.opera {
5372          if version < 5439488 {
5373            return false;
5374          }
5375        }
5376        if let Some(version) = browsers.safari {
5377          if version < 1703936 {
5378            return false;
5379          }
5380        }
5381        if let Some(version) = browsers.ios_saf {
5382          if version < 1703936 {
5383            return false;
5384          }
5385        }
5386        if let Some(version) = browsers.samsung {
5387          if version < 1769472 {
5388            return false;
5389          }
5390        }
5391        if let Some(version) = browsers.android {
5392          if version < 8192000 {
5393            return false;
5394          }
5395        }
5396        if browsers.firefox.is_some() || browsers.ie.is_some() {
5397          return false;
5398        }
5399      }
5400      Feature::FitContentSize => {
5401        if let Some(version) = browsers.chrome {
5402          if version < 1638400 {
5403            return false;
5404          }
5405        }
5406        if let Some(version) = browsers.edge {
5407          if version < 5177344 {
5408            return false;
5409          }
5410        }
5411        if let Some(version) = browsers.firefox {
5412          if version < 262144 {
5413            return false;
5414          }
5415        }
5416        if let Some(version) = browsers.opera {
5417          if version < 917504 {
5418            return false;
5419          }
5420        }
5421        if let Some(version) = browsers.safari {
5422          if version < 458752 {
5423            return false;
5424          }
5425        }
5426        if let Some(version) = browsers.ios_saf {
5427          if version < 458752 {
5428            return false;
5429          }
5430        }
5431        if let Some(version) = browsers.samsung {
5432          if version < 66816 {
5433            return false;
5434          }
5435        }
5436        if let Some(version) = browsers.android {
5437          if version < 263168 {
5438            return false;
5439          }
5440        }
5441        if browsers.ie.is_some() {
5442          return false;
5443        }
5444      }
5445      Feature::IsAnimatableSize => {
5446        if let Some(version) = browsers.chrome {
5447          if version < 1703936 {
5448            return false;
5449          }
5450        }
5451        if let Some(version) = browsers.edge {
5452          if version < 786432 {
5453            return false;
5454          }
5455        }
5456        if let Some(version) = browsers.firefox {
5457          if version < 1048576 {
5458            return false;
5459          }
5460        }
5461        if let Some(version) = browsers.ie {
5462          if version < 720896 {
5463            return false;
5464          }
5465        }
5466        if let Some(version) = browsers.opera {
5467          if version < 917504 {
5468            return false;
5469          }
5470        }
5471        if let Some(version) = browsers.safari {
5472          if version < 458752 {
5473            return false;
5474          }
5475        }
5476        if let Some(version) = browsers.ios_saf {
5477          if version < 458752 {
5478            return false;
5479          }
5480        }
5481        if let Some(version) = browsers.samsung {
5482          if version < 66816 {
5483            return false;
5484          }
5485        }
5486        if let Some(version) = browsers.android {
5487          if version < 263168 {
5488            return false;
5489          }
5490        }
5491      }
5492      Feature::MaxContentSize => {
5493        if let Some(version) = browsers.chrome {
5494          if version < 1638400 {
5495            return false;
5496          }
5497        }
5498        if let Some(version) = browsers.edge {
5499          if version < 5177344 {
5500            return false;
5501          }
5502        }
5503        if let Some(version) = browsers.firefox {
5504          if version < 262144 {
5505            return false;
5506          }
5507        }
5508        if let Some(version) = browsers.opera {
5509          if version < 2818048 {
5510            return false;
5511          }
5512        }
5513        if let Some(version) = browsers.safari {
5514          if version < 720896 {
5515            return false;
5516          }
5517        }
5518        if let Some(version) = browsers.ios_saf {
5519          if version < 720896 {
5520            return false;
5521          }
5522        }
5523        if let Some(version) = browsers.samsung {
5524          if version < 66816 {
5525            return false;
5526          }
5527        }
5528        if let Some(version) = browsers.android {
5529          if version < 263168 {
5530            return false;
5531          }
5532        }
5533        if browsers.ie.is_some() {
5534          return false;
5535        }
5536      }
5537      Feature::MinContentSize => {
5538        if let Some(version) = browsers.chrome {
5539          if version < 3014656 {
5540            return false;
5541          }
5542        }
5543        if let Some(version) = browsers.edge {
5544          if version < 5177344 {
5545            return false;
5546          }
5547        }
5548        if let Some(version) = browsers.firefox {
5549          if version < 262144 {
5550            return false;
5551          }
5552        }
5553        if let Some(version) = browsers.opera {
5554          if version < 2162688 {
5555            return false;
5556          }
5557        }
5558        if let Some(version) = browsers.safari {
5559          if version < 720896 {
5560            return false;
5561          }
5562        }
5563        if let Some(version) = browsers.ios_saf {
5564          if version < 720896 {
5565            return false;
5566          }
5567        }
5568        if let Some(version) = browsers.samsung {
5569          if version < 327680 {
5570            return false;
5571          }
5572        }
5573        if let Some(version) = browsers.android {
5574          if version < 3014656 {
5575            return false;
5576          }
5577        }
5578        if browsers.ie.is_some() {
5579          return false;
5580        }
5581      }
5582      Feature::StretchSize => {
5583        if let Some(version) = browsers.chrome {
5584          if version < 9043968 {
5585            return false;
5586          }
5587        }
5588        if let Some(version) = browsers.edge {
5589          if version < 9043968 {
5590            return false;
5591          }
5592        }
5593        if let Some(version) = browsers.opera {
5594          if version < 5963776 {
5595            return false;
5596          }
5597        }
5598        if let Some(version) = browsers.android {
5599          if version < 9043968 {
5600            return false;
5601          }
5602        }
5603        if browsers.firefox.is_some()
5604          || browsers.ie.is_some()
5605          || browsers.ios_saf.is_some()
5606          || browsers.safari.is_some()
5607          || browsers.samsung.is_some()
5608        {
5609          return false;
5610        }
5611      }
5612      Feature::MozAvailableSize => {
5613        if let Some(version) = browsers.firefox {
5614          if version < 262144 {
5615            return false;
5616          }
5617        }
5618        if browsers.android.is_some()
5619          || browsers.chrome.is_some()
5620          || browsers.edge.is_some()
5621          || browsers.ie.is_some()
5622          || browsers.ios_saf.is_some()
5623          || browsers.opera.is_some()
5624          || browsers.safari.is_some()
5625          || browsers.samsung.is_some()
5626        {
5627          return false;
5628        }
5629      }
5630      Feature::WebkitFillAvailableSize => {
5631        if let Some(version) = browsers.safari {
5632          if version < 458752 {
5633            return false;
5634          }
5635        }
5636        if let Some(version) = browsers.ios_saf {
5637          if version < 458752 {
5638            return false;
5639          }
5640        }
5641        if let Some(version) = browsers.samsung {
5642          if version < 327680 {
5643            return false;
5644          }
5645        }
5646        if browsers.android.is_some()
5647          || browsers.chrome.is_some()
5648          || browsers.edge.is_some()
5649          || browsers.firefox.is_some()
5650          || browsers.ie.is_some()
5651          || browsers.opera.is_some()
5652        {
5653          return false;
5654        }
5655      }
5656      Feature::P3Colors | Feature::LangSelectorList => {
5657        if let Some(version) = browsers.safari {
5658          if version < 655616 {
5659            return false;
5660          }
5661        }
5662        if let Some(version) = browsers.ios_saf {
5663          if version < 656128 {
5664            return false;
5665          }
5666        }
5667        if browsers.android.is_some()
5668          || browsers.chrome.is_some()
5669          || browsers.edge.is_some()
5670          || browsers.firefox.is_some()
5671          || browsers.ie.is_some()
5672          || browsers.opera.is_some()
5673          || browsers.samsung.is_some()
5674        {
5675          return false;
5676        }
5677      }
5678    }
5679    true
5680  }
5681
5682  pub fn is_partially_compatible(&self, targets: Browsers) -> bool {
5683    let mut browsers = Browsers::default();
5684    if targets.android.is_some() {
5685      browsers.android = targets.android;
5686      if self.is_compatible(browsers) {
5687        return true;
5688      }
5689      browsers.android = None;
5690    }
5691    if targets.chrome.is_some() {
5692      browsers.chrome = targets.chrome;
5693      if self.is_compatible(browsers) {
5694        return true;
5695      }
5696      browsers.chrome = None;
5697    }
5698    if targets.edge.is_some() {
5699      browsers.edge = targets.edge;
5700      if self.is_compatible(browsers) {
5701        return true;
5702      }
5703      browsers.edge = None;
5704    }
5705    if targets.firefox.is_some() {
5706      browsers.firefox = targets.firefox;
5707      if self.is_compatible(browsers) {
5708        return true;
5709      }
5710      browsers.firefox = None;
5711    }
5712    if targets.ie.is_some() {
5713      browsers.ie = targets.ie;
5714      if self.is_compatible(browsers) {
5715        return true;
5716      }
5717      browsers.ie = None;
5718    }
5719    if targets.ios_saf.is_some() {
5720      browsers.ios_saf = targets.ios_saf;
5721      if self.is_compatible(browsers) {
5722        return true;
5723      }
5724      browsers.ios_saf = None;
5725    }
5726    if targets.opera.is_some() {
5727      browsers.opera = targets.opera;
5728      if self.is_compatible(browsers) {
5729        return true;
5730      }
5731      browsers.opera = None;
5732    }
5733    if targets.safari.is_some() {
5734      browsers.safari = targets.safari;
5735      if self.is_compatible(browsers) {
5736        return true;
5737      }
5738      browsers.safari = None;
5739    }
5740    if targets.samsung.is_some() {
5741      browsers.samsung = targets.samsung;
5742      if self.is_compatible(browsers) {
5743        return true;
5744      }
5745      browsers.samsung = None;
5746    }
5747
5748    false
5749  }
5750}