// WARNING: Please don't edit this file. It was generated by C++/WinRT v2.0.230706.1

#pragma once
#ifndef WINRT_Windows_Phone_PersonalInformation_H
#define WINRT_Windows_Phone_PersonalInformation_H
#include "winrt/base.h"
static_assert(winrt::check_version(CPPWINRT_VERSION, "2.0.230706.1"), "Mismatched C++/WinRT headers.");
#define CPPWINRT_VERSION "2.0.230706.1"
#include "winrt/impl/Windows.Foundation.2.h"
#include "winrt/impl/Windows.Foundation.Collections.2.h"
#include "winrt/impl/Windows.Storage.Streams.2.h"
#include "winrt/impl/Windows.Phone.PersonalInformation.2.h"
namespace winrt::impl
{
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Country() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_Country(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Country(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_Country(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Locality() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_Locality(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Locality(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_Locality(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Region() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_Region(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::Region(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_Region(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::PostalCode() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_PostalCode(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::PostalCode(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_PostalCode(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::StreetAddress() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->get_StreetAddress(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactAddress<D>::StreetAddress(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactAddress)->put_StreetAddress(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::ChangeType() const
    {
        winrt::Windows::Phone::PersonalInformation::ContactChangeType value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_ChangeType(reinterpret_cast<int32_t*>(&value)));
        return value;
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::RevisionNumber() const
    {
        uint64_t value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_RevisionNumber(&value));
        return value;
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::Id() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_Id(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactChangeRecord<D>::RemoteId() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactChangeRecord)->get_RemoteId(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::DisplayName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_DisplayName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::DisplayName(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_DisplayName(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::FamilyName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_FamilyName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::FamilyName(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_FamilyName(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GivenName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_GivenName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GivenName(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_GivenName(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificPrefix() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_HonorificPrefix(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificPrefix(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_HonorificPrefix(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificSuffix() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_HonorificSuffix(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::HonorificSuffix(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->put_HonorificSuffix(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GetDisplayPictureAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->GetDisplayPictureAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::SetDisplayPictureAsync(winrt::Windows::Storage::Streams::IInputStream const& stream) const
    {
        void* action{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->SetDisplayPictureAsync(*(void**)(&stream), &action));
        return winrt::Windows::Foundation::IAsyncAction{ action, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::DisplayPicture() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->get_DisplayPicture(&value));
        return winrt::Windows::Storage::Streams::IRandomAccessStreamReference{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::GetPropertiesAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->GetPropertiesAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::ToVcardAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->ToVcardAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation<D>::ToVcardAsync(winrt::Windows::Phone::PersonalInformation::VCardFormat const& format) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation)->ToVcardWithOptionsAsync(static_cast<int32_t>(format), &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation2<D>::DisplayPictureDate() const
    {
        winrt::Windows::Foundation::DateTime returnValue{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation2)->get_DisplayPictureDate(put_abi(returnValue)));
        return returnValue;
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformation2<D>::DisplayPictureDate(winrt::Windows::Foundation::DateTime const& returnValue) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformation2)->put_DisplayPictureDate(impl::bind_in(returnValue)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactInformationStatics<D>::ParseVcardAsync(winrt::Windows::Storage::Streams::IInputStream const& vcard) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactInformationStatics)->ParseVcardAsync(*(void**)(&vcard), &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactInformation>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryOptions<D>::DesiredFields() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryOptions)->get_DesiredFields(&value));
        return winrt::Windows::Foundation::Collections::IVector<hstring>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryOptions<D>::OrderBy() const
    {
        winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryOptions)->get_OrderBy(reinterpret_cast<int32_t*>(&value)));
        return value;
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryOptions<D>::OrderBy(winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryOptions)->put_OrderBy(static_cast<int32_t>(value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetContactCountAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetContactCountAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<uint32_t>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetContactsAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetContactsAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetContactsAsync(uint32_t startIndex, uint32_t maxNumberOfItems) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetContactsAsyncInRange(startIndex, maxNumberOfItems, &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactQueryResult<D>::GetCurrentQueryOptions() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactQueryResult)->GetCurrentQueryOptions(&value));
        return winrt::Windows::Phone::PersonalInformation::ContactQueryOptions{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::FindContactByRemoteIdAsync(param::hstring const& id) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->FindContactByRemoteIdAsync(*(void**)(&id), &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::FindContactByIdAsync(param::hstring const& id) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->FindContactByIdAsync(*(void**)(&id), &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::DeleteContactAsync(param::hstring const& id) const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->DeleteContactAsync(*(void**)(&id), &result));
        return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::CreateContactQuery() const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->CreateContactQueryDefault(&result));
        return winrt::Windows::Phone::PersonalInformation::ContactQueryResult{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::CreateContactQuery(winrt::Windows::Phone::PersonalInformation::ContactQueryOptions const& options) const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->CreateContactQueryWithOptions(*(void**)(&options), &result));
        return winrt::Windows::Phone::PersonalInformation::ContactQueryResult{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::DeleteAsync() const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->DeleteAsync(&result));
        return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::RevisionNumber() const
    {
        uint64_t value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->get_RevisionNumber(&value));
        return value;
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::GetChangesAsync(uint64_t baseRevisionNumber) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->GetChangesAsync(baseRevisionNumber, &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::ContactChangeRecord>>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::LoadExtendedPropertiesAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->LoadExtendedPropertiesAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore<D>::SaveExtendedPropertiesAsync(param::async_map_view<hstring, winrt::Windows::Foundation::IInspectable> const& data) const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore)->SaveExtendedPropertiesAsync(*(void**)(&data), &result));
        return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStore2<D>::CreateMeContactAsync(param::hstring const& id) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStore2)->CreateMeContactAsync(*(void**)(&id), &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStoreStatics<D>::CreateOrOpenAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStoreStatics)->CreateOrOpenAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IContactStoreStatics<D>::CreateOrOpenAsync(winrt::Windows::Phone::PersonalInformation::ContactStoreSystemAccessMode const& access, winrt::Windows::Phone::PersonalInformation::ContactStoreApplicationAccessMode const& sharing) const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IContactStoreStatics)->CreateOrOpenWithOptionsAsync(static_cast<int32_t>(access), static_cast<int32_t>(sharing), &operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::DisplayName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_DisplayName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::FamilyName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_FamilyName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::GivenName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_GivenName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::HonorificPrefix() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_HonorificPrefix(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::HonorificSuffix() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_HonorificSuffix(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AdditionalName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AdditionalName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Address() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Address(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::OtherAddress() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_OtherAddress(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Email() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Email(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkAddress() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkAddress(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkTelephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkTelephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::JobTitle() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_JobTitle(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Birthdate() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Birthdate(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Anniversary() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Anniversary(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Telephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Telephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::MobileTelephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_MobileTelephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Url() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Url(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Notes() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Notes(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkFax() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkFax(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Children() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Children(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::SignificantOther() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_SignificantOther(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::CompanyName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_CompanyName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::CompanyTelephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_CompanyTelephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::HomeFax() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_HomeFax(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AlternateTelephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AlternateTelephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Manager() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Manager(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::Nickname() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_Nickname(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::OfficeLocation() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_OfficeLocation(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::WorkEmail() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_WorkEmail(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::YomiGivenName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_YomiGivenName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::YomiFamilyName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_YomiFamilyName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::YomiCompanyName() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_YomiCompanyName(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::OtherEmail() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_OtherEmail(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AlternateMobileTelephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AlternateMobileTelephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IKnownContactPropertiesStatics<D>::AlternateWorkTelephone() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics)->get_AlternateWorkTelephone(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::Store() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->get_Store(&value));
        return winrt::Windows::Phone::PersonalInformation::ContactStore{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::Id() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->get_Id(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::RemoteId() const
    {
        void* value{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->get_RemoteId(&value));
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::RemoteId(param::hstring const& value) const
    {
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->put_RemoteId(*(void**)(&value)));
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::GetExtendedPropertiesAsync() const
    {
        void* operation{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->GetExtendedPropertiesAsync(&operation));
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::SaveAsync() const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->SaveAsync(&result));
        return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContact<D>::ReplaceExistingContactAsync(param::hstring const& id) const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContact)->ReplaceExistingContactAsync(*(void**)(&id), &result));
        return winrt::Windows::Foundation::IAsyncAction{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContactFactory<D>::CreateStoredContact(winrt::Windows::Phone::PersonalInformation::ContactStore const& store) const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContactFactory)->CreateStoredContact(*(void**)(&store), &result));
        return winrt::Windows::Phone::PersonalInformation::StoredContact{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Phone_PersonalInformation_IStoredContactFactory<D>::CreateStoredContactFromInformation(winrt::Windows::Phone::PersonalInformation::ContactStore const& store, winrt::Windows::Phone::PersonalInformation::ContactInformation const& contact) const
    {
        void* result{};
        check_hresult(WINRT_IMPL_SHIM(winrt::Windows::Phone::PersonalInformation::IStoredContactFactory)->CreateStoredContactFromInformation(*(void**)(&store), *(void**)(&contact), &result));
        return winrt::Windows::Phone::PersonalInformation::StoredContact{ result, take_ownership_from_abi };
    }
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactAddress> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactAddress>
    {
        int32_t __stdcall get_Country(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Country());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Country(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Country(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Locality(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Locality());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Locality(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Locality(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Region(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Region());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_Region(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Region(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_PostalCode(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().PostalCode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_PostalCode(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().PostalCode(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_StreetAddress(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().StreetAddress());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_StreetAddress(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().StreetAddress(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactChangeRecord> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactChangeRecord>
    {
        int32_t __stdcall get_ChangeType(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactChangeType>(this->shim().ChangeType());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_RevisionNumber(uint64_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<uint64_t>(this->shim().RevisionNumber());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Id(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Id());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_RemoteId(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().RemoteId());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactInformation> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactInformation>
    {
        int32_t __stdcall get_DisplayName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().DisplayName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_DisplayName(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DisplayName(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_FamilyName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().FamilyName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_FamilyName(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().FamilyName(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_GivenName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().GivenName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_GivenName(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().GivenName(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_HonorificPrefix(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().HonorificPrefix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_HonorificPrefix(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().HonorificPrefix(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_HonorificSuffix(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().HonorificSuffix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_HonorificSuffix(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().HonorificSuffix(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetDisplayPictureAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>>(this->shim().GetDisplayPictureAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall SetDisplayPictureAsync(void* stream, void** action) noexcept final try
        {
            clear_abi(action);
            typename D::abi_guard guard(this->shim());
            *action = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().SetDisplayPictureAsync(*reinterpret_cast<winrt::Windows::Storage::Streams::IInputStream const*>(&stream)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_DisplayPicture(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Storage::Streams::IRandomAccessStreamReference>(this->shim().DisplayPicture());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetPropertiesAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>>(this->shim().GetPropertiesAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall ToVcardAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>>(this->shim().ToVcardAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall ToVcardWithOptionsAsync(int32_t format, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Streams::IRandomAccessStream>>(this->shim().ToVcardAsync(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::VCardFormat const*>(&format)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactInformation2> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactInformation2>
    {
        int32_t __stdcall get_DisplayPictureDate(int64_t* returnValue) noexcept final try
        {
            zero_abi<winrt::Windows::Foundation::DateTime>(returnValue);
            typename D::abi_guard guard(this->shim());
            *returnValue = detach_from<winrt::Windows::Foundation::DateTime>(this->shim().DisplayPictureDate());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_DisplayPictureDate(int64_t returnValue) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DisplayPictureDate(*reinterpret_cast<winrt::Windows::Foundation::DateTime const*>(&returnValue));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactInformationStatics> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactInformationStatics>
    {
        int32_t __stdcall ParseVcardAsync(void* vcard, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactInformation>>(this->shim().ParseVcardAsync(*reinterpret_cast<winrt::Windows::Storage::Streams::IInputStream const*>(&vcard)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactQueryOptions> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactQueryOptions>
    {
        int32_t __stdcall get_DesiredFields(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IVector<hstring>>(this->shim().DesiredFields());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_OrderBy(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering>(this->shim().OrderBy());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_OrderBy(int32_t value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().OrderBy(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactQueryResultOrdering const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactQueryResult> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactQueryResult>
    {
        int32_t __stdcall GetContactCountAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<uint32_t>>(this->shim().GetContactCountAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetContactsAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>>(this->shim().GetContactsAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetContactsAsyncInRange(uint32_t startIndex, uint32_t maxNumberOfItems, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::StoredContact>>>(this->shim().GetContactsAsync(startIndex, maxNumberOfItems));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetCurrentQueryOptions(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryOptions>(this->shim().GetCurrentQueryOptions());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactStore> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactStore>
    {
        int32_t __stdcall FindContactByRemoteIdAsync(void* id, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>>(this->shim().FindContactByRemoteIdAsync(*reinterpret_cast<hstring const*>(&id)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindContactByIdAsync(void* id, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>>(this->shim().FindContactByIdAsync(*reinterpret_cast<hstring const*>(&id)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall DeleteContactAsync(void* id, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().DeleteContactAsync(*reinterpret_cast<hstring const*>(&id)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateContactQueryDefault(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryResult>(this->shim().CreateContactQuery());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateContactQueryWithOptions(void* options, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Phone::PersonalInformation::ContactQueryResult>(this->shim().CreateContactQuery(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactQueryOptions const*>(&options)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall DeleteAsync(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().DeleteAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_RevisionNumber(uint64_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<uint64_t>(this->shim().RevisionNumber());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetChangesAsync(uint64_t baseRevisionNumber, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Phone::PersonalInformation::ContactChangeRecord>>>(this->shim().GetChangesAsync(baseRevisionNumber));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall LoadExtendedPropertiesAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>>(this->shim().LoadExtendedPropertiesAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall SaveExtendedPropertiesAsync(void* data, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().SaveExtendedPropertiesAsync(*reinterpret_cast<winrt::Windows::Foundation::Collections::IMapView<hstring, winrt::Windows::Foundation::IInspectable> const*>(&data)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactStore2> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactStore2>
    {
        int32_t __stdcall CreateMeContactAsync(void* id, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::StoredContact>>(this->shim().CreateMeContactAsync(*reinterpret_cast<hstring const*>(&id)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IContactStoreStatics> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IContactStoreStatics>
    {
        int32_t __stdcall CreateOrOpenAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>>(this->shim().CreateOrOpenAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateOrOpenWithOptionsAsync(int32_t access, int32_t sharing, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>>(this->shim().CreateOrOpenAsync(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStoreSystemAccessMode const*>(&access), *reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStoreApplicationAccessMode const*>(&sharing)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics>
    {
        int32_t __stdcall get_DisplayName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().DisplayName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_FamilyName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().FamilyName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_GivenName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().GivenName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_HonorificPrefix(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().HonorificPrefix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_HonorificSuffix(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().HonorificSuffix());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_AdditionalName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().AdditionalName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Address(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Address());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_OtherAddress(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().OtherAddress());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Email(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Email());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_WorkAddress(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().WorkAddress());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_WorkTelephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().WorkTelephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_JobTitle(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().JobTitle());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Birthdate(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Birthdate());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Anniversary(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Anniversary());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Telephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Telephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_MobileTelephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().MobileTelephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Url(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Url());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Notes(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Notes());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_WorkFax(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().WorkFax());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Children(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Children());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_SignificantOther(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().SignificantOther());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_CompanyName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().CompanyName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_CompanyTelephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().CompanyTelephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_HomeFax(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().HomeFax());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_AlternateTelephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().AlternateTelephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Manager(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Manager());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Nickname(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Nickname());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_OfficeLocation(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().OfficeLocation());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_WorkEmail(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().WorkEmail());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_YomiGivenName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().YomiGivenName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_YomiFamilyName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().YomiFamilyName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_YomiCompanyName(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().YomiCompanyName());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_OtherEmail(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().OtherEmail());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_AlternateMobileTelephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().AlternateMobileTelephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_AlternateWorkTelephone(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().AlternateWorkTelephone());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IStoredContact> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IStoredContact>
    {
        int32_t __stdcall get_Store(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Phone::PersonalInformation::ContactStore>(this->shim().Store());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Id(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Id());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_RemoteId(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().RemoteId());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_RemoteId(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().RemoteId(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetExtendedPropertiesAsync(void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Foundation::Collections::IMap<hstring, winrt::Windows::Foundation::IInspectable>>>(this->shim().GetExtendedPropertiesAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall SaveAsync(void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().SaveAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall ReplaceExistingContactAsync(void* id, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().ReplaceExistingContactAsync(*reinterpret_cast<hstring const*>(&id)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Phone::PersonalInformation::IStoredContactFactory> : produce_base<D, winrt::Windows::Phone::PersonalInformation::IStoredContactFactory>
    {
        int32_t __stdcall CreateStoredContact(void* store, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Phone::PersonalInformation::StoredContact>(this->shim().CreateStoredContact(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStore const*>(&store)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateStoredContactFromInformation(void* store, void* contact, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Phone::PersonalInformation::StoredContact>(this->shim().CreateStoredContactFromInformation(*reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactStore const*>(&store), *reinterpret_cast<winrt::Windows::Phone::PersonalInformation::ContactInformation const*>(&contact)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
}
WINRT_EXPORT namespace winrt::Windows::Phone::PersonalInformation
{
    inline ContactAddress::ContactAddress() :
        ContactAddress(impl::call_factory_cast<ContactAddress(*)(winrt::Windows::Foundation::IActivationFactory const&), ContactAddress>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<ContactAddress>(); }))
    {
    }
    inline ContactInformation::ContactInformation() :
        ContactInformation(impl::call_factory_cast<ContactInformation(*)(winrt::Windows::Foundation::IActivationFactory const&), ContactInformation>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<ContactInformation>(); }))
    {
    }
    inline auto ContactInformation::ParseVcardAsync(winrt::Windows::Storage::Streams::IInputStream const& vcard)
    {
        return impl::call_factory<ContactInformation, IContactInformationStatics>([&](IContactInformationStatics const& f) { return f.ParseVcardAsync(vcard); });
    }
    inline ContactQueryOptions::ContactQueryOptions() :
        ContactQueryOptions(impl::call_factory_cast<ContactQueryOptions(*)(winrt::Windows::Foundation::IActivationFactory const&), ContactQueryOptions>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<ContactQueryOptions>(); }))
    {
    }
    inline auto ContactStore::CreateOrOpenAsync()
    {
        return impl::call_factory_cast<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Phone::PersonalInformation::ContactStore>(*)(IContactStoreStatics const&), ContactStore, IContactStoreStatics>([](IContactStoreStatics const& f) { return f.CreateOrOpenAsync(); });
    }
    inline auto ContactStore::CreateOrOpenAsync(winrt::Windows::Phone::PersonalInformation::ContactStoreSystemAccessMode const& access, winrt::Windows::Phone::PersonalInformation::ContactStoreApplicationAccessMode const& sharing)
    {
        return impl::call_factory<ContactStore, IContactStoreStatics>([&](IContactStoreStatics const& f) { return f.CreateOrOpenAsync(access, sharing); });
    }
    inline auto KnownContactProperties::DisplayName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.DisplayName(); });
    }
    inline auto KnownContactProperties::FamilyName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.FamilyName(); });
    }
    inline auto KnownContactProperties::GivenName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.GivenName(); });
    }
    inline auto KnownContactProperties::HonorificPrefix()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.HonorificPrefix(); });
    }
    inline auto KnownContactProperties::HonorificSuffix()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.HonorificSuffix(); });
    }
    inline auto KnownContactProperties::AdditionalName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AdditionalName(); });
    }
    inline auto KnownContactProperties::Address()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Address(); });
    }
    inline auto KnownContactProperties::OtherAddress()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.OtherAddress(); });
    }
    inline auto KnownContactProperties::Email()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Email(); });
    }
    inline auto KnownContactProperties::WorkAddress()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkAddress(); });
    }
    inline auto KnownContactProperties::WorkTelephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkTelephone(); });
    }
    inline auto KnownContactProperties::JobTitle()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.JobTitle(); });
    }
    inline auto KnownContactProperties::Birthdate()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Birthdate(); });
    }
    inline auto KnownContactProperties::Anniversary()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Anniversary(); });
    }
    inline auto KnownContactProperties::Telephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Telephone(); });
    }
    inline auto KnownContactProperties::MobileTelephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.MobileTelephone(); });
    }
    inline auto KnownContactProperties::Url()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Url(); });
    }
    inline auto KnownContactProperties::Notes()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Notes(); });
    }
    inline auto KnownContactProperties::WorkFax()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkFax(); });
    }
    inline auto KnownContactProperties::Children()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Children(); });
    }
    inline auto KnownContactProperties::SignificantOther()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.SignificantOther(); });
    }
    inline auto KnownContactProperties::CompanyName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.CompanyName(); });
    }
    inline auto KnownContactProperties::CompanyTelephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.CompanyTelephone(); });
    }
    inline auto KnownContactProperties::HomeFax()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.HomeFax(); });
    }
    inline auto KnownContactProperties::AlternateTelephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AlternateTelephone(); });
    }
    inline auto KnownContactProperties::Manager()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Manager(); });
    }
    inline auto KnownContactProperties::Nickname()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.Nickname(); });
    }
    inline auto KnownContactProperties::OfficeLocation()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.OfficeLocation(); });
    }
    inline auto KnownContactProperties::WorkEmail()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.WorkEmail(); });
    }
    inline auto KnownContactProperties::YomiGivenName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.YomiGivenName(); });
    }
    inline auto KnownContactProperties::YomiFamilyName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.YomiFamilyName(); });
    }
    inline auto KnownContactProperties::YomiCompanyName()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.YomiCompanyName(); });
    }
    inline auto KnownContactProperties::OtherEmail()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.OtherEmail(); });
    }
    inline auto KnownContactProperties::AlternateMobileTelephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AlternateMobileTelephone(); });
    }
    inline auto KnownContactProperties::AlternateWorkTelephone()
    {
        return impl::call_factory_cast<hstring(*)(IKnownContactPropertiesStatics const&), KnownContactProperties, IKnownContactPropertiesStatics>([](IKnownContactPropertiesStatics const& f) { return f.AlternateWorkTelephone(); });
    }
    inline StoredContact::StoredContact(winrt::Windows::Phone::PersonalInformation::ContactStore const& store) :
        StoredContact(impl::call_factory<StoredContact, IStoredContactFactory>([&](IStoredContactFactory const& f) { return f.CreateStoredContact(store); }))
    {
    }
    inline StoredContact::StoredContact(winrt::Windows::Phone::PersonalInformation::ContactStore const& store, winrt::Windows::Phone::PersonalInformation::ContactInformation const& contact) :
        StoredContact(impl::call_factory<StoredContact, IStoredContactFactory>([&](IStoredContactFactory const& f) { return f.CreateStoredContactFromInformation(store, contact); }))
    {
    }
}
namespace std
{
#ifndef WINRT_LEAN_AND_MEAN
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactAddress> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactChangeRecord> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactInformation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactInformation2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactInformationStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactQueryOptions> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactQueryResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactStore> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactStore2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IContactStoreStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IKnownContactPropertiesStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IStoredContact> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::IStoredContactFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactAddress> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactChangeRecord> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactInformation> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactQueryOptions> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactQueryResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::ContactStore> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::KnownContactProperties> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Phone::PersonalInformation::StoredContact> : winrt::impl::hash_base {};
#endif
#ifdef __cpp_lib_format
#endif
}
#endif
