Add NET 5 and NET Core 3.1 support.#16
Add NET 5 and NET Core 3.1 support.#16augustoproiete merged 2 commits intoookii-dialogs:masterfrom VPKSoft:master
Conversation
augustoproiete
left a comment
There was a problem hiding this comment.
@VPKSoft Thanks a lot for submitting this! Overall looks good. I've added some minor comments if you have a chance to go through, otherwise I can do after merging.
I should be able to do a proper review/test over the weekend and hopefully get this merged asap.
One important question: Are you able to edit the forms using the Visual Studio designer and .resx files normally in VS2019 after this PR?
What happens if you make a change to a form? Does the code-behind get generated correctly?
sample/Ookii.Dialogs.WinForms.Sample/Ookii.Dialogs.WinForms.Sample.csproj
Outdated
Show resolved
Hide resolved
sample/Ookii.Dialogs.WinForms.Sample/Ookii.Dialogs.WinForms.Sample.csproj
Show resolved
Hide resolved
sample/Ookii.Dialogs.WinForms.Sample/Ookii.Dialogs.WinForms.Sample.csproj
Outdated
Show resolved
Hide resolved
|
Awesome! Thanks again 🎉 |
|
Thanks @VPKSoft I was able to do some tests over the weekend, and looks good. There's a couple of things that need to be ironed out before a release, but I'm happy to merge it as-is for now and continue improving in future commits/PRs. As you pointed out, the build script is now broken because it tries to update the There's also a number of warnings that need to be resolved (most of them cause by .NET 5): Build warnings (click to expand)
"C:\ookii-dialogs-winforms\Ookii.Dialogs.WinForms.sln" (Rebuild target) (1) ->
"C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj" (Rebuild target) (2) ->
"C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj" (Build target) (2:7) ->
(CoreCompile target) ->
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(25,6): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(25,25): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(94,10): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(94,30): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(94,63): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(33,10): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(33,30): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(33,63): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(41,6): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(41,25): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(61,6): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\SafeHandles.cs(61,25): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\ExtendedForm.cs(285,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\ExtendedForm.cs(285,57): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\ExtendedForm.cs(285,120): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(58,9): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(58,29): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(58,62): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(228,37): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(228,57): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(228,90): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(397,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(397,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(397,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(438,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(438,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(438,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(512,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(512,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(512,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(34,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(34,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(34,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(44,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(44,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(44,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(54,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(54,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(54,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(65,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(65,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(65,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(506,10): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(506,30): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(506,63): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(76,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(76,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(76,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(87,10): warning SYSLIB0003: 'SecurityPermissionAttribute' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(87,29): warning SYSLIB0003: 'SecurityAction' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialException.cs(87,64): warning SYSLIB0003: 'SecurityPermissionFlag' is obsolete: 'Code Access Security is not supported or honored by the runtime.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(510,10): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(510,30): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(510,63): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(756,37): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(756,57): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\NativeMethods.cs(756,90): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\CredentialDialog.cs(468,34): warning CS8073: The result of the expression is always 'false' since a value of type 'IntPtr' is never equal to 'null' of type 'IntPtr?' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]
C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\ProgressDialog.cs(564,31): warning CS8073: The result of the expression is always 'false' since a value of type 'IntPtr' is never equal to 'null' of type 'IntPtr?' [C:\ookii-dialogs-winforms\src\Ookii.Dialogs.WinForms\Ookii.Dialogs.WinForms.csproj]If you fancy sending PRs to fix the above feel free, if not I'll get to them at some point in the next week or two, no worries. |
|
@VPKSoft your changes have been merged, thanks for your contribution 👍 |
|
I might create another PR if I have the time. I'm currently converting my own packages and probably need to publish few NuGets from repositories created by others, which are not maintained anymore. Just prefix the package with unofficial. 🙂 But great that this is progressing - the WinForms basic folder browser dialog just is quite unusable 👍 |


The demo seems to work targeting with NET 5. Some of the fancy versioning and build scripts may brake with the assembly info modifications.
The project format is changed to the new SDK format:
Just uncomment the other target and comment the other. The NuGet is targeting all the three different ones. 🙂