autopkg / hansen-m-recipes

My recipes for Autopkg - https://github.com/autopkg
27 stars 49 forks source link

Update Inkscape download URL and add support for choosing the archite… #215

Closed dcoobs closed 2 years ago

dcoobs commented 2 years ago

…cture

dcoobs commented 2 years ago

-vvv output (Intel)

dcoobs$ autopkg run -vvv Inkscape.download.recipe
Processing Inkscape.download.recipe...
{'ARCHITECTURE': 'dmg',
 'AUTOPKG_VERSION': '2.4.1',
 'CACHE_DIR': '/Users/Shared/AutoPkg/Cache',
 'FAIL_RECIPES_WITHOUT_TRUST_INFO': True,
 'MUNKI_REPO': '/Users/dcoobs/Desktop/munkirepo',
 'NAME': 'Inkscape',
 'PARENT_RECIPES': ['/Users/Shared/AutoPkg/RecipeRepos/com.github.autopkg.hansen-m-recipes/Inkscape/Inkscape.download.recipe'],
 'RECIPE_CACHE_DIR': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape',
 'RECIPE_DIR': '/Users/Shared/AutoPkg/RecipeOverrides',
 'RECIPE_OVERRIDE_DIRS': ['/Users/Shared/AutoPkg/RecipeOverrides'],
 'RECIPE_PATH': '/Users/Shared/AutoPkg/RecipeOverrides/Inkscape.download.recipe',
 'RECIPE_REPO_DIR': '/Users/Shared/AutoPkg/RecipeRepos',
 'SEARCH_PATTERN1': '(/release/([0-9]{1,3}.[0-9]{0,3}.[0-9]{0,3})/mac-os-x/)',
 'SEARCH_PATTERN2': '(/dmg/dl)',
 'SEARCH_PATTERN3': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
 'SEARCH_URL': 'https://inkscape.org',
 'verbose': 3}
URLTextSearcher
{'Input': {'re_pattern': '(/release/([0-9]{1,3}.[0-9]{0,3}.[0-9]{0,3})/mac-os-x/)',
           'result_output_var_name': 'release_page_match',
           'url': 'https://inkscape.org/release'}}
URLTextSearcher: Found matching text (release_page_match): /release/1.2/mac-os-x/
{'Output': {'release_page_match': '/release/1.2/mac-os-x/'}}
URLTextSearcher
{'Input': {'re_pattern': '(/dmg/dl)',
           'result_output_var_name': 'arch_release_page_match',
           'url': 'https://inkscape.org/release/1.2/mac-os-x/'}}
URLTextSearcher: Found matching text (arch_release_page_match): /dmg/dl
{'Output': {'arch_release_page_match': '/dmg/dl'}}
URLTextSearcher
{'Input': {'re_pattern': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
           'result_output_var_name': 'gallery_download_match',
           'url': 'https://inkscape.org/release/1.2/mac-os-x//dmg/dl'}}
URLTextSearcher: Found matching text (dmgurl): /gallery/item/33440/Inkscape-1.2.0_x86_64.dmg
URLTextSearcher: Found matching text (gallery_download_match): /gallery/item/33440/Inkscape-1.2.0_x86_64.dmg
{'Output': {'dmgurl': '/gallery/item/33440/Inkscape-1.2.0_x86_64.dmg',
            'gallery_download_match': '/gallery/item/33440/Inkscape-1.2.0_x86_64.dmg'}}
URLDownloader
{'Input': {'filename': 'Inkscape.dmg',
           'url': 'https://inkscape.org/gallery/item/33440/Inkscape-1.2.0_x86_64.dmg'}}
URLDownloader: No value supplied for prefetch_filename, setting default value of: False
URLDownloader: No value supplied for CHECK_FILESIZE_ONLY, setting default value of: False
URLDownloader: Storing new Last-Modified header: Sun, 15 May 2022 14:42:55 GMT
URLDownloader: Storing new ETag header: "6281116f-71003fe"
URLDownloader: Downloaded /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
{'Output': {'download_changed': True,
            'etag': '"6281116f-71003fe"',
            'last_modified': 'Sun, 15 May 2022 14:42:55 GMT',
            'pathname': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg',
            'url_downloader_summary_result': {'data': {'download_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg'},
                                              'summary_text': 'The following '
                                                              'new items were '
                                                              'downloaded:'}}}
Versioner
{'Input': {'input_plist_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape.app/Contents/Info.plist'}}
Versioner: No value supplied for plist_version_key, setting default value of: CFBundleShortVersionString
Versioner: No value supplied for skip_single_root_dir, setting default value of: False
Versioner: Mounted disk image /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
Versioner: Found version 1.2.0 (dc2aeda) in file /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape.app/Contents/Info.plist
{'Output': {'version': '1.2.0 (dc2aeda)'}}
CodeSignatureVerifier
{'Input': {'input_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape*.*app',
           'requirement': 'identifier "org.inkscape.Inkscape" and anchor apple '
                          'generic and certificate '
                          '1[field.1.2.840.113635.100.6.2.6] /* exists */ and '
                          'certificate leaf[field.1.2.840.113635.100.6.1.13] '
                          '/* exists */ and certificate leaf[subject.OU] = '
                          'SW3D6BB6A6'}}
CodeSignatureVerifier: Mounted disk image /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
CodeSignatureVerifier: Using path '/private/tmp/dmg.hClIwq/Inkscape.app' matched from globbed '/private/tmp/dmg.hClIwq/Inkscape*.*app'.
CodeSignatureVerifier: Verifying code signature...
CodeSignatureVerifier: Deep verification enabled...
CodeSignatureVerifier: Strict verification not defined. Using codesign defaults...
CodeSignatureVerifier: /private/tmp/dmg.hClIwq/Inkscape.app: valid on disk
CodeSignatureVerifier: /private/tmp/dmg.hClIwq/Inkscape.app: satisfies its Designated Requirement
CodeSignatureVerifier: /private/tmp/dmg.hClIwq/Inkscape.app: explicit requirement satisfied
CodeSignatureVerifier: Signature is valid
{'Output': {}}
EndOfCheckPhase
{'Input': {}}
{'Output': {}}
{'ARCHITECTURE': 'dmg',
 'AUTOPKG_VERSION': '2.4.1',
 'CACHE_DIR': '/Users/Shared/AutoPkg/Cache',
 'CHECK_FILESIZE_ONLY': False,
 'FAIL_RECIPES_WITHOUT_TRUST_INFO': True,
 'MUNKI_REPO': '/Users/dcoobs/Desktop/munkirepo',
 'NAME': 'Inkscape',
 'PARENT_RECIPES': ['/Users/Shared/AutoPkg/RecipeRepos/com.github.autopkg.hansen-m-recipes/Inkscape/Inkscape.download.recipe'],
 'RECIPE_CACHE_DIR': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape',
 'RECIPE_DIR': '/Users/Shared/AutoPkg/RecipeOverrides',
 'RECIPE_OVERRIDE_DIRS': ['/Users/Shared/AutoPkg/RecipeOverrides'],
 'RECIPE_PATH': '/Users/Shared/AutoPkg/RecipeOverrides/Inkscape.download.recipe',
 'SEARCH_PATTERN1': '(/release/([0-9]{1,3}.[0-9]{0,3}.[0-9]{0,3})/mac-os-x/)',
 'SEARCH_PATTERN2': '(/dmg/dl)',
 'SEARCH_PATTERN3': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
 'SEARCH_URL': 'https://inkscape.org',
 'arch_release_page_match': '/dmg/dl',
 'dmgurl': '/gallery/item/33440/Inkscape-1.2.0_x86_64.dmg',
 'download_changed': True,
 'etag': '"6281116f-71003fe"',
 'filename': 'Inkscape.dmg',
 'gallery_download_match': '/gallery/item/33440/Inkscape-1.2.0_x86_64.dmg',
 'input_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape*.*app',
 'input_plist_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape.app/Contents/Info.plist',
 'last_modified': 'Sun, 15 May 2022 14:42:55 GMT',
 'pathname': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg',
 'plist_version_key': 'CFBundleShortVersionString',
 'prefetch_filename': False,
 're_pattern': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
 'release_page_match': '/release/1.2/mac-os-x/',
 'requirement': 'identifier "org.inkscape.Inkscape" and anchor apple generic '
                'and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists '
                '*/ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* '
                'exists */ and certificate leaf[subject.OU] = SW3D6BB6A6',
 'result_output_var_name': 'gallery_download_match',
 'skip_single_root_dir': False,
 'url': 'https://inkscape.org/gallery/item/33440/Inkscape-1.2.0_x86_64.dmg',
 'url_downloader_summary_result': {'data': {'download_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg'},
                                   'summary_text': 'The following new items '
                                                   'were downloaded:'},
 'verbose': 3,
 'version': '1.2.0 (dc2aeda)'}
Receipt written to /Users/Shared/AutoPkg/Cache/local.download.Inkscape/receipts/Inkscape.download-receipt-20220517-174954.plist

The following new items were downloaded:
    Download Path                                                               
    -------------                                                               
    /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg  

-vvv output (arm64)

autopkg run -vvv --post "io.github.hjuutilainen.VirusTotalAnalyzer/VirusTotalAnalyzer" Inkscape.download.recipe
Processing Inkscape.download.recipe...
{'ARCHITECTURE': 'dmg-arm64',
 'AUTOPKG_VERSION': '2.4.1',
 'CACHE_DIR': '/Users/Shared/AutoPkg/Cache',
 'FAIL_RECIPES_WITHOUT_TRUST_INFO': True,
 'MUNKI_REPO': '/Users/dcoobs/Desktop/munkirepo',
 'NAME': 'Inkscape',
 'PARENT_RECIPES': ['/Users/Shared/AutoPkg/RecipeRepos/com.github.autopkg.hansen-m-recipes/Inkscape/Inkscape.download.recipe'],
 'RECIPE_CACHE_DIR': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape',
 'RECIPE_DIR': '/Users/Shared/AutoPkg/RecipeOverrides',
 'RECIPE_OVERRIDE_DIRS': ['/Users/Shared/AutoPkg/RecipeOverrides'],
 'RECIPE_PATH': '/Users/Shared/AutoPkg/RecipeOverrides/Inkscape.download.recipe',
 'RECIPE_REPO_DIR': '/Users/Shared/AutoPkg/RecipeRepos',
 'SEARCH_PATTERN1': '(/release/([0-9]{1,3}.[0-9]{0,3}.[0-9]{0,3})/mac-os-x/)',
 'SEARCH_PATTERN2': '(/dmg-arm64/dl)',
 'SEARCH_PATTERN3': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
 'SEARCH_URL': 'https://inkscape.org',
 'verbose': 3}
URLTextSearcher
{'Input': {'re_pattern': '(/release/([0-9]{1,3}.[0-9]{0,3}.[0-9]{0,3})/mac-os-x/)',
           'result_output_var_name': 'release_page_match',
           'url': 'https://inkscape.org/release'}}
URLTextSearcher: Found matching text (release_page_match): /release/1.2/mac-os-x/
{'Output': {'release_page_match': '/release/1.2/mac-os-x/'}}
URLTextSearcher
{'Input': {'re_pattern': '(/dmg-arm64/dl)',
           'result_output_var_name': 'arch_release_page_match',
           'url': 'https://inkscape.org/release/1.2/mac-os-x/'}}
URLTextSearcher: Found matching text (arch_release_page_match): /dmg-arm64/dl
{'Output': {'arch_release_page_match': '/dmg-arm64/dl'}}
URLTextSearcher
{'Input': {'re_pattern': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
           'result_output_var_name': 'gallery_download_match',
           'url': 'https://inkscape.org/release/1.2/mac-os-x//dmg-arm64/dl'}}
URLTextSearcher: Found matching text (dmgurl): /gallery/item/33441/Inkscape-1.2.0_arm64.dmg
URLTextSearcher: Found matching text (gallery_download_match): /gallery/item/33441/Inkscape-1.2.0_arm64.dmg
{'Output': {'dmgurl': '/gallery/item/33441/Inkscape-1.2.0_arm64.dmg',
            'gallery_download_match': '/gallery/item/33441/Inkscape-1.2.0_arm64.dmg'}}
URLDownloader
{'Input': {'filename': 'Inkscape.dmg',
           'url': 'https://inkscape.org/gallery/item/33441/Inkscape-1.2.0_arm64.dmg'}}
URLDownloader: No value supplied for prefetch_filename, setting default value of: False
URLDownloader: No value supplied for CHECK_FILESIZE_ONLY, setting default value of: False
URLDownloader: Storing new Last-Modified header: Sun, 15 May 2022 15:40:14 GMT
URLDownloader: Storing new ETag header: "62811ede-6d84e58"
URLDownloader: Downloaded /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
{'Output': {'download_changed': True,
            'etag': '"62811ede-6d84e58"',
            'last_modified': 'Sun, 15 May 2022 15:40:14 GMT',
            'pathname': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg',
            'url_downloader_summary_result': {'data': {'download_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg'},
                                              'summary_text': 'The following '
                                                              'new items were '
                                                              'downloaded:'}}}
Versioner
{'Input': {'input_plist_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape.app/Contents/Info.plist'}}
Versioner: No value supplied for plist_version_key, setting default value of: CFBundleShortVersionString
Versioner: No value supplied for skip_single_root_dir, setting default value of: False
Versioner: Mounted disk image /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
Versioner: Found version 1.2.0 (dc2aeda) in file /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape.app/Contents/Info.plist
{'Output': {'version': '1.2.0 (dc2aeda)'}}
CodeSignatureVerifier
{'Input': {'input_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape*.*app',
           'requirement': 'identifier "org.inkscape.Inkscape" and anchor apple '
                          'generic and certificate '
                          '1[field.1.2.840.113635.100.6.2.6] /* exists */ and '
                          'certificate leaf[field.1.2.840.113635.100.6.1.13] '
                          '/* exists */ and certificate leaf[subject.OU] = '
                          'SW3D6BB6A6'}}
CodeSignatureVerifier: Mounted disk image /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
CodeSignatureVerifier: Using path '/private/tmp/dmg.aHd8Jl/Inkscape.app' matched from globbed '/private/tmp/dmg.aHd8Jl/Inkscape*.*app'.
CodeSignatureVerifier: Verifying code signature...
CodeSignatureVerifier: Deep verification enabled...
CodeSignatureVerifier: Strict verification not defined. Using codesign defaults...
CodeSignatureVerifier: /private/tmp/dmg.aHd8Jl/Inkscape.app: valid on disk
CodeSignatureVerifier: /private/tmp/dmg.aHd8Jl/Inkscape.app: satisfies its Designated Requirement
CodeSignatureVerifier: /private/tmp/dmg.aHd8Jl/Inkscape.app: explicit requirement satisfied
CodeSignatureVerifier: Signature is valid
{'Output': {}}
EndOfCheckPhase
{'Input': {}}
{'Output': {}}
io.github.hjuutilainen.VirusTotalAnalyzer/VirusTotalAnalyzer
{'Input': {'pathname': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg'}}
VirusTotalAnalyzer: No value supplied for CURL_PATH, setting default value of: /usr/bin/curl
VirusTotalAnalyzer: Calculating checksum for /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg
VirusTotalAnalyzer: Requesting report...
VirusTotalAnalyzer: Response code: 1
VirusTotalAnalyzer: Message: Scan finished, information embedded
VirusTotalAnalyzer: Scan ID: 9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372-1652783336
VirusTotalAnalyzer: Detection ratio: 0/46
VirusTotalAnalyzer: Scan date: 2022-05-17 10:28:56
VirusTotalAnalyzer: Permalink: https://www.virustotal.com/gui/file/9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372/detection/f-9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372-1652783336
{'Output': {'virus_total_analyzer_summary_result': {'data': {'name': 'Inkscape.dmg',
                                                             'permalink': 'https://www.virustotal.com/gui/file/9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372/detection/f-9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372-1652783336',
                                                             'ratio': '0/46'},
                                                    'report_fields': ['name',
                                                                      'ratio',
                                                                      'permalink'],
                                                    'summary_text': 'The '
                                                                    'following '
                                                                    'items '
                                                                    'were '
                                                                    'queried '
                                                                    'from the '
                                                                    'VirusTotal '
                                                                    'database:'}}}
{'ARCHITECTURE': 'dmg-arm64',
 'AUTOPKG_VERSION': '2.4.1',
 'CACHE_DIR': '/Users/Shared/AutoPkg/Cache',
 'CHECK_FILESIZE_ONLY': False,
 'CURL_PATH': '/usr/bin/curl',
 'FAIL_RECIPES_WITHOUT_TRUST_INFO': True,
 'MUNKI_REPO': '/Users/dcoobs/Desktop/munkirepo',
 'NAME': 'Inkscape',
 'PARENT_RECIPES': ['/Users/Shared/AutoPkg/RecipeRepos/com.github.autopkg.hansen-m-recipes/Inkscape/Inkscape.download.recipe'],
 'RECIPE_CACHE_DIR': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape',
 'RECIPE_DIR': '/Users/Shared/AutoPkg/RecipeOverrides',
 'RECIPE_OVERRIDE_DIRS': ['/Users/Shared/AutoPkg/RecipeOverrides'],
 'RECIPE_PATH': '/Users/Shared/AutoPkg/RecipeOverrides/Inkscape.download.recipe',
 'RECIPE_REPO_DIR': '/Users/Shared/AutoPkg/RecipeRepos',
 'SEARCH_PATTERN1': '(/release/([0-9]{1,3}.[0-9]{0,3}.[0-9]{0,3})/mac-os-x/)',
 'SEARCH_PATTERN2': '(/dmg-arm64/dl)',
 'SEARCH_PATTERN3': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
 'SEARCH_URL': 'https://inkscape.org',
 'arch_release_page_match': '/dmg-arm64/dl',
 'dmgurl': '/gallery/item/33441/Inkscape-1.2.0_arm64.dmg',
 'download_changed': True,
 'etag': '"62811ede-6d84e58"',
 'filename': 'Inkscape.dmg',
 'gallery_download_match': '/gallery/item/33441/Inkscape-1.2.0_arm64.dmg',
 'input_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape*.*app',
 'input_plist_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg/Inkscape.app/Contents/Info.plist',
 'last_modified': 'Sun, 15 May 2022 15:40:14 GMT',
 'pathname': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg',
 'plist_version_key': 'CFBundleShortVersionString',
 'prefetch_filename': False,
 're_pattern': '(?P<dmgurl>\\/gallery\\/.*Inkscape.*dmg)',
 'release_page_match': '/release/1.2/mac-os-x/',
 'requirement': 'identifier "org.inkscape.Inkscape" and anchor apple generic '
                'and certificate 1[field.1.2.840.113635.100.6.2.6] /* exists '
                '*/ and certificate leaf[field.1.2.840.113635.100.6.1.13] /* '
                'exists */ and certificate leaf[subject.OU] = SW3D6BB6A6',
 'result_output_var_name': 'gallery_download_match',
 'skip_single_root_dir': False,
 'url': 'https://inkscape.org/gallery/item/33441/Inkscape-1.2.0_arm64.dmg',
 'url_downloader_summary_result': {'data': {'download_path': '/Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg'},
                                   'summary_text': 'The following new items '
                                                   'were downloaded:'},
 'verbose': 3,
 'version': '1.2.0 (dc2aeda)',
 'virus_total_analyzer_summary_result': {'data': {'name': 'Inkscape.dmg',
                                                  'permalink': 'https://www.virustotal.com/gui/file/9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372/detection/f-9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372-1652783336',
                                                  'ratio': '0/46'},
                                         'report_fields': ['name',
                                                           'ratio',
                                                           'permalink'],
                                         'summary_text': 'The following items '
                                                         'were queried from '
                                                         'the VirusTotal '
                                                         'database:'}}
Receipt written to /Users/Shared/AutoPkg/Cache/local.download.Inkscape/receipts/Inkscape.download-receipt-20220517-180205.plist

The following new items were downloaded:
    Download Path                                                               
    -------------                                                               
    /Users/Shared/AutoPkg/Cache/local.download.Inkscape/downloads/Inkscape.dmg  

The following items were queried from the VirusTotal database:
    Name          Ratio  Permalink                                                                                                                                                                                     
    ----          -----  ---------                                                                                                                                                                                     
    Inkscape.dmg  0/46   https://www.virustotal.com/gui/file/9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372/detection/f-9a3fce6630b7268e1548f7f1d96dc7cf0f0614284895d6e09eeba503b804d372-1652783336
rustymyers commented 2 years ago

Thanks!